From 1a2805c1c799c1f3f82db38adb44b4ba3bd75195 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Tue, 1 Feb 2022 21:28:12 -0800 Subject: [PATCH 001/253] rename IDOM_WED_MODULES_DIR to IDOM_WEB_MODULES_DIR --- src/idom/_option.py | 20 ++++++++++++++++++++ src/idom/config.py | 13 +++++++++++-- src/idom/server/flask.py | 4 ++-- src/idom/server/sanic.py | 4 ++-- src/idom/server/starlette.py | 4 ++-- src/idom/server/tornado.py | 4 ++-- src/idom/testing.py | 4 ++-- src/idom/web/module.py | 4 ++-- tests/test_html.py | 2 +- 9 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/idom/_option.py b/src/idom/_option.py index 8bb7712b8..6868a7cc6 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -1,6 +1,7 @@ from __future__ import annotations import os +import warnings from logging import getLogger from typing import Any, Callable, Generic, TypeVar, cast @@ -89,3 +90,22 @@ def unset(self) -> None: def __repr__(self) -> str: return f"Option({self._name}={self.current!r})" + + +class DeprecatedOption(Option[_O]): # pragma: no cover + def __init__(self, new_name: str | None, *args: Any, **kwargs: Any) -> None: + self.new_name = new_name + with warnings.catch_warnings(): + warnings.simplefilter("ignore", DeprecationWarning) + super().__init__(*args, **kwargs) + + @property + def current(self) -> _O: + if self.new_name is None: + warnings.warn(f"{self.name!r} has been removed", DeprecationWarning) + else: + warnings.warn( + f"{self.name!r} has been renamed to {self.new_name!r}", + DeprecationWarning, + ) + return super().current diff --git a/src/idom/config.py b/src/idom/config.py index c4d73ff96..11a493713 100644 --- a/src/idom/config.py +++ b/src/idom/config.py @@ -6,6 +6,7 @@ from pathlib import Path from tempfile import TemporaryDirectory +from ._option import DeprecatedOption as _DeprecatedOption from ._option import Option as _Option @@ -43,8 +44,16 @@ # Because these web modules will be linked dynamically at runtime this can be temporary _DEFAULT_WEB_MODULES_DIR = TemporaryDirectory() -IDOM_WED_MODULES_DIR = _Option( - "IDOM_WED_MODULES_DIR", +IDOM_WED_MODULES_DIR: _Option[Path] = _DeprecatedOption( + new_name="IDOM_WEB_MODULES_DIR", + name="IDOM_WED_MODULES_DIR", + default=Path(_DEFAULT_WEB_MODULES_DIR.name), + validator=Path, +) +"""This has been renamed to :data:`IDOM_WEB_MODULES_DIR`""" + +IDOM_WEB_MODULES_DIR = _Option( + "IDOM_WEB_MODULES_DIR", default=Path(_DEFAULT_WEB_MODULES_DIR.name), validator=Path, ) diff --git a/src/idom/server/flask.py b/src/idom/server/flask.py index 895735c2a..87ab88c6c 100644 --- a/src/idom/server/flask.py +++ b/src/idom/server/flask.py @@ -19,7 +19,7 @@ from typing_extensions import TypedDict import idom -from idom.config import IDOM_DEBUG_MODE, IDOM_WED_MODULES_DIR +from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR from idom.core.dispatcher import dispatch_single_view from idom.core.layout import LayoutEvent, LayoutUpdate from idom.core.proto import ComponentConstructor, ComponentType @@ -152,7 +152,7 @@ def send_client_dir(path: str) -> Any: @blueprint.route("/modules/") def send_modules_dir(path: str) -> Any: - return send_from_directory(str(IDOM_WED_MODULES_DIR.current), path) + return send_from_directory(str(IDOM_WEB_MODULES_DIR.current), path) if config["redirect_root_to_index"]: diff --git a/src/idom/server/sanic.py b/src/idom/server/sanic.py index aba81e63e..53740b832 100644 --- a/src/idom/server/sanic.py +++ b/src/idom/server/sanic.py @@ -13,7 +13,7 @@ from sanic_cors import CORS from websockets import WebSocketCommonProtocol -from idom.config import IDOM_WED_MODULES_DIR +from idom.config import IDOM_WEB_MODULES_DIR from idom.core.dispatcher import ( RecvCoroutine, SendCoroutine, @@ -186,7 +186,7 @@ def _setup_common_routes(blueprint: Blueprint, config: Config) -> None: if config["serve_static_files"]: blueprint.static("/client", str(CLIENT_BUILD_DIR)) - blueprint.static("/modules", str(IDOM_WED_MODULES_DIR.current)) + blueprint.static("/modules", str(IDOM_WEB_MODULES_DIR.current)) if config["redirect_root_to_index"]: diff --git a/src/idom/server/starlette.py b/src/idom/server/starlette.py index 5b751e140..63c105b1a 100644 --- a/src/idom/server/starlette.py +++ b/src/idom/server/starlette.py @@ -20,7 +20,7 @@ from uvicorn.supervisors.multiprocess import Multiprocess from uvicorn.supervisors.statreload import StatReload as ChangeReload -from idom.config import IDOM_DEBUG_MODE, IDOM_WED_MODULES_DIR +from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR from idom.core.dispatcher import ( RecvCoroutine, SendCoroutine, @@ -211,7 +211,7 @@ def _setup_common_routes(config: Config, app: Starlette) -> None: app.mount( f"{url_prefix}/modules", StaticFiles( - directory=str(IDOM_WED_MODULES_DIR.current), + directory=str(IDOM_WEB_MODULES_DIR.current), html=True, check_dir=False, ), diff --git a/src/idom/server/tornado.py b/src/idom/server/tornado.py index b8cb21f1c..d7daa7476 100644 --- a/src/idom/server/tornado.py +++ b/src/idom/server/tornado.py @@ -13,7 +13,7 @@ from tornado.websocket import WebSocketHandler from typing_extensions import TypedDict -from idom.config import IDOM_WED_MODULES_DIR +from idom.config import IDOM_WEB_MODULES_DIR from idom.core.dispatcher import VdomJsonPatch, dispatch_single_view from idom.core.layout import Layout, LayoutEvent from idom.core.proto import ComponentConstructor @@ -133,7 +133,7 @@ def _setup_common_routes(config: Config) -> _RouteHandlerSpecs: ( r"/modules/(.*)", StaticFileHandler, - {"path": str(IDOM_WED_MODULES_DIR.current)}, + {"path": str(IDOM_WEB_MODULES_DIR.current)}, ) ) if config["redirect_root_to_index"]: diff --git a/src/idom/testing.py b/src/idom/testing.py index e310e4fe8..7c4f1c2fb 100644 --- a/src/idom/testing.py +++ b/src/idom/testing.py @@ -28,7 +28,7 @@ from selenium.webdriver import Chrome from selenium.webdriver.remote.webdriver import WebDriver -from idom.config import IDOM_WED_MODULES_DIR +from idom.config import IDOM_WEB_MODULES_DIR from idom.core.events import EventHandler, to_event_handler_function from idom.core.hooks import LifeCycleHook, current_hook from idom.server.prefab import hotswap_server @@ -433,5 +433,5 @@ def use( def clear_idom_web_modules_dir() -> None: - for path in IDOM_WED_MODULES_DIR.current.iterdir(): + for path in IDOM_WEB_MODULES_DIR.current.iterdir(): shutil.rmtree(path) if path.is_dir() else path.unlink() diff --git a/src/idom/web/module.py b/src/idom/web/module.py index e35fee681..a113d0274 100644 --- a/src/idom/web/module.py +++ b/src/idom/web/module.py @@ -12,7 +12,7 @@ from typing_extensions import Protocol -from idom.config import IDOM_DEBUG_MODE, IDOM_WED_MODULES_DIR +from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR from idom.core.proto import ( EventHandlerMapping, ImportSourceDict, @@ -391,6 +391,6 @@ def _make_export( def _web_module_path(name: str) -> Path: - directory = IDOM_WED_MODULES_DIR.current + directory = IDOM_WEB_MODULES_DIR.current path = directory.joinpath(*name.split("/")) return path.with_suffix(path.suffix) diff --git a/tests/test_html.py b/tests/test_html.py index fbc888627..e61ef9c22 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -117,7 +117,7 @@ def HasScript(): display(HasScript) for i in range(1, 4): - script_file = config.IDOM_WED_MODULES_DIR.current / file_name_template.format( + script_file = config.IDOM_WEB_MODULES_DIR.current / file_name_template.format( src_id=i ) script_file.write_text( From 384bd42746a9025f3b0c777242234e05b4e7bde4 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 17:47:37 -0800 Subject: [PATCH 002/253] mark old state as None if unmounting --- src/idom/_option.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/idom/_option.py b/src/idom/_option.py index 6868a7cc6..b405e3e1a 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -109,3 +109,15 @@ def current(self) -> _O: DeprecationWarning, ) return super().current + + @current.setter + def current(self, new: _O) -> None: + if self.new_name is None: + warnings.warn(f"{self.name!r} has been removed", DeprecationWarning) + else: + warnings.warn( + f"{self.name!r} has been renamed to {self.new_name!r}", + DeprecationWarning, + ) + self.set_current(new) + return None From 0f8d31fef4d79309db1dcbfd8d8600ce1d36ae0b Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 17:41:03 -0800 Subject: [PATCH 003/253] mark old state as None if unmounting --- src/idom/core/layout.py | 17 ++++++++++----- tests/test_core/test_layout.py | 39 ++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 39c5d55fe..870ede478 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -355,11 +355,18 @@ def _render_model_children( else: if old_child_state.is_component_state: self._unmount_model_states([old_child_state]) - new_child_state = _update_element_model_state( - old_child_state, - new_state, - index, - ) + new_child_state = _make_element_model_state( + new_state, + index, + key, + ) + old_child_state = None + else: + new_child_state = _update_element_model_state( + old_child_state, + new_state, + index, + ) self._render_model(old_child_state, new_child_state, child) new_children.append(new_child_state.model.current) new_state.children_by_key[key] = new_child_state diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index c5f0773a6..46fb32112 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -8,6 +8,7 @@ import pytest import idom +from idom import html from idom.config import IDOM_DEBUG_MODE from idom.core.dispatcher import render_json_patch from idom.core.hooks import use_effect @@ -838,3 +839,41 @@ def HasState(): root_hook.latest.schedule_render() await layout.render() assert last_state != state.current + + +async def test_switching_node_type_with_event_handlers(): + toggle_type = idom.Ref() + element_static_handler = StaticEventHandler() + component_static_handler = StaticEventHandler() + + @idom.component + def Root(): + toggle, toggle_type.current = use_toggle(True) + handler = element_static_handler.use(lambda: None) + if toggle: + return html.div(html.button({"onEvent": handler})) + else: + return html.div(SomeComponent()) + + @idom.component + def SomeComponent(): + handler = component_static_handler.use(lambda: None) + return html.button({"onAnotherEvent": handler}) + + with idom.Layout(Root()) as layout: + await layout.render() + + assert element_static_handler.target in layout._event_handlers + assert component_static_handler.target not in layout._event_handlers + + toggle_type.current() + await layout.render() + + assert element_static_handler.target not in layout._event_handlers + assert component_static_handler.target in layout._event_handlers + + toggle_type.current() + await layout.render() + + assert element_static_handler.target in layout._event_handlers + assert component_static_handler.target not in layout._event_handlers From d06a0c314ff75eb194f1c31149c016fd2e8f14e3 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 18:41:09 -0800 Subject: [PATCH 004/253] 0.36.1 release --- VERSION | 2 +- docs/source/developing-idom/changelog.rst | 17 ++++++ .../developing-idom/contributor-guide.rst | 3 +- noxfile.py | 13 +---- scripts/changes_since_release.py | 56 +++++++++++++++++++ scripts/latest_closed_issues.py | 28 ---------- scripts/latest_pull_requests.py | 28 ---------- src/client/package-lock.json | 8 +-- src/client/package.json | 2 +- .../packages/idom-app-react/package.json | 2 +- .../packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 12 files changed, 86 insertions(+), 77 deletions(-) create mode 100644 scripts/changes_since_release.py delete mode 100644 scripts/latest_closed_issues.py delete mode 100644 scripts/latest_pull_requests.py diff --git a/VERSION b/VERSION index 93d4c1ef0..19199bcca 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.36.0 +0.36.1 diff --git a/docs/source/developing-idom/changelog.rst b/docs/source/developing-idom/changelog.rst index adc837bdc..5137d0e28 100644 --- a/docs/source/developing-idom/changelog.rst +++ b/docs/source/developing-idom/changelog.rst @@ -7,6 +7,23 @@ team are working on, or have feedback on how issues should be prioritized, feel :discussion-type:`open up a discussion `. +0.36.1 +------ + +Inclused bug fixes and renames the configuration option `IDOM_WED_MODULES_DIR` to +`IDOM_WEB_MODULES_DIR` with a corresponding deprecation warning. + +**Closed Issues** + +- Fix Key Error When Cleaning Up Event Handlers - #640 +- Update Script Tag Behavior - #628 + +**Merged Pull Requests** + +- mark old state as None if unmounting - #641 +- rename IDOM_WED_MODULES_DIR to IDOM_WEB_MODULES_DIR - #638 + + 0.36.0 ------ diff --git a/docs/source/developing-idom/contributor-guide.rst b/docs/source/developing-idom/contributor-guide.rst index 603c8ef4b..8937f12e3 100644 --- a/docs/source/developing-idom/contributor-guide.rst +++ b/docs/source/developing-idom/contributor-guide.rst @@ -297,8 +297,7 @@ following commands using the ```` of your choosing (``rst``, ``md``, ``t .. code-block:: bash - nox -s latest_closed_issues -- - nox -s latest_pull_requests -- + nox -s changes_since_release -- Once the version has been updated and the changelog entry completed, you should commit the changes. diff --git a/noxfile.py b/noxfile.py index 77b66c3b7..c1d77d95c 100644 --- a/noxfile.py +++ b/noxfile.py @@ -350,17 +350,10 @@ def update_version(session: Session) -> None: @nox.session(reuse_venv=True) -def latest_pull_requests(session: Session) -> None: - """A basic script for outputing changelog info""" +def changes_since_release(session: Session) -> None: + """Output the latest changes since the last release""" session.install("requests", "python-dateutil") - session.run("python", "scripts/latest_pull_requests.py", *session.posargs) - - -@nox.session(reuse_venv=True) -def latest_closed_issues(session: Session) -> None: - """A basic script for outputing changelog info""" - session.install("requests", "python-dateutil") - session.run("python", "scripts/latest_closed_issues.py", *session.posargs) + session.run("python", "scripts/changes_since_release.py", *session.posargs) def install_requirements_file(session: Session, name: str) -> None: diff --git a/scripts/changes_since_release.py b/scripts/changes_since_release.py new file mode 100644 index 000000000..3ec174a65 --- /dev/null +++ b/scripts/changes_since_release.py @@ -0,0 +1,56 @@ +from __future__ import annotations + +import sys + +from common.github_utils import ( + REPO_NAME, + date_range_query, + last_release_date, + search_idom_repo, +) + + +SECTION_FORMAT_TEMPLATES = { + "md": lambda title: f"# {title}", + "rst": lambda title: f"**{title}**", + "text": lambda title: f"{title}\n{'-' * len(title)}", +} + + +ISSUE_FORMAT_TEMPLATES = { + "md": lambda title, number, **_: f"- {title} - [#{number}](https://github.com/{REPO_NAME}/issues/{number})", + "rst": lambda title, number, **_: f"- {title} - :pull:`{number}`", + "text": lambda title, number, **_: f"- {title} - #{number}", +} + +PULL_REQUEST_FORMAT_TEMPLATES = { + "md": lambda title, number, **_: f"- {title} - [#{number}](https://github.com/{REPO_NAME}/pull/{number})", + "rst": lambda title, number, **_: f"- {title} - :issue:`{number}`", + "text": lambda title, number, **_: f"- {title} - #{number}", +} + + +def show_issues(format: str): + print(SECTION_FORMAT_TEMPLATES[format]("Closed Issues")) + template = ISSUE_FORMAT_TEMPLATES[format] + query = f"type:issue closed:{date_range_query(last_release_date())}" + for issue in search_idom_repo(query): + print(template(**issue)) + + +def show_pull_requests(format: str = "text"): + print(SECTION_FORMAT_TEMPLATES[format]("Merged Pull Requests")) + template = PULL_REQUEST_FORMAT_TEMPLATES[format] + query = f"type:pr merged:{date_range_query(last_release_date())}" + for pull in search_idom_repo(query): + print(template(**pull)) + + +def main(format: str = "text"): + for func in [show_issues, show_pull_requests]: + func(format) + print() + + +if __name__ == "__main__": + main(*sys.argv[1:]) diff --git a/scripts/latest_closed_issues.py b/scripts/latest_closed_issues.py deleted file mode 100644 index ae39b40eb..000000000 --- a/scripts/latest_closed_issues.py +++ /dev/null @@ -1,28 +0,0 @@ -from __future__ import annotations - -import sys - -from common.github_utils import ( - REPO_NAME, - date_range_query, - last_release_date, - search_idom_repo, -) - - -FORMAT_TEMPLATES = { - "md": f"- {{title}} - [#{{number}}](https://github.com/{REPO_NAME}/issues/{{number}})", - "rst": "- {title} - :issue:`{number}`", - "text": "- {title} - #{number}", -} - - -def main(format: str = "text"): - template = FORMAT_TEMPLATES[format] - query = f"type:issue closed:{date_range_query(last_release_date())}" - for pr in search_idom_repo(query): - print(template.format(**pr)) - - -if __name__ == "__main__": - main(*sys.argv[1:]) diff --git a/scripts/latest_pull_requests.py b/scripts/latest_pull_requests.py deleted file mode 100644 index 0daae3e5a..000000000 --- a/scripts/latest_pull_requests.py +++ /dev/null @@ -1,28 +0,0 @@ -from __future__ import annotations - -import sys - -from common.github_utils import ( - REPO_NAME, - date_range_query, - last_release_date, - search_idom_repo, -) - - -FORMAT_TEMPLATES = { - "md": f"- {{title}} - [#{{number}}](https://github.com/{REPO_NAME}/pull/{{number}})", - "rst": "- {title} - :pull:`{number}`", - "text": "- {title} - #{number}", -} - - -def main(format: str = "text"): - template = FORMAT_TEMPLATES[format] - query = f"type:pr merged:{date_range_query(last_release_date())}" - for pr in search_idom_repo(query): - print(template.format(**pr)) - - -if __name__ == "__main__": - main(*sys.argv[1:]) diff --git a/src/client/package-lock.json b/src/client/package-lock.json index d4b4eb225..08a59ffb2 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.36.0", + "version": "0.36.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.36.0", + "version": "0.36.1", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.36.0", + "version": "0.36.1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.36.0", + "version": "0.36.1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 3f95403b3..f6cec9d74 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.36.0", + "version": "0.36.1", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index faf8bee43..a4a74dc4d 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.36.0" + "version": "0.36.1" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index e4d5593cf..e736e94a2 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.36.0" + "version": "0.36.1" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 111057781..80434eea6 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -21,7 +21,7 @@ __author__ = "idom-team" -__version__ = "0.36.0" # DO NOT MODIFY +__version__ = "0.36.1" # DO NOT MODIFY __all__ = [ "component", From 2e1f6eaebcfa28dc03ead072e230f53411ca7673 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 18:53:59 -0800 Subject: [PATCH 005/253] fix rst formatting --- docs/source/_custom_js/package-lock.json | 2 +- docs/source/developing-idom/changelog.rst | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 49364d871..2749a0445 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.34.0", + "version": "0.36.1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/docs/source/developing-idom/changelog.rst b/docs/source/developing-idom/changelog.rst index 5137d0e28..708e146fc 100644 --- a/docs/source/developing-idom/changelog.rst +++ b/docs/source/developing-idom/changelog.rst @@ -10,18 +10,18 @@ team are working on, or have feedback on how issues should be prioritized, feel 0.36.1 ------ -Inclused bug fixes and renames the configuration option `IDOM_WED_MODULES_DIR` to -`IDOM_WEB_MODULES_DIR` with a corresponding deprecation warning. +Inclused bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` to +``IDOM_WEB_MODULES_DIR`` with a corresponding deprecation warning. **Closed Issues** -- Fix Key Error When Cleaning Up Event Handlers - #640 -- Update Script Tag Behavior - #628 +- Fix Key Error When Cleaning Up Event Handlers - :issue:`640` +- Update Script Tag Behavior - :issue:`628` **Merged Pull Requests** -- mark old state as None if unmounting - #641 -- rename IDOM_WED_MODULES_DIR to IDOM_WEB_MODULES_DIR - #638 +- mark old state as None if unmounting - :pull:`641` +- rename IDOM_WED_MODULES_DIR to IDOM_WEB_MODULES_DIR - :pull:`638` 0.36.0 From e4fca652bfc1e9d9d4644b8e51c8545e9a196a3a Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 18:56:30 -0800 Subject: [PATCH 006/253] fix typo --- docs/source/developing-idom/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/developing-idom/changelog.rst b/docs/source/developing-idom/changelog.rst index 708e146fc..29ade4feb 100644 --- a/docs/source/developing-idom/changelog.rst +++ b/docs/source/developing-idom/changelog.rst @@ -10,7 +10,7 @@ team are working on, or have feedback on how issues should be prioritized, feel 0.36.1 ------ -Inclused bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` to +Includes bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` to ``IDOM_WEB_MODULES_DIR`` with a corresponding deprecation warning. **Closed Issues** From c146dfb264cbc3d2256a62efdfe9ccf62c795b01 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 21:18:00 -0800 Subject: [PATCH 007/253] DeprecatedOption must mirror regular option --- src/idom/_option.py | 35 +++++++++++++++-------------------- src/idom/config.py | 14 ++++++-------- 2 files changed, 21 insertions(+), 28 deletions(-) diff --git a/src/idom/_option.py b/src/idom/_option.py index b405e3e1a..703265511 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -93,31 +93,26 @@ def __repr__(self) -> str: class DeprecatedOption(Option[_O]): # pragma: no cover - def __init__(self, new_name: str | None, *args: Any, **kwargs: Any) -> None: - self.new_name = new_name - with warnings.catch_warnings(): - warnings.simplefilter("ignore", DeprecationWarning) - super().__init__(*args, **kwargs) + def __init__(self, new_opt: Option | None, name: str) -> None: + # copy over attrs + attrs = new_opt.__dict__.copy() + attrs.pop("_current", None) + self.__dict__.update(new_opt.__dict__) + # then set the ones needed here + self._name = name + self._new_opt = new_opt @property - def current(self) -> _O: - if self.new_name is None: + def _current(self) -> _O: + if self._new_opt.name is None: warnings.warn(f"{self.name!r} has been removed", DeprecationWarning) else: warnings.warn( - f"{self.name!r} has been renamed to {self.new_name!r}", + f"{self.name!r} has been renamed to {self._new_opt.name!r}", DeprecationWarning, ) - return super().current + return self._new_opt.current - @current.setter - def current(self, new: _O) -> None: - if self.new_name is None: - warnings.warn(f"{self.name!r} has been removed", DeprecationWarning) - else: - warnings.warn( - f"{self.name!r} has been renamed to {self.new_name!r}", - DeprecationWarning, - ) - self.set_current(new) - return None + @_current.setter + def _current(self, new: _O) -> None: + self._new_opt.current = new diff --git a/src/idom/config.py b/src/idom/config.py index 11a493713..62a666453 100644 --- a/src/idom/config.py +++ b/src/idom/config.py @@ -44,14 +44,6 @@ # Because these web modules will be linked dynamically at runtime this can be temporary _DEFAULT_WEB_MODULES_DIR = TemporaryDirectory() -IDOM_WED_MODULES_DIR: _Option[Path] = _DeprecatedOption( - new_name="IDOM_WEB_MODULES_DIR", - name="IDOM_WED_MODULES_DIR", - default=Path(_DEFAULT_WEB_MODULES_DIR.name), - validator=Path, -) -"""This has been renamed to :data:`IDOM_WEB_MODULES_DIR`""" - IDOM_WEB_MODULES_DIR = _Option( "IDOM_WEB_MODULES_DIR", default=Path(_DEFAULT_WEB_MODULES_DIR.name), @@ -64,6 +56,12 @@ set of publically available APIs for working with the client. """ +IDOM_WED_MODULES_DIR: _Option[Path] = _DeprecatedOption( + new_opt=IDOM_WEB_MODULES_DIR, + name="IDOM_WED_MODULES_DIR", +) +"""This has been renamed to :data:`IDOM_WEB_MODULES_DIR`""" + IDOM_FEATURE_INDEX_AS_DEFAULT_KEY = _Option( "IDOM_FEATURE_INDEX_AS_DEFAULT_KEY", default=True, From 755a203161b7ed8a2e726b2e90d0701de82b928b Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 21:20:19 -0800 Subject: [PATCH 008/253] 0.36.2 hotfix --- VERSION | 2 +- docs/source/developing-idom/changelog.rst | 8 ++++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 17 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 19199bcca..d647c8a44 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.36.1 +0.36.2 diff --git a/docs/source/developing-idom/changelog.rst b/docs/source/developing-idom/changelog.rst index 29ade4feb..1cadde992 100644 --- a/docs/source/developing-idom/changelog.rst +++ b/docs/source/developing-idom/changelog.rst @@ -7,6 +7,14 @@ team are working on, or have feedback on how issues should be prioritized, feel :discussion-type:`open up a discussion `. +0.36.2 +------ + +Hot fix for newly introduced ``DeprecatedOption``: + +- :commit:`c146dfb264cbc3d2256a62efdfe9ccf62c795b01` + + 0.36.1 ------ diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 08a59ffb2..2b866c249 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.36.1", + "version": "0.36.2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.36.1", + "version": "0.36.2", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.36.1", + "version": "0.36.2", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.36.1", + "version": "0.36.2", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index f6cec9d74..4f69ed8b3 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.36.1", + "version": "0.36.2", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index a4a74dc4d..ffba6adbc 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.36.1" + "version": "0.36.2" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index e736e94a2..9e4f9fa64 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.36.1" + "version": "0.36.2" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 80434eea6..a6956c68d 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -21,7 +21,7 @@ __author__ = "idom-team" -__version__ = "0.36.1" # DO NOT MODIFY +__version__ = "0.36.2" # DO NOT MODIFY __all__ = [ "component", From 73fe7f05b63de1632e003bbf720c2d0b5b0ab82a Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 21:23:11 -0800 Subject: [PATCH 009/253] fix type annotation --- src/idom/_option.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/idom/_option.py b/src/idom/_option.py index 703265511..7421ab25b 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -93,7 +93,7 @@ def __repr__(self) -> str: class DeprecatedOption(Option[_O]): # pragma: no cover - def __init__(self, new_opt: Option | None, name: str) -> None: + def __init__(self, new_opt: Option[_O], name: str) -> None: # copy over attrs attrs = new_opt.__dict__.copy() attrs.pop("_current", None) @@ -102,8 +102,8 @@ def __init__(self, new_opt: Option | None, name: str) -> None: self._name = name self._new_opt = new_opt - @property - def _current(self) -> _O: + @property # type: ignore + def _current(self) -> _O: # type: ignore if self._new_opt.name is None: warnings.warn(f"{self.name!r} has been removed", DeprecationWarning) else: From 4723d7d340698713005c9aa6508e44ff8a95086f Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Feb 2022 21:24:13 -0800 Subject: [PATCH 010/253] new_opt is never None --- src/idom/_option.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/idom/_option.py b/src/idom/_option.py index 7421ab25b..e0a303ac9 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -104,13 +104,10 @@ def __init__(self, new_opt: Option[_O], name: str) -> None: @property # type: ignore def _current(self) -> _O: # type: ignore - if self._new_opt.name is None: - warnings.warn(f"{self.name!r} has been removed", DeprecationWarning) - else: - warnings.warn( - f"{self.name!r} has been renamed to {self._new_opt.name!r}", - DeprecationWarning, - ) + warnings.warn( + f"{self.name!r} has been renamed to {self._new_opt.name!r}", + DeprecationWarning, + ) return self._new_opt.current @_current.setter From 742cf570d998f64b5964639a02209e60305020b6 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 5 Feb 2022 14:22:21 -0800 Subject: [PATCH 011/253] configure pydocstyle --- requirements/check-style.txt | 2 ++ setup.cfg | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/requirements/check-style.txt b/requirements/check-style.txt index df22cfea8..4a6e0c421 100644 --- a/requirements/check-style.txt +++ b/requirements/check-style.txt @@ -5,3 +5,5 @@ flake8-print flake8-tidy-imports isort >=5.7.0 pep8-naming +# pydocstyle +git+https://github.com/PyCQA/pydocstyle.git@bd4993345a241bd0d5128f21de56394b1cde3714#egg=pydocstyle diff --git a/setup.cfg b/setup.cfg index 4359702ff..0e801da50 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,3 +42,9 @@ omit = all-files = true source-dir = docs/source build-dir = docs/build + +[pydocstyle] +inherit = false +match = .*\.py +convention = google +add_ignore = D100,D101,D102,D103,D104,D105,D107,D412,D415 From 3a8a5a1f52e851482b20708683e09becedcf2ac1 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 9 Feb 2022 09:02:41 -0800 Subject: [PATCH 012/253] compare definition ID to see if changed in layout --- src/idom/core/component.py | 4 ++++ src/idom/core/layout.py | 4 ++++ src/idom/core/proto.py | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/src/idom/core/component.py b/src/idom/core/component.py index 9c154592c..ccc76c070 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -51,6 +51,10 @@ def __init__( self._kwargs = kwargs self.key = key + @property + def definition_id(self) -> int: + return id(self._func) + def render(self) -> VdomDict: model = self._func(*self._args, **self._kwargs) if isinstance(model, ComponentType): diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 870ede478..c0f944bb6 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -511,6 +511,10 @@ def _update_component_model_state( life_cycle_state=( _update_life_cycle_state(old_model_state.life_cycle_state, new_component) if old_model_state.is_component_state + and ( + old_model_state.life_cycle_state.component.definition_id + == new_component.definition_id + ) else _make_life_cycle_state(new_component, schedule_render) ), ) diff --git a/src/idom/core/proto.py b/src/idom/core/proto.py index e12120533..1859eefa7 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/proto.py @@ -32,6 +32,12 @@ class ComponentType(Protocol): key: Key | None """An identifier which is unique amongst a component's immediate siblings""" + definition_id: int + """A globally unique identifier for this component definition. + + Usually the :func:`id` of this class or an underlying function. + """ + def render(self) -> VdomDict: """Render the component's :class:`VdomDict`.""" From f0a276667e976d5be1ad8bc500525e42e35a407c Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 9 Feb 2022 09:03:11 -0800 Subject: [PATCH 013/253] fix mispellings --- src/idom/core/hooks.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index 0aeb2a0d5..50bcd1da1 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -501,7 +501,7 @@ class LifeCycleHook: "_schedule_render_later", "_current_state_index", "_state", - "_rendered_atleast_once", + "_rendered_at_least_once", "_is_rendering", "_event_effects", "__weakref__", @@ -514,7 +514,7 @@ def __init__( self._schedule_render_callback = schedule_render self._schedule_render_later = False self._is_rendering = False - self._rendered_atleast_once = False + self._rendered_at_least_once = False self._current_state_index = 0 self._state: Tuple[Any, ...] = () self._event_effects: Dict[EffectType, List[Callable[[], None]]] = { @@ -530,18 +530,18 @@ def schedule_render(self) -> None: return None def use_state(self, function: Callable[[], _StateType]) -> _StateType: - if not self._rendered_atleast_once: + if not self._rendered_at_least_once: # since we're not intialized yet we're just appending state result = function() self._state += (result,) else: - # once finalized we iterate over each succesively used piece of state + # once finalized we iterate over each successively used piece of state result = self._state[self._current_state_index] self._current_state_index += 1 return result def add_effect(self, effect_type: EffectType, function: Callable[[], None]) -> None: - """Trigger a function on the occurance of the given effect type""" + """Trigger a function on the occurrence of the given effect type""" self._event_effects[effect_type].append(function) def component_will_render(self) -> None: @@ -562,7 +562,7 @@ def component_did_render(self) -> None: self._is_rendering = False if self._schedule_render_later: self._schedule_render() - self._rendered_atleast_once = True + self._rendered_at_least_once = True self._current_state_index = 0 def component_will_unmount(self) -> None: @@ -585,7 +585,7 @@ def set_current(self) -> None: def unset_current(self) -> None: """Unset this hook as the active hook in this thread""" - # this assertion should never fail - primarilly useful for debug + # this assertion should never fail - primarily useful for debug assert _current_life_cycle_hook[get_thread_id()] is self del _current_life_cycle_hook[get_thread_id()] From 96fce16b52a7b3a0480bfe379d39778fbea1d8ad Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 9 Feb 2022 22:36:19 -0800 Subject: [PATCH 014/253] try another approach to fixing switching component def and resetting state --- src/idom/core/layout.py | 17 +++++++++--- tests/test_core/test_layout.py | 48 +++++++++++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index c0f944bb6..cf7824808 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -380,6 +380,19 @@ def _render_model_children( child, self._rendering_queue.put, ) + elif old_child_state.is_component_state and ( + old_child_state.life_cycle_state.component.definition_id + != child.definition_id + ): + self._unmount_model_states([old_child_state]) + old_child_state = None + new_child_state = _make_component_model_state( + new_state, + index, + key, + child, + self._rendering_queue.put, + ) else: new_child_state = _update_component_model_state( old_child_state, @@ -511,10 +524,6 @@ def _update_component_model_state( life_cycle_state=( _update_life_cycle_state(old_model_state.life_cycle_state, new_component) if old_model_state.is_component_state - and ( - old_model_state.life_cycle_state.component.definition_id - == new_component.definition_id - ) else _make_life_cycle_state(new_component, schedule_render) ), ) diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 46fb32112..879e7a7bd 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -11,7 +11,7 @@ from idom import html from idom.config import IDOM_DEBUG_MODE from idom.core.dispatcher import render_json_patch -from idom.core.hooks import use_effect +from idom.core.hooks import use_effect, use_state from idom.core.layout import LayoutEvent from idom.testing import ( HookCatcher, @@ -877,3 +877,49 @@ def SomeComponent(): assert element_static_handler.target in layout._event_handlers assert component_static_handler.target not in layout._event_handlers + + +async def test_switching_component_definition(): + toggle_component = idom.Ref() + first_used_state = idom.Ref(None) + second_used_state = idom.Ref(None) + + @idom.component + def Root(): + toggle, toggle_component.current = use_toggle(True) + if toggle: + return FirstComponent() + else: + return SecondComponent() + + @idom.component + def FirstComponent(): + first_used_state.current = use_state("first")[0] + # reset state after unmount + use_effect(lambda: lambda: first_used_state.set_current(None)) + return html.div() + + @idom.component + def SecondComponent(): + second_used_state.current = use_state("second")[0] + # reset state after unmount + use_effect(lambda: lambda: second_used_state.set_current(None)) + return html.div() + + with idom.Layout(Root()) as layout: + await layout.render() + + assert first_used_state.current == "first" + assert second_used_state.current is None + + toggle_component.current() + await layout.render() + + assert first_used_state.current is None + assert second_used_state.current == "second" + + toggle_component.current() + await layout.render() + + assert first_used_state.current == "first" + assert second_used_state.current is None From a407913f6fe10f99cae5dca6ce0e5b2d758cd854 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 11 Feb 2022 11:35:27 -0800 Subject: [PATCH 015/253] fix types --- src/idom/core/proto.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/idom/core/proto.py b/src/idom/core/proto.py index 1859eefa7..8a5782ca8 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/proto.py @@ -32,11 +32,12 @@ class ComponentType(Protocol): key: Key | None """An identifier which is unique amongst a component's immediate siblings""" - definition_id: int - """A globally unique identifier for this component definition. + @property + def definition_id(self) -> int: + """A globally unique identifier for this component definition. - Usually the :func:`id` of this class or an underlying function. - """ + Usually the :func:`id` of this class or an underlying function. + """ def render(self) -> VdomDict: """Render the component's :class:`VdomDict`.""" From dcd507f5deaf3941a83478855c9664b637e486df Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 15 Feb 2022 22:03:28 -0800 Subject: [PATCH 016/253] Remove work items section of task plan --- .github/ISSUE_TEMPLATE/issue-form.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/issue-form.yml b/.github/ISSUE_TEMPLATE/issue-form.yml index 342316ad2..b4a4b8928 100644 --- a/.github/ISSUE_TEMPLATE/issue-form.yml +++ b/.github/ISSUE_TEMPLATE/issue-form.yml @@ -14,10 +14,3 @@ body: description: Describe what ought to be done, and why that will address the reasons for action mentioned above. validations: required: false -- type: textarea - attributes: - label: Work Items - description: | - An itemized list or detailed description of the work to be done to based on the proposed actions above. - validations: - required: false From 99219f3e348f3f71730a2e3577bdc964153931e0 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Tue, 15 Feb 2022 22:42:58 -0800 Subject: [PATCH 017/253] fix #652 In short, because components do not have a node in the model state tree managed by the layout, keys for elements in the components were being registered to the parent of the component rather than to a node for the component which contained the elements. The short-term solution was to make it so components wrap their contents in a div without a key. The long-term solution is to refactor the Layout() and give components a dedicated node in the model state tree --- src/idom/core/component.py | 4 +-- tests/test_core/test_layout.py | 54 ++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/src/idom/core/component.py b/src/idom/core/component.py index ccc76c070..d9a048aae 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -57,9 +57,7 @@ def definition_id(self) -> int: def render(self) -> VdomDict: model = self._func(*self._args, **self._kwargs) - if isinstance(model, ComponentType): - model = {"tagName": "div", "children": [model]} - return model + return {"tagName": "div", "children": [model]} def __repr__(self) -> str: sig = inspect.signature(self._func) diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 879e7a7bd..199bf1f1e 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -10,6 +10,7 @@ import idom from idom import html from idom.config import IDOM_DEBUG_MODE +from idom.core.component import component from idom.core.dispatcher import render_json_patch from idom.core.hooks import use_effect, use_state from idom.core.layout import LayoutEvent @@ -923,3 +924,56 @@ def SecondComponent(): assert first_used_state.current == "first" assert second_used_state.current is None + + +async def test_element_keys_inside_components_do_not_reset_state_of_component(): + """This is a regression test for a bug. + + You would not expect that calling `set_child_key_num` would trigger state to be + reset in any `Child()` components but there was a bug where that happened. + """ + + effect_calls_without_state = [] + set_child_key_num = StaticEventHandler() + did_call_effect = asyncio.Event() + + @component + def Parent(): + state, set_state = use_state(0) + return html.div( + html.button( + {"onClick": set_child_key_num.use(lambda: set_state(state + 1))}, + "click me", + ), + Child("some-key"), + Child(f"key-{state}"), + ) + + @component + def Child(child_key): + state, set_state = use_state(0) + + @use_effect + async def record_if_state_is_reset(): + if state: + return + effect_calls_without_state.append(child_key) + set_state(1) + did_call_effect.set() + + return html.div( + child_key, + key=child_key, + ) + + with idom.Layout(Parent()) as layout: + await layout.render() + await did_call_effect.wait() + assert effect_calls_without_state == ["some-key", "key-0"] + did_call_effect.clear() + + for i in range(1, 5): + await layout.deliver(LayoutEvent(set_child_key_num.target, [])) + await layout.render() + assert effect_calls_without_state == ["some-key", "key-0"] + did_call_effect.clear() From 781c6f66b1c42206d6013dc58010dcd82fbb6c39 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 16 Feb 2022 00:12:34 -0800 Subject: [PATCH 018/253] implement element fragment + try to fix tests --- setup.cfg | 1 + .../idom-client-react/src/components.js | 16 ++++- src/idom/core/component.py | 3 +- src/idom/core/layout.py | 6 ++ temp.py | 9 +++ tests/assert_utils.py | 5 ++ tests/general_utils.py | 22 ------ tests/test_core/test_dispatcher.py | 21 +++--- tests/test_core/test_hooks.py | 14 ++-- tests/test_core/test_layout.py | 71 +++++++++++++++---- 10 files changed, 115 insertions(+), 53 deletions(-) create mode 100644 temp.py create mode 100644 tests/assert_utils.py delete mode 100644 tests/general_utils.py diff --git a/setup.cfg b/setup.cfg index 0e801da50..7e05d27bd 100644 --- a/setup.cfg +++ b/setup.cfg @@ -24,6 +24,7 @@ testpaths = tests xfail_strict = True markers = slow: marks tests as slow (deselect with '-m "not slow"') +python_files = assert_*.py test_*.py [coverage:report] fail_under = 100 diff --git a/src/client/packages/idom-client-react/src/components.js b/src/client/packages/idom-client-react/src/components.js index 465f94801..54a3c1685 100644 --- a/src/client/packages/idom-client-react/src/components.js +++ b/src/client/packages/idom-client-react/src/components.js @@ -20,6 +20,10 @@ export function Layout({ saveUpdateHook, sendEvent, loadImportSource }) { React.useEffect(() => saveUpdateHook(patchModel), [patchModel]); + if (!Object.keys(model).length) { + return html`<${React.Fragment} />`; + } + return html` <${LayoutContext.Provider} value=${{ sendEvent, loadImportSource }}> <${Element} model=${model} /> @@ -28,7 +32,7 @@ export function Layout({ saveUpdateHook, sendEvent, loadImportSource }) { } export function Element({ model }) { - if (!model.tagName) { + if (model.error !== undefined) { if (model.error) { return html`
${model.error}
`; } else { @@ -45,11 +49,19 @@ export function Element({ model }) { function StandardElement({ model }) { const layoutContext = React.useContext(LayoutContext); + + let type; + if (model.tagName == "") { + type = React.Fragment; + } else { + type = model.tagName; + } + // Use createElement here to avoid warning about variable numbers of children not // having keys. Warning about this must now be the responsibility of the server // providing the models instead of the client rendering them. return React.createElement( - model.tagName, + type, createElementAttributes(model, layoutContext.sendEvent), ...createElementChildren( model, diff --git a/src/idom/core/component.py b/src/idom/core/component.py index d9a048aae..6ef8c9291 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -56,8 +56,7 @@ def definition_id(self) -> int: return id(self._func) def render(self) -> VdomDict: - model = self._func(*self._args, **self._kwargs) - return {"tagName": "div", "children": [model]} + return self._func(*self._args, **self._kwargs) def __repr__(self) -> str: sig = inspect.signature(self._func) diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index cf7824808..afd9ff723 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -199,6 +199,12 @@ def _render_component( raw_model = component.render() finally: life_cycle_hook.unset_current() + + # wrap the model in a fragment (i.e. tagName="") to ensure components have + # a separate node in the model state tree. This could be removed if this + # components are given a node in the tree some other way + raw_model = {"tagName": "", "children": [raw_model]} + self._render_model(old_state, new_state, raw_model) except Exception as error: logger.exception(f"Failed to render {component}") diff --git a/temp.py b/temp.py new file mode 100644 index 000000000..ac310c47b --- /dev/null +++ b/temp.py @@ -0,0 +1,9 @@ +import idom + + +@idom.component +def Demo(): + return idom.vdom("", idom.html.h1("hello")) + + +idom.run(Demo) diff --git a/tests/assert_utils.py b/tests/assert_utils.py new file mode 100644 index 000000000..49105fb80 --- /dev/null +++ b/tests/assert_utils.py @@ -0,0 +1,5 @@ +def assert_same_items(left, right): + """Check that two unordered sequences are equal (only works if reprs are equal)""" + sorted_left = list(sorted(left, key=repr)) + sorted_right = list(sorted(right, key=repr)) + assert sorted_left == sorted_right diff --git a/tests/general_utils.py b/tests/general_utils.py deleted file mode 100644 index 978dc6a2f..000000000 --- a/tests/general_utils.py +++ /dev/null @@ -1,22 +0,0 @@ -# dialect=pytest - -from contextlib import contextmanager - - -@contextmanager -def patch_slots_object(obj, attr, new_value): - # we do this since `mock.patch..object attempts to use __dict__ - # which is not necessarilly present on an object with __slots__` - old_value = getattr(obj, attr) - setattr(obj, attr, new_value) - try: - yield new_value - finally: - setattr(obj, attr, old_value) - - -def assert_same_items(left, right): - """Check that two unordered sequences are equal (only works if reprs are equal)""" - sorted_left = list(sorted(left, key=repr)) - sorted_right = list(sorted(right, key=repr)) - assert sorted_left == sorted_right diff --git a/tests/test_core/test_dispatcher.py b/tests/test_core/test_dispatcher.py index a0e6bef36..4f0cf34b0 100644 --- a/tests/test_core/test_dispatcher.py +++ b/tests/test_core/test_dispatcher.py @@ -57,15 +57,20 @@ async def recv(): def make_events_and_expected_model(): events = [LayoutEvent(STATIC_EVENT_HANDLER.target, [])] * 4 expected_model = { - "tagName": "div", - "attributes": {"count": 4}, - "eventHandlers": { - EVENT_NAME: { - "target": STATIC_EVENT_HANDLER.target, - "preventDefault": False, - "stopPropagation": False, + "tagName": "", + "children": [ + { + "tagName": "div", + "attributes": {"count": 4}, + "eventHandlers": { + EVENT_NAME: { + "target": STATIC_EVENT_HANDLER.target, + "preventDefault": False, + "stopPropagation": False, + } + }, } - }, + ], } return events, expected_model diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index cdc87d12f..93a220a4c 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -7,7 +7,7 @@ from idom.core.dispatcher import render_json_patch from idom.core.hooks import LifeCycleHook from idom.testing import HookCatcher, assert_idom_logged -from tests.general_utils import assert_same_items +from tests.assert_utils import assert_same_items async def test_must_be_rendering_in_layout_to_use_hooks(): @@ -38,21 +38,25 @@ def SimpleStatefulComponent(): assert_same_items( patch_1.changes, [ - {"op": "add", "path": "/children", "value": ["0"]}, - {"op": "add", "path": "/tagName", "value": "div"}, + {"op": "add", "path": "/tagName", "value": ""}, + { + "op": "add", + "path": "/children", + "value": [{"children": ["0"], "tagName": "div"}], + }, ], ) patch_2 = await render_json_patch(layout) assert patch_2.path == "" assert patch_2.changes == [ - {"op": "replace", "path": "/children/0", "value": "1"} + {"op": "replace", "path": "/children/0/children/0", "value": "1"} ] patch_3 = await render_json_patch(layout) assert patch_3.path == "" assert patch_3.changes == [ - {"op": "replace", "path": "/children/0", "value": "2"} + {"op": "replace", "path": "/children/0/children/0", "value": "2"} ] diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 199bf1f1e..1fa4669e8 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -20,7 +20,7 @@ assert_idom_logged, capture_idom_logs, ) -from tests.general_utils import assert_same_items +from tests.assert_utils import assert_same_items @pytest.fixture(autouse=True) @@ -79,13 +79,21 @@ def SimpleComponent(): path, changes = await render_json_patch(layout) assert path == "" - assert changes == [{"op": "add", "path": "/tagName", "value": "div"}] + assert_same_items( + changes, + [ + {"op": "add", "path": "/children", "value": [{"tagName": "div"}]}, + {"op": "add", "path": "/tagName", "value": ""}, + ], + ) set_state_hook.current("table") path, changes = await render_json_patch(layout) assert path == "" - assert changes == [{"op": "replace", "path": "/tagName", "value": "table"}] + assert changes == [ + {"op": "replace", "path": "/children/0/tagName", "value": "table"} + ] async def test_nested_component_layout(): @@ -112,9 +120,20 @@ def Child(): { "op": "add", "path": "/children", - "value": ["0", {"tagName": "div", "children": ["0"]}], + "value": [ + { + "children": [ + "0", + { + "children": [{"children": ["0"], "tagName": "div"}], + "tagName": "", + }, + ], + "tagName": "div", + } + ], }, - {"op": "add", "path": "/tagName", "value": "div"}, + {"op": "add", "path": "/tagName", "value": ""}, ], ) @@ -122,13 +141,17 @@ def Child(): path, changes = await render_json_patch(layout) assert path == "" - assert changes == [{"op": "replace", "path": "/children/0", "value": "1"}] + assert changes == [ + {"op": "replace", "path": "/children/0/children/0", "value": "1"} + ] child_set_state.current(1) path, changes = await render_json_patch(layout) assert path == "/children/1" - assert changes == [{"op": "replace", "path": "/children/0", "value": "1"}] + assert changes == [ + {"op": "replace", "path": "/children/0/children/0", "value": "1"} + ] @pytest.mark.skipif( @@ -202,16 +225,21 @@ def BadChild(): assert_same_items( patch.changes, [ + {"op": "add", "path": "/tagName", "value": ""}, { "op": "add", "path": "/children", "value": [ - {"tagName": "div", "children": ["hello"]}, - {"tagName": "", "error": ""}, - {"tagName": "div", "children": ["hello"]}, + { + "children": [ + {"children": [...], "tagName": ""}, + {"error": "", "tagName": ""}, + {"children": [...], "tagName": ""}, + ], + "tagName": "div", + } ], }, - {"op": "add", "path": "/tagName", "value": "div"}, ], ) @@ -233,9 +261,24 @@ def Child(): { "op": "add", "path": "/children", - "value": [{"tagName": "div", "children": [{"tagName": "h1"}]}], + "value": [ + { + "children": [ + { + "children": [ + { + "children": [{"tagName": "h1"}], + "tagName": "div", + } + ], + "tagName": "", + } + ], + "tagName": "div", + } + ], }, - {"op": "add", "path": "/tagName", "value": "div"}, + {"op": "add", "path": "/tagName", "value": ""}, ], ) @@ -422,7 +465,7 @@ def Child(): hook.latest.schedule_render() update = await render_json_patch(layout) - assert update.path == "/children/0/children/0" + assert update.path == "/children/0/children/0/children/0" async def test_log_on_dispatch_to_missing_event_handler(caplog): From 35e5b9943f7311a9d7e1aa54eb047afff90f6a61 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 16 Feb 2022 23:39:42 -0800 Subject: [PATCH 019/253] fix errors --- docs/source/_custom_js/package-lock.json | 2 +- src/idom/core/layout.py | 14 ++++-- src/idom/html.py | 14 ++++++ tests/test_core/test_layout.py | 54 ++++++++++++++++++------ 4 files changed, 67 insertions(+), 17 deletions(-) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 2749a0445..7362825e4 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.36.1", + "version": "0.36.2", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index afd9ff723..5232995d7 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -417,10 +417,18 @@ def _render_model_children( def _render_model_children_without_old_state( self, new_state: _ModelState, raw_children: List[Any] ) -> None: + child_type_key_tuples = list(_process_child_type_and_key(raw_children)) + + new_keys = {item[2] for item in child_type_key_tuples} + if len(new_keys) != len(raw_children): + key_counter = Counter(item[2] for item in child_type_key_tuples) + duplicate_keys = [key for key, count in key_counter.items() if count > 1] + raise ValueError( + f"Duplicate keys {duplicate_keys} at {new_state.patch_path or '/'!r}" + ) + new_children = new_state.model.current["children"] = [] - for index, (child, child_type, key) in enumerate( - _process_child_type_and_key(raw_children) - ): + for index, (child, child_type, key) in enumerate(child_type_key_tuples): if child_type is _DICT_TYPE: child_state = _make_element_model_state(new_state, index, key) self._render_model(None, child_state, child) diff --git a/src/idom/html.py b/src/idom/html.py index dd7ac24af..c5e4fbfc6 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -1,4 +1,8 @@ """ +**Fragment** + +- :func:`_` + **Dcument metadata** - :func:`base` @@ -148,6 +152,8 @@ - :func:`slot` - :func:`template` + +.. autofunction:: _ """ from __future__ import annotations @@ -158,6 +164,14 @@ from .core.vdom import coalesce_attributes_and_children, make_vdom_constructor +def _(*children: Any) -> VdomDict: + """An HTML fragment - this element will not appear in the DOM""" + attributes, children = coalesce_attributes_and_children(children) + if attributes: + raise ValueError("Fragments cannot have attributes") + return {"tagName": "", "children": children} + + # Dcument metadata base = make_vdom_constructor("base") head = make_vdom_constructor("head") diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 1fa4669e8..babd5521f 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -148,7 +148,7 @@ def Child(): child_set_state.current(1) path, changes = await render_json_patch(layout) - assert path == "/children/1" + assert path == "/children/0/children/1" assert changes == [ {"op": "replace", "path": "/children/0/children/0", "value": "1"} ] @@ -225,21 +225,31 @@ def BadChild(): assert_same_items( patch.changes, [ - {"op": "add", "path": "/tagName", "value": ""}, { "op": "add", "path": "/children", "value": [ { "children": [ - {"children": [...], "tagName": ""}, + { + "children": [ + {"children": ["hello"], "tagName": "div"} + ], + "tagName": "", + }, {"error": "", "tagName": ""}, - {"children": [...], "tagName": ""}, + { + "children": [ + {"children": ["hello"], "tagName": "div"} + ], + "tagName": "", + }, ], "tagName": "div", } ], }, + {"op": "add", "path": "/tagName", "value": ""}, ], ) @@ -598,9 +608,14 @@ def Inner(): { "op": "add", "path": "/children", - "value": [{"children": ["hello"], "tagName": "div"}], + "value": [ + { + "children": [{"children": ["hello"], "tagName": "div"}], + "tagName": "", + } + ], }, - {"op": "add", "path": "/tagName", "value": "div"}, + {"op": "add", "path": "/tagName", "value": ""}, ], ) @@ -685,18 +700,31 @@ def HasNestedEventHandler(): async def test_duplicate_sibling_keys_causes_error(caplog): + hook = HookCatcher() + @idom.component + @hook.capture def ComponentReturnsDuplicateKeys(): return idom.html.div( - idom.html.div(key="duplicate"), idom.html.div(key="duplicate") + idom.html.div(key="duplicate"), + idom.html.div(key="duplicate"), ) - with assert_idom_logged( - error_type=ValueError, - match_error=r"Duplicate keys \['duplicate'\] at '/'", - clear_matched_records=True, - ): - with idom.Layout(ComponentReturnsDuplicateKeys()) as layout: + with idom.Layout(ComponentReturnsDuplicateKeys()) as layout: + with assert_idom_logged( + error_type=ValueError, + match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", + clear_matched_records=True, + ): + await layout.render() + + hook.latest.schedule_render() + + with assert_idom_logged( + error_type=ValueError, + match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", + clear_matched_records=True, + ): await layout.render() From c8e718103e4e694fff4037a67307450dd8b95db5 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 16 Feb 2022 23:43:55 -0800 Subject: [PATCH 020/253] allow components to return None --- src/idom/core/layout.py | 5 ++++- src/idom/core/proto.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 5232995d7..ce75f69c6 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -203,7 +203,10 @@ def _render_component( # wrap the model in a fragment (i.e. tagName="") to ensure components have # a separate node in the model state tree. This could be removed if this # components are given a node in the tree some other way - raw_model = {"tagName": "", "children": [raw_model]} + raw_model = { + "tagName": "", + "children": [] if raw_model is None else [raw_model], + } self._render_model(old_state, new_state, raw_model) except Exception as error: diff --git a/src/idom/core/proto.py b/src/idom/core/proto.py index 8a5782ca8..5415c4a07 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/proto.py @@ -39,7 +39,7 @@ def definition_id(self) -> int: Usually the :func:`id` of this class or an underlying function. """ - def render(self) -> VdomDict: + def render(self) -> VdomDict | ComponentType | None: """Render the component's :class:`VdomDict`.""" From 009cea21edc16717a065b04bbcc75527f85f17f4 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 16 Feb 2022 23:52:37 -0800 Subject: [PATCH 021/253] fix one more test --- tests/test_core/test_layout.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index babd5521f..412c2b727 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -185,15 +185,30 @@ def BadChild(): "op": "add", "path": "/children", "value": [ - {"tagName": "div", "children": ["hello"]}, { - "tagName": "", - "error": "ValueError: error from bad child", - }, - {"tagName": "div", "children": ["hello"]}, + "tagName": "div", + "children": [ + { + "tagName": "", + "children": [ + {"tagName": "div", "children": ["hello"]} + ], + }, + { + "tagName": "", + "error": "ValueError: error from bad child", + }, + { + "tagName": "", + "children": [ + {"tagName": "div", "children": ["hello"]} + ], + }, + ], + } ], }, - {"op": "add", "path": "/tagName", "value": "div"}, + {"op": "add", "path": "/tagName", "value": ""}, ], ) From 896771c5d4d1825d2299875da1be568efca4cb95 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 17 Feb 2022 21:28:09 -0800 Subject: [PATCH 022/253] add tests for coverage --- src/idom/core/component.py | 41 ++++++------ src/idom/core/layout.py | 23 +++---- src/idom/core/proto.py | 11 ++-- src/idom/html.py | 2 +- tests/test_core/test_layout.py | 112 ++++++++++++++++++++++++++++++--- tests/test_html.py | 9 +++ 6 files changed, 145 insertions(+), 53 deletions(-) diff --git a/src/idom/core/component.py b/src/idom/core/component.py index 6ef8c9291..95b90941b 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -8,28 +8,26 @@ def component( - function: Callable[..., Union[ComponentType, VdomDict]] + function: Callable[..., Union[ComponentType, VdomDict | None]] ) -> Callable[..., "Component"]: - """A decorator for defining an :class:`Component`. + """A decorator for defining a new component. Parameters: - function: The function that will render a :class:`VdomDict`. + function: The component's :meth:`idom.core.proto.ComponentType.render` function. """ sig = inspect.signature(function) - key_is_kwarg = "key" in sig.parameters and sig.parameters["key"].kind in ( + + if "key" in sig.parameters and sig.parameters["key"].kind in ( inspect.Parameter.KEYWORD_ONLY, inspect.Parameter.POSITIONAL_OR_KEYWORD, - ) - if key_is_kwarg: + ): raise TypeError( f"Component render function {function} uses reserved parameter 'key'" ) @wraps(function) def constructor(*args: Any, key: Optional[Any] = None, **kwargs: Any) -> Component: - if key_is_kwarg: - kwargs["key"] = key - return Component(function, key, args, kwargs) + return Component(function, key, args, kwargs, sig) return constructor @@ -37,7 +35,7 @@ def constructor(*args: Any, key: Optional[Any] = None, **kwargs: Any) -> Compone class Component: """An object for rending component models.""" - __slots__ = "__weakref__", "_func", "_args", "_kwargs", "key" + __slots__ = "__weakref__", "_func", "_args", "_kwargs", "_sig", "key", "type" def __init__( self, @@ -45,28 +43,25 @@ def __init__( key: Optional[Any], args: Tuple[Any, ...], kwargs: Dict[str, Any], + sig: inspect.Signature, ) -> None: + self.key = key + self.type = function self._args = args - self._func = function self._kwargs = kwargs - self.key = key - - @property - def definition_id(self) -> int: - return id(self._func) + self._sig = sig - def render(self) -> VdomDict: - return self._func(*self._args, **self._kwargs) + def render(self) -> VdomDict | ComponentType | None: + return self.type(*self._args, **self._kwargs) def __repr__(self) -> str: - sig = inspect.signature(self._func) try: - args = sig.bind(*self._args, **self._kwargs).arguments + args = self._sig.bind(*self._args, **self._kwargs).arguments except TypeError: - return f"{self._func.__name__}(...)" + return f"{self.type.__name__}(...)" else: items = ", ".join(f"{k}={v!r}" for k, v in args.items()) if items: - return f"{self._func.__name__}({id(self):02x}, {items})" + return f"{self.type.__name__}({id(self):02x}, {items})" else: - return f"{self._func.__name__}({id(self):02x})" + return f"{self.type.__name__}({id(self):02x})" diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index ce75f69c6..cf55b5ebd 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -18,6 +18,7 @@ Set, Tuple, TypeVar, + cast, ) from uuid import uuid4 from weakref import ref as weakref @@ -203,12 +204,11 @@ def _render_component( # wrap the model in a fragment (i.e. tagName="") to ensure components have # a separate node in the model state tree. This could be removed if this # components are given a node in the tree some other way - raw_model = { - "tagName": "", - "children": [] if raw_model is None else [raw_model], - } + wrapper_model = {"tagName": ""} + if raw_model is not None: + wrapper_model["children"] = [raw_model] - self._render_model(old_state, new_state, raw_model) + self._render_model(old_state, new_state, wrapper_model) except Exception as error: logger.exception(f"Failed to render {component}") new_state.model.current = { @@ -242,15 +242,6 @@ def _render_model( new_state.key = new_state.model.current["key"] = raw_model["key"] if "importSource" in raw_model: new_state.model.current["importSource"] = raw_model["importSource"] - - if old_state is not None and old_state.key != new_state.key: - self._unmount_model_states([old_state]) - if new_state.is_component_state: - self._model_states_by_life_cycle_state_id[ - new_state.life_cycle_state.id - ] = new_state - old_state = None - self._render_model_attributes(old_state, new_state, raw_model) self._render_model_children(old_state, new_state, raw_model.get("children", [])) @@ -380,6 +371,7 @@ def _render_model_children( new_children.append(new_child_state.model.current) new_state.children_by_key[key] = new_child_state elif child_type is _COMPONENT_TYPE: + child = cast(ComponentType, child) old_child_state = old_state.children_by_key.get(key) if old_child_state is None: new_child_state = _make_component_model_state( @@ -390,8 +382,7 @@ def _render_model_children( self._rendering_queue.put, ) elif old_child_state.is_component_state and ( - old_child_state.life_cycle_state.component.definition_id - != child.definition_id + old_child_state.life_cycle_state.component.type != child.type ): self._unmount_model_states([old_child_state]) old_child_state = None diff --git a/src/idom/core/proto.py b/src/idom/core/proto.py index 5415c4a07..785df86af 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/proto.py @@ -32,15 +32,14 @@ class ComponentType(Protocol): key: Key | None """An identifier which is unique amongst a component's immediate siblings""" - @property - def definition_id(self) -> int: - """A globally unique identifier for this component definition. + type: type[Any] | Callable[..., Any] + """The function or class defining the behavior of this component - Usually the :func:`id` of this class or an underlying function. - """ + This is used to see if two component instances share the same definition. + """ def render(self) -> VdomDict | ComponentType | None: - """Render the component's :class:`VdomDict`.""" + """Render the component's view model.""" _Self = TypeVar("_Self") diff --git a/src/idom/html.py b/src/idom/html.py index c5e4fbfc6..dcbed2e32 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -168,7 +168,7 @@ def _(*children: Any) -> VdomDict: """An HTML fragment - this element will not appear in the DOM""" attributes, children = coalesce_attributes_and_children(children) if attributes: - raise ValueError("Fragments cannot have attributes") + raise TypeError("Fragments cannot have attributes") return {"tagName": "", "children": children} diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 412c2b727..0ac7fe63e 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -13,13 +13,14 @@ from idom.core.component import component from idom.core.dispatcher import render_json_patch from idom.core.hooks import use_effect, use_state -from idom.core.layout import LayoutEvent +from idom.core.layout import Layout, LayoutEvent from idom.testing import ( HookCatcher, StaticEventHandler, assert_idom_logged, capture_idom_logs, ) +from idom.utils import Ref from tests.assert_utils import assert_same_items @@ -96,6 +97,15 @@ def SimpleComponent(): ] +async def test_component_can_return_none(): + @idom.component + def SomeComponent(): + return None + + with idom.Layout(SomeComponent()) as layout: + assert (await layout.render()).new == {"tagName": ""} + + async def test_nested_component_layout(): parent_set_state = idom.Ref(None) child_set_state = idom.Ref(None) @@ -716,14 +726,18 @@ def HasNestedEventHandler(): async def test_duplicate_sibling_keys_causes_error(caplog): hook = HookCatcher() + should_error = True @idom.component @hook.capture def ComponentReturnsDuplicateKeys(): - return idom.html.div( - idom.html.div(key="duplicate"), - idom.html.div(key="duplicate"), - ) + if should_error: + return idom.html.div( + idom.html.div(key="duplicate"), + idom.html.div(key="duplicate"), + ) + else: + return idom.html.div() with idom.Layout(ComponentReturnsDuplicateKeys()) as layout: with assert_idom_logged( @@ -735,6 +749,11 @@ def ComponentReturnsDuplicateKeys(): hook.latest.schedule_render() + should_error = False + await layout.render() + + should_error = True + hook.latest.schedule_render() with assert_idom_logged( error_type=ValueError, match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", @@ -838,9 +857,9 @@ def use_toggle(): def Root(): toggle, set_toggle.current = use_toggle() if toggle: - return idom.html.div(SomeComponent("x")) + return SomeComponent("x") else: - return idom.html.div(idom.html.div(SomeComponent("y"))) + return idom.html.div(SomeComponent("y")) @idom.component def SomeComponent(name): @@ -1063,3 +1082,82 @@ async def record_if_state_is_reset(): await layout.render() assert effect_calls_without_state == ["some-key", "key-0"] did_call_effect.clear() + + +async def test_changing_key_of_component_resets_state(): + set_key = Ref() + did_init_state = Ref(0) + hook = HookCatcher() + + @component + @hook.capture + def Root(): + key, set_key.current = use_state("key-1") + return Child(key=key) + + @component + def Child(): + use_state(lambda: did_init_state.set_current(did_init_state.current + 1)) + + with Layout(Root()) as layout: + await layout.render() + assert did_init_state.current == 1 + + set_key.current("key-2") + await layout.render() + assert did_init_state.current == 2 + + hook.latest.schedule_render() + await layout.render() + assert did_init_state.current == 2 + + +async def test_changing_event_handlers_in_the_next_render(): + set_event_name = Ref() + event_handler = StaticEventHandler() + did_trigger = Ref(False) + + @component + def Root(): + event_name, set_event_name.current = use_state("first") + return html.button( + {event_name: event_handler.use(lambda: did_trigger.set_current(True))} + ) + + with Layout(Root()) as layout: + await layout.render() + await layout.deliver(LayoutEvent(event_handler.target, [])) + assert did_trigger.current + did_trigger.current = False + + set_event_name.current("second") + await layout.render() + await layout.deliver(LayoutEvent(event_handler.target, [])) + assert did_trigger.current + did_trigger.current = False + + +async def test_change_element_to_string_causes_unmount(): + set_toggle = Ref() + did_unmount = Ref(False) + + @component + def Root(): + toggle, set_toggle.current = use_toggle(True) + if toggle: + return html.div(Child()) + else: + return html.div("some-string") + + @component + def Child(): + use_effect(lambda: lambda: did_unmount.set_current(True)) + + with Layout(Root()) as layout: + await layout.render() + + set_toggle.current() + + await layout.render() + + assert did_unmount.current diff --git a/tests/test_html.py b/tests/test_html.py index e61ef9c22..976daf419 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -142,3 +142,12 @@ def test_script_may_only_have_one_child(): def test_child_of_script_must_be_string(): with pytest.raises(ValueError, match="The child of a 'script' must be a string"): html.script(1) + + +def test_simple_fragment(): + assert html._(1, 2, 3) == {"tagName": "", "children": [1, 2, 3]} + + +def test_fragment_can_have_no_attributes(): + with pytest.raises(TypeError, match="Fragments cannot have attributes"): + html._({"some-attribute": 1}) From 0ce9ca63b7fa54a6fa9bf8c0d92a1f80b0c3ad14 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 17 Feb 2022 21:29:09 -0800 Subject: [PATCH 023/253] remove flake8 pre-commit --- .pre-commit-config.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f602709ee..2f88278c6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,10 +3,6 @@ repos: rev: 22.1.0 hooks: - id: black - - repo: https://github.com/PyCQA/flake8 - rev: 3.7.9 - hooks: - - id: flake8 - repo: https://github.com/pycqa/isort rev: 5.6.3 hooks: From e39404d1c0a4b76cd7fdd62f6034e9aadd607d9b Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 17 Feb 2022 21:58:10 -0800 Subject: [PATCH 024/253] require markupsafe<2.1 https://github.com/pallets/markupsafe/issues/283 --- requirements/pkg-extras.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements/pkg-extras.txt b/requirements/pkg-extras.txt index 4cc2425eb..3e7d3aab1 100644 --- a/requirements/pkg-extras.txt +++ b/requirements/pkg-extras.txt @@ -12,6 +12,7 @@ uvicorn[standard] >=0.13.4 # extra=flask flask<2.0 +markupsafe<2.1 flask-cors flask-sockets From dcd30c2132eaf950969f888e222a042a84539aa4 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 17 Feb 2022 22:13:18 -0800 Subject: [PATCH 025/253] fix mypy --- src/idom/core/component.py | 2 +- src/idom/core/layout.py | 4 ++-- src/idom/core/proto.py | 2 +- src/idom/html.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/idom/core/component.py b/src/idom/core/component.py index 95b90941b..04830780c 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -39,7 +39,7 @@ class Component: def __init__( self, - function: Callable[..., Union[ComponentType, VdomDict]], + function: Callable[..., ComponentType | VdomDict | None], key: Optional[Any], args: Tuple[Any, ...], kwargs: Dict[str, Any], diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index cf55b5ebd..e1e7ba027 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -32,7 +32,7 @@ from ._event_proxy import _wrap_in_warning_event_proxies from .hooks import LifeCycleHook -from .proto import ComponentType, EventHandlerDict, VdomJson +from .proto import ComponentType, EventHandlerDict, VdomDict, VdomJson from .vdom import validate_vdom_json @@ -204,7 +204,7 @@ def _render_component( # wrap the model in a fragment (i.e. tagName="") to ensure components have # a separate node in the model state tree. This could be removed if this # components are given a node in the tree some other way - wrapper_model = {"tagName": ""} + wrapper_model: VdomDict = {"tagName": ""} if raw_model is not None: wrapper_model["children"] = [raw_model] diff --git a/src/idom/core/proto.py b/src/idom/core/proto.py index 785df86af..4fd1c030d 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/proto.py @@ -87,7 +87,7 @@ class _VdomDictOptional(TypedDict, total=False): children: Sequence[ # recursive types are not allowed yet: # https://github.com/python/mypy/issues/731 - Union[ComponentType, Dict[str, Any], str] + Union[ComponentType, Dict[str, Any], str, Any] ] attributes: VdomAttributes eventHandlers: EventHandlerDict # noqa diff --git a/src/idom/html.py b/src/idom/html.py index dcbed2e32..ace4dc862 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -166,10 +166,10 @@ def _(*children: Any) -> VdomDict: """An HTML fragment - this element will not appear in the DOM""" - attributes, children = coalesce_attributes_and_children(children) + attributes, coalesced_children = coalesce_attributes_and_children(children) if attributes: raise TypeError("Fragments cannot have attributes") - return {"tagName": "", "children": children} + return {"tagName": "", "children": coalesced_children} # Dcument metadata From 3748f386d5112e88ca1095c53a32d322585aa854 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 18 Feb 2022 00:45:43 -0800 Subject: [PATCH 026/253] release 0.36.3 (#679) --- VERSION | 2 +- docs/source/developing-idom/changelog.rst | 17 +++++++++++++++++ scripts/changes_since_release.py | 6 +++--- src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- .../packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 8 files changed, 29 insertions(+), 12 deletions(-) diff --git a/VERSION b/VERSION index d647c8a44..1d3b40ecf 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.36.2 +0.36.3 diff --git a/docs/source/developing-idom/changelog.rst b/docs/source/developing-idom/changelog.rst index 1cadde992..ab678f088 100644 --- a/docs/source/developing-idom/changelog.rst +++ b/docs/source/developing-idom/changelog.rst @@ -7,6 +7,23 @@ team are working on, or have feedback on how issues should be prioritized, feel :discussion-type:`open up a discussion `. +0.36.3 +------ + +Misc bug fixes along with a minor improvement that allows components to return ``None`` +to render nothing. + +**Closed Issues** + +- All child states wiped upon any child key change - :issue:`652` +- Allow NoneType returns within components - :issue:`538` + +**Merged Pull Requests** + +- fix #652 - :pull:`672` +- Fix 663 - :pull:`667` + + 0.36.2 ------ diff --git a/scripts/changes_since_release.py b/scripts/changes_since_release.py index 3ec174a65..dfaa840dc 100644 --- a/scripts/changes_since_release.py +++ b/scripts/changes_since_release.py @@ -12,20 +12,20 @@ SECTION_FORMAT_TEMPLATES = { "md": lambda title: f"# {title}", - "rst": lambda title: f"**{title}**", + "rst": lambda title: f"**{title}**\n", "text": lambda title: f"{title}\n{'-' * len(title)}", } ISSUE_FORMAT_TEMPLATES = { "md": lambda title, number, **_: f"- {title} - [#{number}](https://github.com/{REPO_NAME}/issues/{number})", - "rst": lambda title, number, **_: f"- {title} - :pull:`{number}`", + "rst": lambda title, number, **_: f"- {title} - :issue:`{number}`", "text": lambda title, number, **_: f"- {title} - #{number}", } PULL_REQUEST_FORMAT_TEMPLATES = { "md": lambda title, number, **_: f"- {title} - [#{number}](https://github.com/{REPO_NAME}/pull/{number})", - "rst": lambda title, number, **_: f"- {title} - :issue:`{number}`", + "rst": lambda title, number, **_: f"- {title} - :pull:`{number}`", "text": lambda title, number, **_: f"- {title} - #{number}", } diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 2b866c249..18339d470 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.36.2", + "version": "0.36.3", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.36.2", + "version": "0.36.3", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.36.2", + "version": "0.36.3", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.36.2", + "version": "0.36.3", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 4f69ed8b3..02bb4cb6a 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.36.2", + "version": "0.36.3", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index ffba6adbc..0e1ded781 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.36.2" + "version": "0.36.3" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 9e4f9fa64..9ad405ba0 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.36.2" + "version": "0.36.3" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index a6956c68d..3d2324140 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -21,7 +21,7 @@ __author__ = "idom-team" -__version__ = "0.36.2" # DO NOT MODIFY +__version__ = "0.36.3" # DO NOT MODIFY __all__ = [ "component", From e8ae05a0c6a1cb0f1d425d155f014776adf4dfc1 Mon Sep 17 00:00:00 2001 From: Alessio Civitillo <54931660+acivitillo@users.noreply.github.com> Date: Sat, 19 Feb 2022 21:46:52 +0100 Subject: [PATCH 027/253] docs for components sharing state (#571) * docs for components sharing state * Add new line to end of file * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/data.json * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/data.json * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/data.json * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/data.json * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/app.py * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/app.py * Update docs/source/adding-interactivity/components-sharing-state/_examples/filterable_list/data.json * making syncedinputs an example, moving to managing-state * fixing isort import issue in shared-component-state examples * fixing link references * fixing docker build by upgrading npm and fast-json-path * Update noxfile.py Co-authored-by: Alessio Civitillo <@acivitillo@dyvenia.com> Co-authored-by: Ryan Morshead --- docs/Dockerfile | 2 +- docs/source/_custom_js/package-lock.json | 254 ++++++++++++++---- .../components-with-state/index.rst | 2 +- docs/source/managing-state/index.rst | 14 +- .../managing-state/shared-component-state.rst | 8 - .../_examples/filterable_list/app.py | 45 ++++ .../_examples/filterable_list/data.json | 22 ++ .../_examples/synced_inputs/app.py | 23 ++ .../shared-component-state/index.rst | 35 +++ src/client/package-lock.json | 4 +- 10 files changed, 344 insertions(+), 65 deletions(-) delete mode 100644 docs/source/managing-state/shared-component-state.rst create mode 100644 docs/source/managing-state/shared-component-state/_examples/filterable_list/app.py create mode 100644 docs/source/managing-state/shared-component-state/_examples/filterable_list/data.json create mode 100644 docs/source/managing-state/shared-component-state/_examples/synced_inputs/app.py create mode 100644 docs/source/managing-state/shared-component-state/index.rst diff --git a/docs/Dockerfile b/docs/Dockerfile index 0a6cc87f2..8ace7d671 100644 --- a/docs/Dockerfile +++ b/docs/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /app/ # -------------- RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - RUN apt-get install -yq nodejs build-essential -RUN npm install -g npm@7.13.0 +RUN npm install -g npm@8.5.0 # Create Python Venv # ------------------ diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 7362825e4..16c643f2a 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -20,6 +20,7 @@ }, "../../../src/client/packages/idom-client-react": { "version": "0.36.2", + "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", @@ -36,10 +37,21 @@ "react-dom": ">=16" } }, + "../../../src/client/packages/idom-client-react/node_modules/fast-json-patch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz", + "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==" + }, + "../../../src/client/packages/idom-client-react/node_modules/htm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.0.tgz", + "integrity": "sha512-L0s3Sid5r6YwrEvkig14SK3Emmc+kIjlfLhEGn2Vy3bk21JyDEes4MoDsbJk6luaPp8bugErnxPz86ZuAw6e5Q==" + }, "node_modules/@rollup/plugin-commonjs": { "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "commondir": "^1.0.1", @@ -58,13 +70,15 @@ }, "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true }, "node_modules/@rollup/plugin-node-resolve": { "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz", + "integrity": "sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "@types/resolve": "1.17.1", @@ -82,16 +96,18 @@ }, "node_modules/@rollup/plugin-node-resolve/node_modules/@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@rollup/plugin-replace": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", + "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", "dev": true, - "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -102,8 +118,9 @@ }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -118,33 +135,39 @@ }, "node_modules/@rollup/pluginutils/node_modules/@types/estree": { "version": "0.0.39", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, "node_modules/@rollup/pluginutils/node_modules/estree-walker": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true }, "node_modules/@types/estree": { "version": "0.0.48", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "dev": true }, "node_modules/@types/node": { "version": "15.12.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", + "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", + "dev": true }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -152,8 +175,9 @@ }, "node_modules/builtin-modules": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -163,36 +187,56 @@ }, "node_modules/commondir": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/deepmerge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "license": "ISC" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, "node_modules/function-bind": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -210,8 +254,9 @@ }, "node_modules/has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.1" }, @@ -225,8 +270,9 @@ }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -234,13 +280,15 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/is-core-module": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, - "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -250,29 +298,33 @@ }, "node_modules/is-module": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true }, "node_modules/is-reference": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/magic-string": { "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, - "license": "MIT", "dependencies": { "sourcemap-codec": "^1.4.4" } }, "node_modules/minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -282,29 +334,33 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/picomatch": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -314,8 +370,9 @@ }, "node_modules/prettier": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -325,8 +382,9 @@ }, "node_modules/resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -337,8 +395,9 @@ }, "node_modules/rollup": { "version": "2.52.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.1.tgz", + "integrity": "sha512-/SPqz8UGnp4P1hq6wc9gdTqA2bXQXGx13TtoL03GBm6qGRI6Hm3p4Io7GeiHNLl0BsQAne1JNYY+q/apcY933w==", "dev": true, - "license": "MIT", "bin": { "rollup": "dist/bin/rollup" }, @@ -351,18 +410,22 @@ }, "node_modules/sourcemap-codec": { "version": "1.4.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true } }, "dependencies": { "@rollup/plugin-commonjs": { "version": "21.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-21.0.1.tgz", + "integrity": "sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -376,12 +439,16 @@ "dependencies": { "estree-walker": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true } } }, "@rollup/plugin-node-resolve": { "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.1.1.tgz", + "integrity": "sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -394,6 +461,8 @@ "dependencies": { "@types/resolve": { "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", "dev": true, "requires": { "@types/node": "*" @@ -403,6 +472,8 @@ }, "@rollup/plugin-replace": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-3.0.0.tgz", + "integrity": "sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==", "dev": true, "requires": { "@rollup/pluginutils": "^3.1.0", @@ -411,6 +482,8 @@ }, "@rollup/pluginutils": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, "requires": { "@types/estree": "0.0.39", @@ -420,28 +493,40 @@ "dependencies": { "@types/estree": { "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, "estree-walker": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", "dev": true } } }, "@types/estree": { "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", "dev": true }, "@types/node": { "version": "15.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", + "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==", "dev": true }, "balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, "brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -450,30 +535,51 @@ }, "builtin-modules": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", "dev": true }, "commondir": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, "concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "deepmerge": { "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", "dev": true }, "fs.realpath": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -486,6 +592,8 @@ }, "has": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" @@ -500,10 +608,24 @@ "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" + }, + "dependencies": { + "fast-json-patch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.0.tgz", + "integrity": "sha512-IhpytlsVTRndz0hU5t0/MGzS/etxLlfrpG5V5M9mVbuj9TrJLWaMfsox9REM5rkuGX0T+5qjpe8XA1o0gZ42nA==" + }, + "htm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.1.0.tgz", + "integrity": "sha512-L0s3Sid5r6YwrEvkig14SK3Emmc+kIjlfLhEGn2Vy3bk21JyDEes4MoDsbJk6luaPp8bugErnxPz86ZuAw6e5Q==" + } } }, "inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -512,10 +634,14 @@ }, "inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, "is-core-module": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", "dev": true, "requires": { "has": "^1.0.3" @@ -523,10 +649,14 @@ }, "is-module": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", "dev": true }, "is-reference": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, "requires": { "@types/estree": "*" @@ -534,6 +664,8 @@ }, "magic-string": { "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", "dev": true, "requires": { "sourcemap-codec": "^1.4.4" @@ -541,6 +673,8 @@ }, "minimatch": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -548,6 +682,8 @@ }, "once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -555,22 +691,32 @@ }, "path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-parse": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "picomatch": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, "prettier": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz", + "integrity": "sha512-p+vNbgpLjif/+D+DwAZAbndtRrR0md0MwfmOVN9N+2RgyACMT+7tfaRnT+WDPkqnuVwleyuBIG2XBxKDme3hPA==", "dev": true }, "resolve": { "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { "is-core-module": "^2.2.0", @@ -579,6 +725,8 @@ }, "rollup": { "version": "2.52.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.52.1.tgz", + "integrity": "sha512-/SPqz8UGnp4P1hq6wc9gdTqA2bXQXGx13TtoL03GBm6qGRI6Hm3p4Io7GeiHNLl0BsQAne1JNYY+q/apcY933w==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -586,11 +734,15 @@ }, "sourcemap-codec": { "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, "wrappy": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true } } -} +} \ No newline at end of file diff --git a/docs/source/adding-interactivity/components-with-state/index.rst b/docs/source/adding-interactivity/components-with-state/index.rst index 2542d97bb..14d46302b 100644 --- a/docs/source/adding-interactivity/components-with-state/index.rst +++ b/docs/source/adding-interactivity/components-with-state/index.rst @@ -340,7 +340,7 @@ it. The parent component can’t change it. This lets you add state to any compo remove it without impacting the rest of the components. .. card:: - :link: /managing-state/shared-component-state + :link: /managing-state/shared-component-state/index :link-type: doc :octicon:`book` Read More diff --git a/docs/source/managing-state/index.rst b/docs/source/managing-state/index.rst index 4ef9850ac..73c67e2c6 100644 --- a/docs/source/managing-state/index.rst +++ b/docs/source/managing-state/index.rst @@ -7,8 +7,18 @@ Managing State keeping-components-pure logical-flow-of-state structuring-your-state - shared-component-state + shared-component-state/index when-to-reset-state writing-tests -Under construction 🚧 + + +Section 4: Shared Component State +--------------------------------- + +Sometimes you want the state of two components to always change together. To do it, you +need to be able to share state between those two components, to share state between +componets move state to the nearest parent. In React world this is known as "lifting +state up" and it is a very common thing to do. Let's look at 2 examples, also from +`React `__, +but translated to IDOM. \ No newline at end of file diff --git a/docs/source/managing-state/shared-component-state.rst b/docs/source/managing-state/shared-component-state.rst deleted file mode 100644 index 3c9f66617..000000000 --- a/docs/source/managing-state/shared-component-state.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _Shared Component State: - -Shared Component State 🚧 -========================= - -.. note:: - - Under construction 🚧 diff --git a/docs/source/managing-state/shared-component-state/_examples/filterable_list/app.py b/docs/source/managing-state/shared-component-state/_examples/filterable_list/app.py new file mode 100644 index 000000000..9b0658371 --- /dev/null +++ b/docs/source/managing-state/shared-component-state/_examples/filterable_list/app.py @@ -0,0 +1,45 @@ +import json +from pathlib import Path + +from idom import component, hooks, html, run + + +HERE = Path(__file__) +DATA_PATH = HERE.parent / "data.json" +food_data = json.loads(DATA_PATH.read_text()) + + +@component +def FilterableList(): + value, set_value = hooks.use_state("") + return html.p(Search(value, set_value), html.hr(), Table(value, set_value)) + + +@component +def Search(value, set_value): + def handle_change(event): + set_value(event["target"]["value"]) + + return html.label( + "Search by Food Name: ", html.input({"value": value, "onChange": handle_change}) + ) + + +@component +def Table(value, set_value): + rows = [] + for row in food_data: + name = html.td(row["name"]) + descr = html.td(row["description"]) + tr = html.tr(name, descr, value) + if value == "": + rows.append(tr) + else: + if value.lower() in row["name"].lower(): + rows.append(tr) + headers = html.tr(html.td(html.b("name")), html.td(html.b("description"))) + table = html.table(html.thead(headers), html.tbody(rows)) + return table + + +run(FilterableList) diff --git a/docs/source/managing-state/shared-component-state/_examples/filterable_list/data.json b/docs/source/managing-state/shared-component-state/_examples/filterable_list/data.json new file mode 100644 index 000000000..f977fe9a7 --- /dev/null +++ b/docs/source/managing-state/shared-component-state/_examples/filterable_list/data.json @@ -0,0 +1,22 @@ +[ + { + "name": "Sushi", + "description": "Sushi is a traditional Japanese dish of prepared vinegared rice" + }, + { + "name": "Dal", + "description": "The most common way of preparing dal is in the form of a soup to which onions, tomatoes and various spices may be added" + }, + { + "name": "Pierogi", + "description": "Pierogi are filled dumplings made by wrapping unleavened dough around a savoury or sweet filling and cooking in boiling water" + }, + { + "name": "Shish Kebab", + "description": "Shish kebab is a popular meal of skewered and grilled cubes of meat" + }, + { + "name": "Dim sum", + "description": "Dim sum is a large range of small dishes that Cantonese people traditionally enjoy in restaurants for breakfast and lunch" + } +] diff --git a/docs/source/managing-state/shared-component-state/_examples/synced_inputs/app.py b/docs/source/managing-state/shared-component-state/_examples/synced_inputs/app.py new file mode 100644 index 000000000..dcc3e1246 --- /dev/null +++ b/docs/source/managing-state/shared-component-state/_examples/synced_inputs/app.py @@ -0,0 +1,23 @@ +from idom import component, hooks, html, run + + +@component +def SyncedInputs(): + value, set_value = hooks.use_state("") + return html.p( + Input("First input", value, set_value), + Input("Second input", value, set_value), + ) + + +@component +def Input(label, value, set_value): + def handle_change(event): + set_value(event["target"]["value"]) + + return html.label( + label + " ", html.input({"value": value, "onChange": handle_change}) + ) + + +run(SyncedInputs) diff --git a/docs/source/managing-state/shared-component-state/index.rst b/docs/source/managing-state/shared-component-state/index.rst new file mode 100644 index 000000000..8d4f30b28 --- /dev/null +++ b/docs/source/managing-state/shared-component-state/index.rst @@ -0,0 +1,35 @@ +Shared Component State +====================== + + +Sometimes you want the state of two components to always change together. To do it, you +need to be able to share state between those two components, to share state between +componets move state to the nearest parent. In React world this is known as "lifting +state up" and it is a very common thing to do. Let's look at 2 examples, also from +`React `__, +but translated to IDOM. + +Synced Inputs +------------- + +In the code below the two input boxes are syncronized, this happens because they share +state. The state is shared via the parent component ``SyncedInputs``. Check the ``value`` +and ``set_value`` variables. + +.. idom:: _examples/synced_inputs + +Filterable List +---------------- + +In the example below the search input and the list of elements below share the +same state, the state represents the food name. + +Note how the component ``Table`` gets called at each change of state. The +component is observing the state and reacting to state changes automatically, +just like it would do in React. + +.. idom:: _examples/filterable_list + +.. note:: + + Try typing a food name in the search bar. diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 18339d470..c3a6b916d 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -701,7 +701,7 @@ "dev": true }, "node_modules/fast-json-patch": { - "version": "3.0.0-1", + "version": "3.1.0", "license": "MIT" }, "node_modules/fast-json-stable-stringify": { @@ -3217,7 +3217,7 @@ "dev": true }, "fast-json-patch": { - "version": "3.0.0-1" + "version": "3.1.0" }, "fast-json-stable-stringify": { "version": "2.1.0", From 9546b52a062ffcac2f0fbcc74c2cf26b2f57f077 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 19 Feb 2022 13:13:15 -0800 Subject: [PATCH 028/253] clean up docs --- docs/source/_custom_js/package-lock.json | 4 +- .../_static/css/furo-theme-overrides.css | 4 ++ docs/source/managing-state/index.rst | 59 +++++++++++++++---- .../keeping-components-pure.rst | 8 --- .../managing-state/logical-flow-of-state.rst | 8 --- .../shared-component-state/index.rst | 12 ++-- .../index.rst} | 0 .../index.rst} | 4 +- docs/source/understanding-idom/index.rst | 1 + .../writing-tests.rst | 0 10 files changed, 63 insertions(+), 37 deletions(-) delete mode 100644 docs/source/managing-state/keeping-components-pure.rst delete mode 100644 docs/source/managing-state/logical-flow-of-state.rst rename docs/source/managing-state/{structuring-your-state.rst => structuring-your-state/index.rst} (100%) rename docs/source/managing-state/{when-to-reset-state.rst => when-and-how-to-reset-state/index.rst} (50%) rename docs/source/{managing-state => understanding-idom}/writing-tests.rst (100%) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 16c643f2a..e9d3f4374 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.36.2", + "version": "0.36.3", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { @@ -745,4 +745,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/docs/source/_static/css/furo-theme-overrides.css b/docs/source/_static/css/furo-theme-overrides.css index f23c23168..71875b4f2 100644 --- a/docs/source/_static/css/furo-theme-overrides.css +++ b/docs/source/_static/css/furo-theme-overrides.css @@ -2,3 +2,7 @@ body { --admonition-title-font-size: 1rem !important; --admonition-font-size: 1rem !important; } + +.sidebar-container { + width: 16em; +} diff --git a/docs/source/managing-state/index.rst b/docs/source/managing-state/index.rst index 73c67e2c6..53dc5db26 100644 --- a/docs/source/managing-state/index.rst +++ b/docs/source/managing-state/index.rst @@ -4,21 +4,58 @@ Managing State .. toctree:: :hidden: - keeping-components-pure - logical-flow-of-state - structuring-your-state + structuring-your-state/index shared-component-state/index - when-to-reset-state - writing-tests + when-and-how-to-reset-state/index +.. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn + :color: info + :animate: fade-in + :open: + + .. grid:: 1 2 2 2 + + .. grid-item-card:: :octicon:`code-square` Structuring Your State + :link: structuring-your-state/index + :link-type: doc + + Make it easy to reason about your application by organizing its state. + + .. grid-item-card:: :octicon:`link` Shared Component State + :link: shared-component-state/index + :link-type: doc + + Allow components to vary vary together, by lifting state into common + parents. + + .. grid-item-card:: :octicon:`light-bulb` When and How to Reset State + :link: when-and-how-to-reset-state/index + :link-type: doc + + Control if and how state is preserved by understanding it's relationship to + the "UI tree". Section 4: Shared Component State --------------------------------- -Sometimes you want the state of two components to always change together. To do it, you -need to be able to share state between those two components, to share state between -componets move state to the nearest parent. In React world this is known as "lifting -state up" and it is a very common thing to do. Let's look at 2 examples, also from -`React `__, -but translated to IDOM. \ No newline at end of file +Sometimes, you want the state of two components to always change together. To do it, +remove state from both of them, move it to their closest common parent, and then pass it +down to them via props. This is known as “lifting state up”, and it’s one of the most +common things you will do writing code with IDOM. + +In the example below the search input and the list of elements below share the same +state, the state represents the food name. Note how the component ``Table`` gets called +at each change of state. The component is observing the state and reacting to state +changes automatically, just like it would do in React. + +.. idom:: shared-component-state/_examples/synced_inputs + +.. card:: + :link: shared-component-state/index + :link-type: doc + + :octicon:`book` Read More + ^^^^^^^^^^^^^^^^^^^^^^^^^ + + Allow components to vary vary together, by lifting state into common parents. diff --git a/docs/source/managing-state/keeping-components-pure.rst b/docs/source/managing-state/keeping-components-pure.rst deleted file mode 100644 index a2fc1a15b..000000000 --- a/docs/source/managing-state/keeping-components-pure.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _Keeping Components Pure: - -Keeping Components Pure 🚧 -========================== - -.. note:: - - Under construction 🚧 diff --git a/docs/source/managing-state/logical-flow-of-state.rst b/docs/source/managing-state/logical-flow-of-state.rst deleted file mode 100644 index 53bf0cff9..000000000 --- a/docs/source/managing-state/logical-flow-of-state.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _Logical Flow of State: - -Logical Flow of State 🚧 -======================== - -.. note:: - - Under construction 🚧 diff --git a/docs/source/managing-state/shared-component-state/index.rst b/docs/source/managing-state/shared-component-state/index.rst index 8d4f30b28..14422f742 100644 --- a/docs/source/managing-state/shared-component-state/index.rst +++ b/docs/source/managing-state/shared-component-state/index.rst @@ -3,16 +3,16 @@ Shared Component State Sometimes you want the state of two components to always change together. To do it, you -need to be able to share state between those two components, to share state between -componets move state to the nearest parent. In React world this is known as "lifting -state up" and it is a very common thing to do. Let's look at 2 examples, also from -`React `__, +need to be able to share state between those two components, to share state between +components move state to the nearest parent. In React world this is known as "lifting +state up" and it is a very common thing to do. Let's look at 2 examples, also from +`React `__, but translated to IDOM. Synced Inputs ------------- -In the code below the two input boxes are syncronized, this happens because they share +In the code below the two input boxes are synchronized, this happens because they share state. The state is shared via the parent component ``SyncedInputs``. Check the ``value`` and ``set_value`` variables. @@ -25,7 +25,7 @@ In the example below the search input and the list of elements below share the same state, the state represents the food name. Note how the component ``Table`` gets called at each change of state. The -component is observing the state and reacting to state changes automatically, +component is observing the state and reacting to state changes automatically, just like it would do in React. .. idom:: _examples/filterable_list diff --git a/docs/source/managing-state/structuring-your-state.rst b/docs/source/managing-state/structuring-your-state/index.rst similarity index 100% rename from docs/source/managing-state/structuring-your-state.rst rename to docs/source/managing-state/structuring-your-state/index.rst diff --git a/docs/source/managing-state/when-to-reset-state.rst b/docs/source/managing-state/when-and-how-to-reset-state/index.rst similarity index 50% rename from docs/source/managing-state/when-to-reset-state.rst rename to docs/source/managing-state/when-and-how-to-reset-state/index.rst index 2a0b8c3ae..6a96f4b30 100644 --- a/docs/source/managing-state/when-to-reset-state.rst +++ b/docs/source/managing-state/when-and-how-to-reset-state/index.rst @@ -1,7 +1,7 @@ .. _When to Reset State: -When to Reset State 🚧 -====================== +When and How to Reset State 🚧 +============================== .. note:: diff --git a/docs/source/understanding-idom/index.rst b/docs/source/understanding-idom/index.rst index 5c1b94231..4c0baaf2a 100644 --- a/docs/source/understanding-idom/index.rst +++ b/docs/source/understanding-idom/index.rst @@ -10,3 +10,4 @@ Understanding IDOM why-idom-needs-keys the-rendering-process layout-render-servers + writing-tests diff --git a/docs/source/managing-state/writing-tests.rst b/docs/source/understanding-idom/writing-tests.rst similarity index 100% rename from docs/source/managing-state/writing-tests.rst rename to docs/source/understanding-idom/writing-tests.rst From 182317a5a96564cc55affe31f9c209d147decb6b Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 19 Feb 2022 22:48:26 -0800 Subject: [PATCH 029/253] remove temp file --- temp.py | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 temp.py diff --git a/temp.py b/temp.py deleted file mode 100644 index ac310c47b..000000000 --- a/temp.py +++ /dev/null @@ -1,9 +0,0 @@ -import idom - - -@idom.component -def Demo(): - return idom.vdom("", idom.html.h1("hello")) - - -idom.run(Demo) From 545f2f1000813255930a3b462269a1775545a495 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 20 Feb 2022 12:46:27 -0800 Subject: [PATCH 030/253] support keys in HTML fragments (#683) --- src/idom/html.py | 14 +++++++++++--- tests/test_html.py | 7 +++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/idom/html.py b/src/idom/html.py index ace4dc862..4865dc7e5 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -160,16 +160,24 @@ from typing import Any, Mapping -from .core.proto import VdomDict +from .core.proto import Key, VdomDict from .core.vdom import coalesce_attributes_and_children, make_vdom_constructor -def _(*children: Any) -> VdomDict: +def _(*children: Any, key: Key | None = None) -> VdomDict: """An HTML fragment - this element will not appear in the DOM""" attributes, coalesced_children = coalesce_attributes_and_children(children) if attributes: raise TypeError("Fragments cannot have attributes") - return {"tagName": "", "children": coalesced_children} + model: VdomDict = {"tagName": ""} + + if coalesced_children: + model["children"] = coalesced_children + + if key is not None: + model["key"] = key + + return model # Dcument metadata diff --git a/tests/test_html.py b/tests/test_html.py index 976daf419..cc6521efa 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -145,7 +145,14 @@ def test_child_of_script_must_be_string(): def test_simple_fragment(): + assert html._() == {"tagName": ""} assert html._(1, 2, 3) == {"tagName": "", "children": [1, 2, 3]} + assert html._(key="something") == {"tagName": "", "key": "something"} + assert html._(1, 2, 3, key="something") == { + "tagName": "", + "key": "something", + "children": [1, 2, 3], + } def test_fragment_can_have_no_attributes(): From 82a7edf43f2f1df02ae088fc68b80020a05bebaa Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 20 Feb 2022 16:49:53 -0800 Subject: [PATCH 031/253] Add Use Context Hook (#585) * implement use_context hook * refine docs and make space for docs on contexts --- .../_static/css/furo-theme-overrides.css | 2 +- .../components-with-state/index.rst | 2 +- .../escape-hatches/class-components.rst | 13 - docs/source/escape-hatches/index.rst | 1 - .../combining-contexts-and-reducers/index.rst | 6 + .../index.rst | 6 + .../index.rst | 2 +- docs/source/managing-state/index.rst | 86 +++++- .../_examples/filterable_list/app.py | 0 .../_examples/filterable_list/data.json | 0 .../_examples/synced_inputs/app.py | 0 .../index.rst | 19 +- .../index.rst | 6 + docs/source/reference-material/hooks-api.rst | 24 +- src/idom/__init__.py | 4 + src/idom/core/_thread_local.py | 25 ++ src/idom/core/component.py | 5 +- src/idom/core/hooks.py | 208 +++++++++++--- src/idom/core/layout.py | 89 ++++-- src/idom/core/proto.py | 6 + src/idom/testing.py | 10 +- tests/test_core/test_hooks.py | 266 +++++++++++++++++- tests/test_core/test_layout.py | 78 +++++ 23 files changed, 729 insertions(+), 129 deletions(-) delete mode 100644 docs/source/escape-hatches/class-components.rst create mode 100644 docs/source/managing-state/combining-contexts-and-reducers/index.rst create mode 100644 docs/source/managing-state/deeply-sharing-state-with-contexts/index.rst rename docs/source/managing-state/{structuring-your-state => how-to-structure-state}/index.rst (77%) rename docs/source/managing-state/{shared-component-state => sharing-component-state}/_examples/filterable_list/app.py (100%) rename docs/source/managing-state/{shared-component-state => sharing-component-state}/_examples/filterable_list/data.json (100%) rename docs/source/managing-state/{shared-component-state => sharing-component-state}/_examples/synced_inputs/app.py (100%) rename docs/source/managing-state/{shared-component-state => sharing-component-state}/index.rst (59%) create mode 100644 docs/source/managing-state/simplifying-updates-with-reducers/index.rst create mode 100644 src/idom/core/_thread_local.py diff --git a/docs/source/_static/css/furo-theme-overrides.css b/docs/source/_static/css/furo-theme-overrides.css index 71875b4f2..cbe4e99ef 100644 --- a/docs/source/_static/css/furo-theme-overrides.css +++ b/docs/source/_static/css/furo-theme-overrides.css @@ -4,5 +4,5 @@ body { } .sidebar-container { - width: 16em; + width: 18em; } diff --git a/docs/source/adding-interactivity/components-with-state/index.rst b/docs/source/adding-interactivity/components-with-state/index.rst index 14d46302b..93928e05d 100644 --- a/docs/source/adding-interactivity/components-with-state/index.rst +++ b/docs/source/adding-interactivity/components-with-state/index.rst @@ -340,7 +340,7 @@ it. The parent component can’t change it. This lets you add state to any compo remove it without impacting the rest of the components. .. card:: - :link: /managing-state/shared-component-state/index + :link: /managing-state/sharing-component-state/index :link-type: doc :octicon:`book` Read More diff --git a/docs/source/escape-hatches/class-components.rst b/docs/source/escape-hatches/class-components.rst deleted file mode 100644 index 5b7ec19d8..000000000 --- a/docs/source/escape-hatches/class-components.rst +++ /dev/null @@ -1,13 +0,0 @@ -.. _Class Components: - -Class Components 🚧 -=================== - -.. warning:: - - This feature has not been implemented `yet - `__. - -.. note:: - - Under construction 🚧 diff --git a/docs/source/escape-hatches/index.rst b/docs/source/escape-hatches/index.rst index ddf0be60e..f17a3beb4 100644 --- a/docs/source/escape-hatches/index.rst +++ b/docs/source/escape-hatches/index.rst @@ -4,7 +4,6 @@ Escape Hatches .. toctree:: :hidden: - class-components javascript-components distributing-javascript writing-your-own-server diff --git a/docs/source/managing-state/combining-contexts-and-reducers/index.rst b/docs/source/managing-state/combining-contexts-and-reducers/index.rst new file mode 100644 index 000000000..b9f274f0a --- /dev/null +++ b/docs/source/managing-state/combining-contexts-and-reducers/index.rst @@ -0,0 +1,6 @@ +Combining Contexts and Reducers 🚧 +================================== + +.. note:: + + Under construction 🚧 diff --git a/docs/source/managing-state/deeply-sharing-state-with-contexts/index.rst b/docs/source/managing-state/deeply-sharing-state-with-contexts/index.rst new file mode 100644 index 000000000..4a00caa48 --- /dev/null +++ b/docs/source/managing-state/deeply-sharing-state-with-contexts/index.rst @@ -0,0 +1,6 @@ +Deeply Sharing State with Contexts 🚧 +===================================== + +.. note:: + + Under construction 🚧 diff --git a/docs/source/managing-state/structuring-your-state/index.rst b/docs/source/managing-state/how-to-structure-state/index.rst similarity index 77% rename from docs/source/managing-state/structuring-your-state/index.rst rename to docs/source/managing-state/how-to-structure-state/index.rst index 68209cccf..5092370a5 100644 --- a/docs/source/managing-state/structuring-your-state/index.rst +++ b/docs/source/managing-state/how-to-structure-state/index.rst @@ -1,6 +1,6 @@ .. _Structuring Your State: -Structuring Your State 🚧 +How to Structure State 🚧 ========================= .. note:: diff --git a/docs/source/managing-state/index.rst b/docs/source/managing-state/index.rst index 53dc5db26..971c563b4 100644 --- a/docs/source/managing-state/index.rst +++ b/docs/source/managing-state/index.rst @@ -4,9 +4,12 @@ Managing State .. toctree:: :hidden: - structuring-your-state/index - shared-component-state/index + how-to-structure-state/index + sharing-component-state/index when-and-how-to-reset-state/index + simplifying-updates-with-reducers/index + deeply-sharing-state-with-contexts/index + combining-contexts-and-reducers/index .. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn :color: info @@ -15,14 +18,15 @@ Managing State .. grid:: 1 2 2 2 - .. grid-item-card:: :octicon:`code-square` Structuring Your State - :link: structuring-your-state/index + .. grid-item-card:: :octicon:`organization` How to Structure State + :link: how-to-structure-state/index :link-type: doc - Make it easy to reason about your application by organizing its state. + Make it easy to reason about your application with strategies for organizing + state. - .. grid-item-card:: :octicon:`link` Shared Component State - :link: shared-component-state/index + .. grid-item-card:: :octicon:`link` Sharing Component State + :link: sharing-component-state/index :link-type: doc Allow components to vary vary together, by lifting state into common @@ -35,8 +39,37 @@ Managing State Control if and how state is preserved by understanding it's relationship to the "UI tree". + .. grid-item-card:: :octicon:`plug` Simplifying Updates with Reducers + :link: simplifying-updates-with-reducers/index + :link-type: doc + + Consolidate state update logic outside your component in a single function, + called a “reducer". + + .. grid-item-card:: :octicon:`broadcast` Deeply Sharing State with Contexts + :link: deeply-sharing-state-with-contexts/index + :link-type: doc + + Instead of passing shared state down deep component trees, bring state into + "contexts" instead. + + .. grid-item-card:: :octicon:`rocket` Combining Contexts and Reducers + :link: combining-contexts-and-reducers/index + :link-type: doc + + You can combine reducers and context together to manage state of a complex + screen. -Section 4: Shared Component State + +Section 1: How to Structure State +--------------------------------- + +.. note:: + + Under construction 🚧 + + +Section 2: Shared Component State --------------------------------- Sometimes, you want the state of two components to always change together. To do it, @@ -49,13 +82,46 @@ state, the state represents the food name. Note how the component ``Table`` gets at each change of state. The component is observing the state and reacting to state changes automatically, just like it would do in React. -.. idom:: shared-component-state/_examples/synced_inputs +.. idom:: sharing-component-state/_examples/synced_inputs .. card:: - :link: shared-component-state/index + :link: sharing-component-state/index :link-type: doc :octicon:`book` Read More ^^^^^^^^^^^^^^^^^^^^^^^^^ Allow components to vary vary together, by lifting state into common parents. + + +Section 3: When and How to Reset State +-------------------------------------- + +.. note:: + + Under construction 🚧 + + +Section 4: Simplifying Updates with Reducers +-------------------------------------------- + +.. note:: + + Under construction 🚧 + + +Section 5: Deeply Sharing State with Contexts +--------------------------------------------- + +.. note:: + + Under construction 🚧 + + + +Section 6: Combining Contexts and Reducers +------------------------------------------ + +.. note:: + + Under construction 🚧 diff --git a/docs/source/managing-state/shared-component-state/_examples/filterable_list/app.py b/docs/source/managing-state/sharing-component-state/_examples/filterable_list/app.py similarity index 100% rename from docs/source/managing-state/shared-component-state/_examples/filterable_list/app.py rename to docs/source/managing-state/sharing-component-state/_examples/filterable_list/app.py diff --git a/docs/source/managing-state/shared-component-state/_examples/filterable_list/data.json b/docs/source/managing-state/sharing-component-state/_examples/filterable_list/data.json similarity index 100% rename from docs/source/managing-state/shared-component-state/_examples/filterable_list/data.json rename to docs/source/managing-state/sharing-component-state/_examples/filterable_list/data.json diff --git a/docs/source/managing-state/shared-component-state/_examples/synced_inputs/app.py b/docs/source/managing-state/sharing-component-state/_examples/synced_inputs/app.py similarity index 100% rename from docs/source/managing-state/shared-component-state/_examples/synced_inputs/app.py rename to docs/source/managing-state/sharing-component-state/_examples/synced_inputs/app.py diff --git a/docs/source/managing-state/shared-component-state/index.rst b/docs/source/managing-state/sharing-component-state/index.rst similarity index 59% rename from docs/source/managing-state/shared-component-state/index.rst rename to docs/source/managing-state/sharing-component-state/index.rst index 14422f742..e7971054c 100644 --- a/docs/source/managing-state/shared-component-state/index.rst +++ b/docs/source/managing-state/sharing-component-state/index.rst @@ -1,13 +1,15 @@ -Shared Component State -====================== +Sharing Component State +======================= +.. note:: + + Parts of this document are still under construction 🚧 + +Sometimes, you want the state of two components to always change together. To do it, +remove state from both of them, move it to their closest common parent, and then pass it +down to them via props. This is known as “lifting state up”, and it’s one of the most +common things you will do writing code with IDOM. -Sometimes you want the state of two components to always change together. To do it, you -need to be able to share state between those two components, to share state between -components move state to the nearest parent. In React world this is known as "lifting -state up" and it is a very common thing to do. Let's look at 2 examples, also from -`React `__, -but translated to IDOM. Synced Inputs ------------- @@ -18,6 +20,7 @@ and ``set_value`` variables. .. idom:: _examples/synced_inputs + Filterable List ---------------- diff --git a/docs/source/managing-state/simplifying-updates-with-reducers/index.rst b/docs/source/managing-state/simplifying-updates-with-reducers/index.rst new file mode 100644 index 000000000..08fce5a69 --- /dev/null +++ b/docs/source/managing-state/simplifying-updates-with-reducers/index.rst @@ -0,0 +1,6 @@ +Simplifying Updates with Reducers 🚧 +==================================== + +.. note:: + + Under construction 🚧 diff --git a/docs/source/reference-material/hooks-api.rst b/docs/source/reference-material/hooks-api.rst index f2967376e..f41a532cf 100644 --- a/docs/source/reference-material/hooks-api.rst +++ b/docs/source/reference-material/hooks-api.rst @@ -186,9 +186,9 @@ There are **three important subtleties** to note about using asynchronous effect Manual Effect Conditions ........................ -In some cases, you may want to explicitely declare when an effect should be triggered. -You can do this by passing ``dependencies`` to ``use_effect``. Each of the following values -produce different effect behaviors: +In some cases, you may want to explicitly declare when an effect should be triggered. +You can do this by passing ``dependencies`` to ``use_effect``. Each of the following +values produce different effect behaviors: - ``use_effect(..., dependencies=None)`` - triggers and cleans up on every render. - ``use_effect(..., dependencies=[])`` - only triggers on the first and cleans up after @@ -197,6 +197,24 @@ produce different effect behaviors: ``x`` or ``y`` have changed. +Use Context +----------- + +.. code-block:: + + value = use_context(MyContext) + +Accepts a context object (the value returned from +:func:`idom.core.hooks.create_context`) and returns the current context value for that +context. The current context value is determined by the ``value`` argument passed to the +nearest ``MyContext`` in the tree. + +When the nearest above the component updates, this Hook will +trigger a rerender with the latest context value passed to that MyContext provider. Even +if an ancestor uses React.memo or shouldComponentUpdate, a rerender will still happen +starting at the component itself using useContext. + + Supplementary Hooks =================== diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 3d2324140..778368a6e 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -4,7 +4,9 @@ from .core.dispatcher import Stop from .core.events import EventHandler, event from .core.hooks import ( + create_context, use_callback, + use_context, use_effect, use_memo, use_reducer, @@ -28,6 +30,7 @@ "Component", "ComponentType", "config", + "create_context", "event", "EventHandler", "hooks", @@ -42,6 +45,7 @@ "run", "Stop", "use_callback", + "use_context", "use_effect", "use_memo", "use_reducer", diff --git a/src/idom/core/_thread_local.py b/src/idom/core/_thread_local.py new file mode 100644 index 000000000..f1168cc20 --- /dev/null +++ b/src/idom/core/_thread_local.py @@ -0,0 +1,25 @@ +from threading import Thread, current_thread +from typing import Callable, Generic, TypeVar +from weakref import WeakKeyDictionary + + +_StateType = TypeVar("_StateType") + + +class ThreadLocal(Generic[_StateType]): + """Utility for managing per-thread state information""" + + def __init__(self, default: Callable[[], _StateType]): + self._default = default + self._state: WeakKeyDictionary[Thread, _StateType] = WeakKeyDictionary() + + def get(self) -> _StateType: + thread = current_thread() + if thread not in self._state: + state = self._state[thread] = self._default() + else: + state = self._state[thread] + return state + + def set(self, state: _StateType) -> None: + self._state[current_thread()] = state diff --git a/src/idom/core/component.py b/src/idom/core/component.py index 04830780c..4b18d4712 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -9,7 +9,7 @@ def component( function: Callable[..., Union[ComponentType, VdomDict | None]] -) -> Callable[..., "Component"]: +) -> Callable[..., Component]: """A decorator for defining a new component. Parameters: @@ -54,6 +54,9 @@ def __init__( def render(self) -> VdomDict | ComponentType | None: return self.type(*self._args, **self._kwargs) + def should_render(self, new: Component) -> bool: + return True + def __repr__(self) -> str: try: args = self._sig.bind(*self._args, **self._kwargs).arguments diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index 50bcd1da1..d0717162e 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -2,13 +2,13 @@ import asyncio from logging import getLogger -from threading import get_ident as get_thread_id from types import FunctionType from typing import ( TYPE_CHECKING, Any, Awaitable, Callable, + ClassVar, Dict, Generic, List, @@ -26,6 +26,10 @@ from idom.utils import Ref +from ._thread_local import ThreadLocal +from .proto import Key, VdomDict +from .vdom import vdom + if not TYPE_CHECKING: # make flake8 think that this variable exists @@ -187,11 +191,11 @@ def effect() -> None: clean = last_clean_callback.current = sync_function() if clean is not None: - hook.add_effect(WILL_UNMOUNT_EFFECT, clean) + hook.add_effect(COMPONENT_WILL_UNMOUNT_EFFECT, clean) return None - return memoize(lambda: hook.add_effect(DID_RENDER_EFFECT, effect)) + return memoize(lambda: hook.add_effect(LAYOUT_DID_RENDER_EFFECT, effect)) if function is not None: add_effect(function) @@ -200,6 +204,111 @@ def effect() -> None: return add_effect +def create_context( + default_value: _StateType, name: str | None = None +) -> type[_Context[_StateType]]: + """Return a new context type for use in :func:`use_context`""" + + class Context(_Context[_StateType]): + _default_value = default_value + + if name is not None: + Context.__name__ = name + + return Context + + +def use_context(context_type: type[_Context[_StateType]]) -> _StateType: + """Get the current value for the given context type. + + See the full :ref:`Use Context` docs for more information. + """ + # We have to use a Ref here since, if initially context_type._current is None, and + # then on a subsequent render it is present, we need to be able to dynamically adopt + # that newly present current context. When we update it though, we don't need to + # schedule a new render since we're already rending right now. Thus we can't do this + # with use_state() since we'd incur an extra render when calling set_state. + context_ref: Ref[_Context[_StateType] | None] = use_ref(None) + + if context_ref.current is None: + provided_context = context_type._current.get() + if provided_context is None: + # Cast required because of: https://github.com/python/mypy/issues/5144 + return cast(_StateType, context_type._default_value) + context_ref.current = provided_context + + # We need the hook now so that we can schedule an update when + hook = current_hook() + + context = context_ref.current + + @use_effect + def subscribe_to_context_change() -> Callable[[], None]: + def set_context(new: _Context[_StateType]) -> None: + # We don't need to check if `new is not context_ref.current` because we only + # trigger this callback when the value of a context, and thus the context + # itself changes. Therefore we can always schedule a render. + context_ref.current = new + hook.schedule_render() + + context.subscribers.add(set_context) + return lambda: context.subscribers.remove(set_context) + + return context.value + + +_UNDEFINED: Any = object() + + +class _Context(Generic[_StateType]): + + # This should be _StateType instead of Any, but it can't due to this limitation: + # https://github.com/python/mypy/issues/5144 + _default_value: ClassVar[Any] + + _current: ClassVar[ThreadLocal[_Context[Any] | None]] + + def __init_subclass__(cls) -> None: + # every context type tracks which of its instances are currently in use + cls._current = ThreadLocal(lambda: None) + + def __init__( + self, + *children: Any, + value: _StateType = _UNDEFINED, + key: Key | None = None, + ) -> None: + self.children = children + self.value: _StateType = self._default_value if value is _UNDEFINED else value + self.key = key + self.subscribers: set[Callable[[_Context[_StateType]], None]] = set() + self.type = self.__class__ + + def render(self) -> VdomDict: + current_ctx = self.__class__._current + + prior_ctx = current_ctx.get() + current_ctx.set(self) + + def reset_ctx() -> None: + current_ctx.set(prior_ctx) + + current_hook().add_effect(COMPONENT_DID_RENDER_EFFECT, reset_ctx) + + return vdom("", *self.children) + + def should_render(self, new: _Context[_StateType]) -> bool: + if self.value is not new.value: + new.subscribers.update(self.subscribers) + for set_context in self.subscribers: + set_context(new) + return True + return False + + def __repr__(self) -> str: + return f"{type(self).__name__}({id(self)})" + + _ActionType = TypeVar("_ActionType") @@ -413,25 +522,28 @@ def _try_to_infer_closure_values( return cast("Sequence[Any] | None", values) -_current_life_cycle_hook: Dict[int, "LifeCycleHook"] = {} - - -def current_hook() -> "LifeCycleHook": +def current_hook() -> LifeCycleHook: """Get the current :class:`LifeCycleHook`""" - try: - return _current_life_cycle_hook[get_thread_id()] - except KeyError as error: + hook = _current_hook.get() + if hook is None: msg = "No life cycle hook is active. Are you rendering in a layout?" - raise RuntimeError(msg) from error + raise RuntimeError(msg) + return hook + + +_current_hook: ThreadLocal[LifeCycleHook | None] = ThreadLocal(lambda: None) EffectType = NewType("EffectType", str) """Used in :meth:`LifeCycleHook.add_effect` to indicate what effect should be saved""" -DID_RENDER_EFFECT = EffectType("DID_RENDER") -"""An effect that will be triggered after each render""" +COMPONENT_DID_RENDER_EFFECT = EffectType("COMPONENT_DID_RENDER") +"""An effect that will be triggered each time a component renders""" -WILL_UNMOUNT_EFFECT = EffectType("WILL_UNMOUNT") +LAYOUT_DID_RENDER_EFFECT = EffectType("LAYOUT_DID_RENDER") +"""An effect that will be triggered each time a layout renders""" + +COMPONENT_WILL_UNMOUNT_EFFECT = EffectType("COMPONENT_WILL_UNMOUNT") """An effect that will be triggered just before the component is unmounted""" @@ -461,7 +573,7 @@ class LifeCycleHook: # --- start render cycle --- - hook.component_will_render() + hook.affect_component_will_render() hook.set_current() @@ -478,10 +590,12 @@ class LifeCycleHook: finally: hook.unset_current() + hook.affect_component_did_render() + # This should only be called after any child components yielded by - # component_instance.render() have also been rendered because effects - # must run after the full set of changes have been resolved. - hook.component_did_render() + # component_instance.render() have also been rendered because effects of + # this type must run after the full set of changes have been resolved. + hook.affect_layout_did_render() # Typically an event occurs and a new render is scheduled, thus begining # the render cycle anew. @@ -490,7 +604,7 @@ class LifeCycleHook: # --- end render cycle --- - hook.component_will_unmount() + hook.affect_component_will_unmount() del hook # --- end render cycle --- @@ -501,7 +615,7 @@ class LifeCycleHook: "_schedule_render_later", "_current_state_index", "_state", - "_rendered_at_least_once", + "_rendered_atleast_once", "_is_rendering", "_event_effects", "__weakref__", @@ -514,12 +628,13 @@ def __init__( self._schedule_render_callback = schedule_render self._schedule_render_later = False self._is_rendering = False - self._rendered_at_least_once = False + self._rendered_atleast_once = False self._current_state_index = 0 self._state: Tuple[Any, ...] = () self._event_effects: Dict[EffectType, List[Callable[[], None]]] = { - DID_RENDER_EFFECT: [], - WILL_UNMOUNT_EFFECT: [], + COMPONENT_DID_RENDER_EFFECT: [], + LAYOUT_DID_RENDER_EFFECT: [], + COMPONENT_WILL_UNMOUNT_EFFECT: [], } def schedule_render(self) -> None: @@ -530,44 +645,55 @@ def schedule_render(self) -> None: return None def use_state(self, function: Callable[[], _StateType]) -> _StateType: - if not self._rendered_at_least_once: + if not self._rendered_atleast_once: # since we're not intialized yet we're just appending state result = function() self._state += (result,) else: - # once finalized we iterate over each successively used piece of state + # once finalized we iterate over each succesively used piece of state result = self._state[self._current_state_index] self._current_state_index += 1 return result def add_effect(self, effect_type: EffectType, function: Callable[[], None]) -> None: - """Trigger a function on the occurrence of the given effect type""" + """Trigger a function on the occurance of the given effect type""" self._event_effects[effect_type].append(function) - def component_will_render(self) -> None: + def affect_component_will_render(self) -> None: """The component is about to render""" self._is_rendering = True - self._event_effects[WILL_UNMOUNT_EFFECT].clear() + self._event_effects[COMPONENT_WILL_UNMOUNT_EFFECT].clear() - def component_did_render(self) -> None: + def affect_component_did_render(self) -> None: """The component completed a render""" - did_render_effects = self._event_effects[DID_RENDER_EFFECT] - for effect in did_render_effects: + component_did_render_effects = self._event_effects[COMPONENT_DID_RENDER_EFFECT] + for effect in component_did_render_effects: try: effect() except Exception: - logger.exception(f"Post-render effect {effect} failed") - did_render_effects.clear() + logger.exception(f"Component post-render effect {effect} failed") + component_did_render_effects.clear() self._is_rendering = False + self._rendered_atleast_once = True + self._current_state_index = 0 + + def affect_layout_did_render(self) -> None: + """The layout completed a render""" + layout_did_render_effects = self._event_effects[LAYOUT_DID_RENDER_EFFECT] + for effect in layout_did_render_effects: + try: + effect() + except Exception: + logger.exception(f"Layout post-render effect {effect} failed") + layout_did_render_effects.clear() + if self._schedule_render_later: self._schedule_render() - self._rendered_at_least_once = True - self._current_state_index = 0 - def component_will_unmount(self) -> None: + def affect_component_will_unmount(self) -> None: """The component is about to be removed from the layout""" - will_unmount_effects = self._event_effects[WILL_UNMOUNT_EFFECT] + will_unmount_effects = self._event_effects[COMPONENT_WILL_UNMOUNT_EFFECT] for effect in will_unmount_effects: try: effect() @@ -581,13 +707,13 @@ def set_current(self) -> None: This method is called by a layout before entering the render method of this hook's associated component. """ - _current_life_cycle_hook[get_thread_id()] = self + _current_hook.set(self) def unset_current(self) -> None: """Unset this hook as the active hook in this thread""" - # this assertion should never fail - primarily useful for debug - assert _current_life_cycle_hook[get_thread_id()] is self - del _current_life_cycle_hook[get_thread_id()] + # this assertion should never fail - primarilly useful for debug + assert _current_hook.get() is self + _current_hook.set(None) def _schedule_render(self) -> None: try: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index e1e7ba027..87a632b79 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -136,7 +136,7 @@ async def render(self) -> LayoutUpdate: try: model_state = self._model_states_by_life_cycle_state_id[model_state_id] except KeyError: - logger.info( + logger.debug( "Did not render component with model state ID " "{model_state_id!r} - component already unmounted" ) @@ -168,7 +168,7 @@ def _create_layout_update(self, old_state: _ModelState) -> LayoutUpdate: # hook effects must run after the update is complete for model_state in _iter_model_state_children(new_state): if model_state.is_component_state: - model_state.life_cycle_state.hook.component_did_render() + model_state.life_cycle_state.hook.affect_layout_did_render() old_model: Optional[VdomJson] try: @@ -191,38 +191,47 @@ def _render_component( life_cycle_state = new_state.life_cycle_state self._model_states_by_life_cycle_state_id[life_cycle_state.id] = new_state - life_cycle_hook = life_cycle_state.hook - life_cycle_hook.component_will_render() - - try: - life_cycle_hook.set_current() + if ( + old_state is not None + and old_state.is_component_state + and not _check_should_render( + old_state.life_cycle_state.component, component + ) + ): + new_state.model.current = old_state.model.current + else: + life_cycle_hook = life_cycle_state.hook + life_cycle_hook.affect_component_will_render() try: - raw_model = component.render() + life_cycle_hook.set_current() + try: + raw_model = component.render() + finally: + life_cycle_hook.unset_current() + # wrap the model in a fragment (i.e. tagName="") to ensure components have + # a separate node in the model state tree. This could be removed if this + # components are given a node in the tree some other way + wrapper_model: VdomDict = {"tagName": ""} + if raw_model is not None: + wrapper_model["children"] = [raw_model] + self._render_model(old_state, new_state, wrapper_model) + except Exception as error: + logger.exception(f"Failed to render {component}") + new_state.model.current = { + "tagName": "", + "error": ( + f"{type(error).__name__}: {error}" + if IDOM_DEBUG_MODE.current + else "" + ), + } finally: - life_cycle_hook.unset_current() - - # wrap the model in a fragment (i.e. tagName="") to ensure components have - # a separate node in the model state tree. This could be removed if this - # components are given a node in the tree some other way - wrapper_model: VdomDict = {"tagName": ""} - if raw_model is not None: - wrapper_model["children"] = [raw_model] - - self._render_model(old_state, new_state, wrapper_model) - except Exception as error: - logger.exception(f"Failed to render {component}") - new_state.model.current = { - "tagName": "", - "error": ( - f"{type(error).__name__}: {error}" - if IDOM_DEBUG_MODE.current - else "" - ), - } + life_cycle_hook.affect_component_did_render() + try: parent = new_state.parent except AttributeError: - pass + pass # only happens for root component else: key, index = new_state.key, new_state.index parent.children_by_key[key] = new_state @@ -230,6 +239,9 @@ def _render_component( parent.model.current["children"][index : index + 1] = [ new_state.model.current ] + finally: + # avoid double render + self._rendering_queue.remove_if_pending(life_cycle_state.id) def _render_model( self, @@ -447,7 +459,7 @@ def _unmount_model_states(self, old_states: List[_ModelState]) -> None: if model_state.is_component_state: life_cycle_state = model_state.life_cycle_state del self._model_states_by_life_cycle_state_id[life_cycle_state.id] - life_cycle_state.hook.component_will_unmount() + life_cycle_state.hook.affect_component_will_unmount() to_unmount.extend(model_state.children_by_key.values()) @@ -455,6 +467,14 @@ def __repr__(self) -> str: return f"{type(self).__name__}({self.root})" +def _check_should_render(old: ComponentType, new: ComponentType) -> bool: + try: + return old.should_render(new) + except Exception: + logger.exception(f"{old} component failed to check if {new} should be rendered") + return False + + def _iter_model_state_children(model_state: _ModelState) -> Iterator[_ModelState]: yield model_state for child in model_state.children_by_key.values(): @@ -696,8 +716,15 @@ def put(self, value: _Type) -> None: self._loop.call_soon_threadsafe(self._queue.put_nowait, value) return None + def remove_if_pending(self, value: _Type) -> None: + if value in self._pending: + self._pending.remove(value) + async def get(self) -> _Type: - value = await self._queue.get() + while True: + value = await self._queue.get() + if value in self._pending: + break self._pending.remove(value) return value diff --git a/src/idom/core/proto.py b/src/idom/core/proto.py index 4fd1c030d..915fa0a7f 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/proto.py @@ -25,6 +25,9 @@ Key = Union[str, int] +_OwnType = TypeVar("_OwnType") + + @runtime_checkable class ComponentType(Protocol): """The expected interface for all component-like objects""" @@ -41,6 +44,9 @@ class ComponentType(Protocol): def render(self) -> VdomDict | ComponentType | None: """Render the component's view model.""" + def should_render(self: _OwnType, new: _OwnType) -> bool: + """Whether the new component instance should be rendered.""" + _Self = TypeVar("_Self") _Render = TypeVar("_Render", covariant=True) diff --git a/src/idom/testing.py b/src/idom/testing.py index 7c4f1c2fb..f9581b45f 100644 --- a/src/idom/testing.py +++ b/src/idom/testing.py @@ -326,17 +326,17 @@ class HookCatcher: Example: .. code-block:: - hooks = HookCatcher(index_by_kwarg="key") + hooks = HookCatcher(index_by_kwarg="thing") @idom.component @hooks.capture - def MyComponent(key): + def MyComponent(thing): ... - ... # render the component + ... # render the component - # grab the last render of where MyComponent(key='some_key') - hooks.index["some_key"] + # grab the last render of where MyComponent(thing='something') + hooks.index["something"] # or grab the hook from the component's last render hooks.latest diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index 93a220a4c..e15f95701 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -4,8 +4,9 @@ import pytest import idom +from idom import html from idom.core.dispatcher import render_json_patch -from idom.core.hooks import LifeCycleHook +from idom.core.hooks import COMPONENT_DID_RENDER_EFFECT, LifeCycleHook, current_hook from idom.testing import HookCatcher, assert_idom_logged from tests.assert_utils import assert_same_items @@ -543,11 +544,9 @@ def bad_effect(): return idom.html.div() - with idom.Layout(ComponentWithEffect()) as layout: - await layout.render() # no error - - first_log_line = next(iter(caplog.records)).msg.split("\n", 1)[0] - assert re.match("Post-render effect .*? failed", first_log_line) + with assert_idom_logged(match_message=r"Layout post-render effect .* failed"): + with idom.Layout(ComponentWithEffect()) as layout: + await layout.render() # no error async def test_error_in_effect_cleanup_is_gracefully_handled(caplog): @@ -566,13 +565,11 @@ def bad_cleanup(): return idom.html.div() - with idom.Layout(ComponentWithEffect()) as layout: - await layout.render() - component_hook.latest.schedule_render() - await layout.render() # no error - - first_log_line = next(iter(caplog.records)).msg.split("\n", 1)[0] - assert re.match("Post-render effect .*?", first_log_line) + with assert_idom_logged(match_error=r"Layout post-render effect .* failed"): + with idom.Layout(ComponentWithEffect()) as layout: + await layout.render() + component_hook.latest.schedule_render() + await layout.render() # no error async def test_error_in_effect_pre_unmount_cleanup_is_gracefully_handled(): @@ -899,3 +896,246 @@ def some_memo_func_that_uses_count(): await layout.render() await did_memo.wait() did_memo.clear() + + +async def test_use_context_default_value(): + Context = idom.create_context("something") + value = idom.Ref() + + @idom.component + def ComponentProvidesContext(): + return Context(ComponentUsesContext()) + + @idom.component + def ComponentUsesContext(): + value.current = idom.use_context(Context) + return html.div() + + with idom.Layout(ComponentProvidesContext()) as layout: + await layout.render() + assert value.current == "something" + + @idom.component + def ComponentUsesContext(): + value.current = idom.use_context(Context) + return html.div() + + with idom.Layout(ComponentUsesContext()) as layout: + await layout.render() + assert value.current == "something" + + +def test_context_repr(): + Context = idom.create_context(None) + assert re.match(r"Context\(.*\)", repr(Context())) + + MyContext = idom.create_context(None, name="MyContext") + assert re.match(r"MyContext\(.*\)", repr(MyContext())) + + +async def test_use_context_only_renders_for_value_change(): + Context = idom.create_context(None) + + provider_hook = HookCatcher() + render_count = idom.Ref(0) + set_state = idom.Ref() + + @idom.component + @provider_hook.capture + def ComponentProvidesContext(): + state, set_state.current = idom.use_state(0) + return Context(ComponentInContext(), value=state) + + @idom.component + def ComponentInContext(): + render_count.current += 1 + return html.div() + + with idom.Layout(ComponentProvidesContext()) as layout: + await layout.render() + assert render_count.current == 1 + + set_state.current(1) + + await layout.render() + assert render_count.current == 2 + + provider_hook.latest.schedule_render() + + await layout.render() + assert render_count.current == 2 + + +async def test_use_context_updates_components_even_if_memoized(): + Context = idom.create_context(None) + + value = idom.Ref(None) + render_count = idom.Ref(0) + set_state = idom.Ref() + + @idom.component + def ComponentProvidesContext(): + state, set_state.current = idom.use_state(0) + return Context(ComponentInContext(), value=state) + + @idom.component + def ComponentInContext(): + return idom.use_memo(MemoizedComponentUsesContext) + + @idom.component + def MemoizedComponentUsesContext(): + value.current = idom.use_context(Context) + render_count.current += 1 + return html.div() + + with idom.Layout(ComponentProvidesContext()) as layout: + await layout.render() + assert render_count.current == 1 + assert value.current == 0 + + set_state.current(1) + + await layout.render() + assert render_count.current == 2 + assert value.current == 1 + + set_state.current(2) + + await layout.render() + assert render_count.current == 3 + assert value.current == 2 + + +async def test_nested_contexts_do_not_conflict(): + Context = idom.create_context(None) + + outer_value = idom.Ref(None) + inner_value = idom.Ref(None) + outer_render_count = idom.Ref(0) + inner_render_count = idom.Ref(0) + set_outer_value = idom.Ref() + set_root_value = idom.Ref() + + @idom.component + def Root(): + outer_value, set_root_value.current = idom.use_state(-1) + return Context(Outer(), value=outer_value) + + @idom.component + def Outer(): + inner_value, set_outer_value.current = idom.use_state(1) + outer_value.current = idom.use_context(Context) + outer_render_count.current += 1 + return Context(Inner(), value=inner_value) + + @idom.component + def Inner(): + inner_value.current = idom.use_context(Context) + inner_render_count.current += 1 + return html.div() + + with idom.Layout(Root()) as layout: + await layout.render() + assert outer_render_count.current == 1 + assert inner_render_count.current == 1 + assert outer_value.current == -1 + assert inner_value.current == 1 + + set_root_value.current(-2) + + await layout.render() + assert outer_render_count.current == 2 + assert inner_render_count.current == 1 + assert outer_value.current == -2 + assert inner_value.current == 1 + + set_outer_value.current(2) + + await layout.render() + assert outer_render_count.current == 3 + assert inner_render_count.current == 2 + assert outer_value.current == -2 + assert inner_value.current == 2 + + +async def test_neighboring_contexts_do_not_conflict(): + LeftContext = idom.create_context(None, name="Left") + RightContext = idom.create_context(None, name="Right") + + set_left = idom.Ref() + set_right = idom.Ref() + left_used_value = idom.Ref() + right_used_value = idom.Ref() + left_render_count = idom.Ref(0) + right_render_count = idom.Ref(0) + + @idom.component + def Root(): + left_value, set_left.current = idom.use_state(1) + right_value, set_right.current = idom.use_state(1) + return idom.html.div( + LeftContext(Left(), value=left_value), + RightContext(Right(), value=right_value), + ) + + @idom.component + def Left(): + left_render_count.current += 1 + left_used_value.current = idom.use_context(LeftContext) + return idom.html.div() + + @idom.component + def Right(): + right_render_count.current += 1 + right_used_value.current = idom.use_context(RightContext) + return idom.html.div() + + with idom.Layout(Root()) as layout: + await layout.render() + assert left_render_count.current == 1 + assert right_render_count.current == 1 + assert left_used_value.current == 1 + assert right_used_value.current == 1 + + for i in range(2, 5): + set_left.current(i) + + await layout.render() + assert left_render_count.current == i + assert right_render_count.current == 1 + assert left_used_value.current == i + assert right_used_value.current == 1 + + for j in range(2, 5): + set_right.current(j) + + await layout.render() + assert left_render_count.current == i + assert right_render_count.current == j + assert left_used_value.current == i + assert right_used_value.current == j + + +async def test_error_in_effect_cleanup_is_gracefully_handled(): + component_hook = HookCatcher() + + @idom.component + @component_hook.capture + def ComponentWithEffect(): + hook = current_hook() + + def bad_effect(): + raise ValueError("The error message") + + hook.add_effect(COMPONENT_DID_RENDER_EFFECT, bad_effect) + return idom.html.div() + + with assert_idom_logged( + match_message="Component post-render effect .*? failed", + error_type=ValueError, + match_error="The error message", + ): + with idom.Layout(ComponentWithEffect()) as layout: + await layout.render() + component_hook.latest.schedule_render() + await layout.render() # no error diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 0ac7fe63e..f0dbbb4d5 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -1161,3 +1161,81 @@ def Child(): await layout.render() assert did_unmount.current + + +class ComponentShouldRender: + def __init__(self, child, should_render): + self.child = child or html.div() + self.should_render = should_render + self.key = None + self.type = self.__class__ + + def render(self): + return html.div(self.child) + + +async def test_component_should_render_always_true(): + render_count = idom.Ref(0) + root_hook = HookCatcher() + + @idom.component + @root_hook.capture + def Root(): + return ComponentShouldRender(SomeComponent(), should_render=lambda new: True) + + @idom.component + def SomeComponent(): + render_count.current += 1 + return html.div() + + with idom.Layout(Root()) as layout: + for _ in range(4): + await layout.render() + root_hook.latest.schedule_render() + + assert render_count.current == 4 + + +async def test_component_should_render_always_false(): + render_count = idom.Ref(0) + root_hook = HookCatcher() + + @idom.component + @root_hook.capture + def Root(): + return ComponentShouldRender(SomeComponent(), should_render=lambda new: False) + + @idom.component + def SomeComponent(): + render_count.current += 1 + return html.div() + + with idom.Layout(Root()) as layout: + for _ in range(4): + await layout.render() + root_hook.latest.schedule_render() + + assert render_count.current == 1 + + +async def test_component_error_in_should_render_is_handled_gracefully(): + root_hook = HookCatcher() + + @idom.component + @root_hook.capture + def Root(): + def bad_should_render(new): + raise ValueError("The error message") + + return ComponentShouldRender(html.div(), should_render=bad_should_render) + + with assert_idom_logged( + match_message=r".* component failed to check if .* should be rendered", + error_type=ValueError, + match_error="The error message", + clear_matched_records=True, + ): + with idom.Layout(Root()) as layout: + await layout.render() + root_hook.latest.schedule_render() + await layout.render() From 5b8ab7d389dcbae7e6c4fb35f808f3aaab667bea Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 24 Feb 2022 17:45:41 -0800 Subject: [PATCH 032/253] reset schedule_render_later flag after triggering (#688) --- src/idom/core/hooks.py | 1 + src/idom/testing.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index d0717162e..c19b9e547 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -690,6 +690,7 @@ def affect_layout_did_render(self) -> None: if self._schedule_render_later: self._schedule_render() + self._schedule_render_later = False def affect_component_will_unmount(self) -> None: """The component is about to be removed from the layout""" diff --git a/src/idom/testing.py b/src/idom/testing.py index f9581b45f..ad7a9bac1 100644 --- a/src/idom/testing.py +++ b/src/idom/testing.py @@ -25,7 +25,9 @@ from uuid import uuid4 from weakref import ref -from selenium.webdriver import Chrome +from selenium.webdriver.chrome.options import Options as ChromeOptions +from selenium.webdriver.chrome.webdriver import WebDriver as Chrome +from selenium.webdriver.common.options import BaseOptions from selenium.webdriver.remote.webdriver import WebDriver from idom.config import IDOM_WEB_MODULES_DIR @@ -47,7 +49,7 @@ def create_simple_selenium_web_driver( driver_type: Type[WebDriver] = Chrome, - driver_options: Optional[Any] = None, + driver_options: BaseOptions = ChromeOptions(), implicit_wait_timeout: float = 10.0, page_load_timeout: float = 5.0, window_size: Tuple[int, int] = (1080, 800), From fdad4fd8739e402c06bc344dd09e0f93d152e735 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 24 Feb 2022 20:21:11 -0800 Subject: [PATCH 033/253] test reset schedule_render_later --- tests/test_core/test_hooks.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index e15f95701..d3793a59e 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -7,7 +7,9 @@ from idom import html from idom.core.dispatcher import render_json_patch from idom.core.hooks import COMPONENT_DID_RENDER_EFFECT, LifeCycleHook, current_hook +from idom.core.layout import Layout from idom.testing import HookCatcher, assert_idom_logged +from idom.utils import Ref from tests.assert_utils import assert_same_items @@ -1139,3 +1141,25 @@ def bad_effect(): await layout.render() component_hook.latest.schedule_render() await layout.render() # no error + + +async def test_set_state_during_render(): + render_count = Ref(0) + + @idom.component + def SetStateDuringRender(): + render_count.current += 1 + state, set_state = idom.use_state(0) + if not state: + set_state(state + 1) + return html.div(state) + + with Layout(SetStateDuringRender()) as layout: + await layout.render() + assert render_count.current == 1 + await layout.render() + assert render_count.current == 2 + + # there should be no more renders to perform + with pytest.raises(asyncio.exceptions.TimeoutError): + await asyncio.wait_for(layout.render(), timeout=0.1) From 2a54b3465fab64d6a181a63d67b51565229ddb7c Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 24 Feb 2022 22:26:22 -0800 Subject: [PATCH 034/253] reorganize creating-interfaces + add info on fragments (#685) --- .../index.rst} | 12 ++-- docs/source/creating-interfaces/index.rst | 22 +++---- .../sorted_and_filtered_todo_list.py | 0 .../_examples/todo_from_list.py | 0 .../_examples/todo_list_with_keys.py | 0 .../index.rst} | 0 .../_examples/bad_conditional_todo_list.py | 0 .../_examples/good_conditional_todo_list.py | 0 .../_examples/nested_photos.py | 0 .../_examples/parametrized_photos.py | 2 +- .../_examples/simple_photo.py | 0 .../_examples/todo_list.py | 0 .../_examples/wrap_in_div.py | 13 +++++ .../_examples/wrap_in_fragment.py | 13 +++++ .../index.rst} | 57 +++++++++++++++++++ docs/source/index.rst | 2 +- tests/test_core/test_hooks.py | 2 +- 17 files changed, 102 insertions(+), 21 deletions(-) rename docs/source/creating-interfaces/{html-with-idom.rst => html-with-idom/index.rst} (88%) rename docs/source/creating-interfaces/{ => rendering-data}/_examples/sorted_and_filtered_todo_list.py (100%) rename docs/source/creating-interfaces/{ => rendering-data}/_examples/todo_from_list.py (100%) rename docs/source/creating-interfaces/{ => rendering-data}/_examples/todo_list_with_keys.py (100%) rename docs/source/creating-interfaces/{rendering-data.rst => rendering-data/index.rst} (100%) rename docs/source/creating-interfaces/{ => your-first-components}/_examples/bad_conditional_todo_list.py (100%) rename docs/source/creating-interfaces/{ => your-first-components}/_examples/good_conditional_todo_list.py (100%) rename docs/source/creating-interfaces/{ => your-first-components}/_examples/nested_photos.py (100%) rename docs/source/creating-interfaces/{ => your-first-components}/_examples/parametrized_photos.py (86%) rename docs/source/creating-interfaces/{ => your-first-components}/_examples/simple_photo.py (100%) rename docs/source/creating-interfaces/{ => your-first-components}/_examples/todo_list.py (100%) create mode 100644 docs/source/creating-interfaces/your-first-components/_examples/wrap_in_div.py create mode 100644 docs/source/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py rename docs/source/creating-interfaces/{your-first-components.rst => your-first-components/index.rst} (66%) diff --git a/docs/source/creating-interfaces/html-with-idom.rst b/docs/source/creating-interfaces/html-with-idom/index.rst similarity index 88% rename from docs/source/creating-interfaces/html-with-idom.rst rename to docs/source/creating-interfaces/html-with-idom/index.rst index 79d2a6ed0..5bad18912 100644 --- a/docs/source/creating-interfaces/html-with-idom.rst +++ b/docs/source/creating-interfaces/html-with-idom/index.rst @@ -1,20 +1,19 @@ HTML With IDOM ============== -In a typical Python-base web application the resonsibility of defining the view along +In a typical Python-base web application the responsibility of defining the view along with its backing data and logic are distributed between a client and server respectively. With IDOM, both these tasks are centralized in a single place. This is done by allowing HTML interfaces to be constructed in Python. Take a look at the two -code examples below. The one on the left shows how to make a basic title and todo list -using standard HTML, the one of the right uses IDOM in Python, and below is a view of -what the HTML would look like if displayed: +code examples below. The first one shows how to make a basic title and todo list using +standard HTML, the second uses IDOM in Python, and below is a view of what the HTML +would look like if displayed: .. grid:: 1 1 2 2 :margin: 0 :padding: 0 .. grid-item:: - :columns: 6 .. code-block:: html @@ -25,7 +24,6 @@ what the HTML would look like if displayed: .. grid-item:: - :columns: 6 .. testcode:: @@ -86,7 +84,7 @@ to specify a URL to its ``src`` and use some ``style`` to modify and position it In IDOM we add these attributes to elements using dictionaries. There are some notable differences though. The biggest being the fact that all names in IDOM use ``camelCase`` -instead of dash-sepearted words. For example, ``margin-left`` becomes ``marginLeft``. +instead of dash-separated words. For example, ``margin-left`` becomes ``marginLeft``. Additionally, instead of specifying ``style`` using a string, we use a dictionary: .. testcode:: diff --git a/docs/source/creating-interfaces/index.rst b/docs/source/creating-interfaces/index.rst index 77f9fd4fc..74c662969 100644 --- a/docs/source/creating-interfaces/index.rst +++ b/docs/source/creating-interfaces/index.rst @@ -4,9 +4,9 @@ Creating Interfaces .. toctree:: :hidden: - html-with-idom - your-first-components - rendering-data + html-with-idom/index + your-first-components/index + rendering-data/index .. dropdown:: :octicon:`bookmark-fill;2em` What You'll Learn :color: info @@ -16,20 +16,20 @@ Creating Interfaces .. grid:: 1 2 2 2 .. grid-item-card:: :octicon:`code-square` HTML with IDOM - :link: html-with-idom + :link: html-with-idom/index :link-type: doc Construct HTML layouts from the basic units of user interface functionality. .. grid-item-card:: :octicon:`package` Your First Components - :link: your-first-components + :link: your-first-components/index :link-type: doc Define reusable building blocks that it easier to construct complex interfaces. .. grid-item-card:: :octicon:`database` Rendering Data - :link: rendering-data + :link: rendering-data/index :link-type: doc Use data to organize and render HTML elements and components. @@ -75,7 +75,7 @@ To recreate the same thing in IDOM you would write: ) .. card:: - :link: html-with-idom + :link: html-with-idom/index :link-type: doc :octicon:`book` Read More @@ -94,10 +94,10 @@ create them we need to add an ``@component`` `decorator `__. To see what this looks like in practice we'll quickly make a ``Photo`` component: -.. idom:: _examples/simple_photo +.. idom:: your-first-components/_examples/simple_photo .. card:: - :link: your-first-components + :link: your-first-components/index :link-type: doc :octicon:`book` Read More @@ -116,10 +116,10 @@ from data in this way must be orgnized with :ref:`"keys" `: + +.. idom:: _examples/wrap_in_div + +If don't want to add an extra ``div`` you can use a "fragment" instead with the +:func:`html._ ` function: + +.. idom:: _examples/wrap_in_fragment + +Fragments allow you to group elements together without leaving any trace in the UI. For +example, the first code sample written with IDOM will produce the second HTML code +block: + +.. grid:: 1 2 2 2 + :margin: 0 + :padding: 0 + + .. grid-item:: + + .. testcode:: + + from idom import html + + html.ul( + html._( + html.li("Group 1 Item 1"), + html.li("Group 1 Item 2"), + html.li("Group 1 Item 3"), + ), + html._( + html.li("Group 2 Item 1"), + html.li("Group 2 Item 2"), + html.li("Group 2 Item 3"), + ) + ) + + .. grid-item:: + + .. code-block:: html + +
    +
  • Group 1 Item 1
  • +
  • Group 1 Item 2
  • +
  • Group 1 Item 3
  • +
  • Group 2 Item 1
  • +
  • Group 2 Item 2
  • +
  • Group 2 Item 3
  • +
+ + + Parametrizing Components ------------------------ diff --git a/docs/source/index.rst b/docs/source/index.rst index e7ecbc18d..516a33a25 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -123,7 +123,7 @@ combine these elements into reusable :ref:`"components" ` sections that follow you'll learn how these UI elements are created and organized into components. Then, you'll use this knowledge to create interfaces from raw data: -.. idom:: creating-interfaces/_examples/todo_list_with_keys +.. idom:: creating-interfaces/rendering-data/_examples/todo_list_with_keys .. card:: :link: creating-interfaces/index diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index d3793a59e..a95724856 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -1161,5 +1161,5 @@ def SetStateDuringRender(): assert render_count.current == 2 # there should be no more renders to perform - with pytest.raises(asyncio.exceptions.TimeoutError): + with pytest.raises(asyncio.TimeoutError): await asyncio.wait_for(layout.render(), timeout=0.1) From 3f8803e1266e8cdb05ee8d7fec572c47f3cb6a50 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 27 Feb 2022 12:09:50 -0800 Subject: [PATCH 035/253] Re-organize docs + start using "Keep a Changelog" style (#689) * doc reorg + apply "keep a changelog" style to changelog.rst * fix spelling mistakes * minor improvements * remove unused ref * fix typos --- .../{developing-idom => about}/changelog.rst | 56 ++++-- .../contributor-guide.rst | 188 +++++++++--------- .../{ => about}/credits-and-licenses.rst | 2 +- docs/source/developing-idom/index.rst | 65 ------ .../_examples/adding_state_variable/app.py | 0 .../_examples/adding_state_variable/data.json | 0 .../_examples/isolated_state/app.py | 0 .../_examples/isolated_state/data.json | 0 .../_examples/multiple_state_variables/app.py | 0 .../multiple_state_variables/data.json | 0 .../when_variables_are_not_enough}/app.py | 0 .../when_variables_are_not_enough}/data.json | 0 .../components-with-state/index.rst | 10 +- .../_examples/dict_remove.py | 0 .../_examples/dict_update.py | 0 .../_examples/list_insert.py | 0 .../_examples/list_re_order.py | 0 .../_examples/list_remove.py | 0 .../_examples/list_replace.py | 0 .../_examples/moving_dot.py | 0 .../_examples/moving_dot_broken.py | 0 .../_examples/set_remove.py | 0 .../_examples/set_update.py | 0 .../dangers-of-mutability/index.rst | 0 .../adding-interactivity/index.rst | 0 .../_examples/delay_before_count_updater.py | 0 .../_examples/delay_before_set_count.py | 0 .../_examples/set_color_3_times.py | 0 .../_examples/set_state_function.py | 0 .../multiple-state-updates/index.rst | 0 .../_examples/audio_player.py | 0 .../_examples/button_async_handlers.py | 0 .../_examples/button_does_nothing.py | 0 .../_examples/button_handler_as_arg.py | 0 .../_examples/button_prints_event.py | 0 .../_examples/button_prints_message.py | 0 .../prevent_default_event_actions.py | 0 .../_examples/stop_event_propagation.py | 0 .../responding-to-events/index.rst | 0 .../_examples/delayed_print_after_set.py | 0 .../_examples/print_chat_message.py | 0 .../_examples/print_count_after_set.py | 0 .../_examples/send_message.py | 0 .../_examples/set_counter_3_times.py | 0 .../_static/direct-state-change.png | Bin .../_static/idom-state-change.png | Bin .../state-as-a-snapshot/index.rst | 0 .../html-with-idom/index.rst | 2 +- .../creating-interfaces/index.rst | 0 .../sorted_and_filtered_todo_list.py | 0 .../_examples/todo_from_list.py | 0 .../_examples/todo_list_with_keys.py | 0 .../rendering-data/index.rst | 6 +- .../_examples/bad_conditional_todo_list.py | 0 .../_examples/good_conditional_todo_list.py | 0 .../_examples/nested_photos.py | 0 .../_examples/parametrized_photos.py | 0 .../_examples/simple_photo.py | 0 .../_examples/todo_list.py | 0 .../_examples/wrap_in_div.py | 0 .../_examples/wrap_in_fragment.py | 0 .../your-first-components/index.rst | 0 .../_examples/material_ui_button_no_action.py | 0 .../_examples/material_ui_button_on_click.py | 0 .../_examples/super_simple_chart/app.py | 0 .../super_simple_chart/super-simple-chart.js | 2 +- .../distributing-javascript.rst | 0 .../{ => guides}/escape-hatches/index.rst | 0 .../escape-hatches/javascript-components.rst | 0 .../writing-your-own-client.rst | 0 .../writing-your-own-server.rst | 0 .../_examples/debug_error_example.py | 0 .../getting-started/_examples/hello_world.py | 0 .../getting-started/_examples/sample_app.py | 0 .../getting-started/_static/embed-doc-ex.html | 0 .../_static/embed-idom-view/index.html | 0 .../_static/embed-idom-view/main.py | 0 .../_static/embed-idom-view/screenshot.png | Bin .../_static/idom-in-jupyterlab.gif | Bin .../getting-started/_static/logo-django.svg | 0 .../getting-started/_static/logo-jupyter.svg | 0 .../getting-started/_static/logo-plotly.svg | 0 .../shared-client-state-server-slider.gif | Bin .../{ => guides}/getting-started/index.rst | 0 .../getting-started/installing-idom.rst | 2 +- .../getting-started/running-idom.rst | 0 .../combining-contexts-and-reducers/index.rst | 0 .../index.rst | 0 .../how-to-structure-state/index.rst | 0 .../{ => guides}/managing-state/index.rst | 0 .../_examples/filterable_list/app.py | 0 .../_examples/filterable_list/data.json | 0 .../_examples/synced_inputs/app.py | 0 .../sharing-component-state/index.rst | 0 .../index.rst | 0 .../when-and-how-to-reset-state/index.rst | 0 .../_static/idom-flow-diagram.svg | 0 .../_static/live-examples-in-docs.gif | Bin .../_static/mvc-flow-diagram.svg | 0 .../_static/npm-download-trends.png | Bin .../{ => guides}/understanding-idom/index.rst | 4 + .../layout-render-servers.rst | 0 .../understanding-idom/representing-html.rst | 0 .../the-rendering-pipeline.rst | 0 .../the-rendering-process.rst | 0 .../what-are-components.rst | 0 .../why-idom-needs-keys.rst | 0 .../understanding-idom/writing-tests.rst | 0 docs/source/index.rst | 50 ++--- docs/source/reference-material/examples.rst | 106 ---------- docs/source/reference-material/faq.rst | 64 ------ docs/source/reference-material/index.rst | 17 -- .../_examples/character_movement/app.py | 0 .../character_movement/static/bunny.png | Bin .../_examples/click_count.py | 0 .../_examples/material_ui_switch.py | 0 .../_examples/matplotlib_plot.py | 0 .../_examples/network_graph.py | 0 .../_examples/pigeon_maps.py | 0 .../_examples/simple_dashboard.py | 0 .../_examples/slideshow.py | 0 .../_examples/snake_game.py | 0 .../_examples/todo.py | 0 .../_examples/use_reducer_counter.py | 0 .../_examples/use_state_counter.py | 0 .../_examples/victory_chart.py | 0 .../_static/vdom-json-schema.json | 30 +-- .../browser-events.rst | 0 .../hooks-api.rst | 5 +- .../javascript-api.rst | 0 .../specifications.rst | 0 scripts/update_versions.py | 36 +++- 132 files changed, 219 insertions(+), 426 deletions(-) rename docs/source/{developing-idom => about}/changelog.rst (92%) rename docs/source/{developing-idom => about}/contributor-guide.rst (70%) rename docs/source/{ => about}/credits-and-licenses.rst (93%) delete mode 100644 docs/source/developing-idom/index.rst rename docs/source/{ => guides}/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py (100%) rename docs/source/{ => guides}/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json (100%) rename docs/source/{ => guides}/adding-interactivity/components-with-state/_examples/isolated_state/app.py (100%) rename docs/source/{ => guides}/adding-interactivity/components-with-state/_examples/isolated_state/data.json (100%) rename docs/source/{ => guides}/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py (100%) rename docs/source/{ => guides}/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json (100%) rename docs/source/{adding-interactivity/components-with-state/_examples/when_variables_arent_enough => guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough}/app.py (100%) rename docs/source/{adding-interactivity/components-with-state/_examples/when_variables_arent_enough => guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough}/data.json (100%) rename docs/source/{ => guides}/adding-interactivity/components-with-state/index.rst (97%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/dict_update.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/list_insert.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/list_remove.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/list_replace.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/set_remove.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/_examples/set_update.py (100%) rename docs/source/{ => guides}/adding-interactivity/dangers-of-mutability/index.rst (100%) rename docs/source/{ => guides}/adding-interactivity/index.rst (100%) rename docs/source/{ => guides}/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py (100%) rename docs/source/{ => guides}/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py (100%) rename docs/source/{ => guides}/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py (100%) rename docs/source/{ => guides}/adding-interactivity/multiple-state-updates/_examples/set_state_function.py (100%) rename docs/source/{ => guides}/adding-interactivity/multiple-state-updates/index.rst (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/audio_player.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/button_async_handlers.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/button_does_nothing.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/button_prints_event.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/button_prints_message.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py (100%) rename docs/source/{ => guides}/adding-interactivity/responding-to-events/index.rst (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_examples/send_message.py (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/_static/idom-state-change.png (100%) rename docs/source/{ => guides}/adding-interactivity/state-as-a-snapshot/index.rst (100%) rename docs/source/{ => guides}/creating-interfaces/html-with-idom/index.rst (98%) rename docs/source/{ => guides}/creating-interfaces/index.rst (100%) rename docs/source/{ => guides}/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py (100%) rename docs/source/{ => guides}/creating-interfaces/rendering-data/_examples/todo_from_list.py (100%) rename docs/source/{ => guides}/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py (100%) rename docs/source/{ => guides}/creating-interfaces/rendering-data/index.rst (98%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/nested_photos.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/parametrized_photos.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/simple_photo.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/todo_list.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/wrap_in_div.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py (100%) rename docs/source/{ => guides}/creating-interfaces/your-first-components/index.rst (100%) rename docs/source/{ => guides}/escape-hatches/_examples/material_ui_button_no_action.py (100%) rename docs/source/{ => guides}/escape-hatches/_examples/material_ui_button_on_click.py (100%) rename docs/source/{ => guides}/escape-hatches/_examples/super_simple_chart/app.py (100%) rename docs/source/{ => guides}/escape-hatches/_examples/super_simple_chart/super-simple-chart.js (99%) rename docs/source/{ => guides}/escape-hatches/distributing-javascript.rst (100%) rename docs/source/{ => guides}/escape-hatches/index.rst (100%) rename docs/source/{ => guides}/escape-hatches/javascript-components.rst (100%) rename docs/source/{ => guides}/escape-hatches/writing-your-own-client.rst (100%) rename docs/source/{ => guides}/escape-hatches/writing-your-own-server.rst (100%) rename docs/source/{ => guides}/getting-started/_examples/debug_error_example.py (100%) rename docs/source/{ => guides}/getting-started/_examples/hello_world.py (100%) rename docs/source/{ => guides}/getting-started/_examples/sample_app.py (100%) rename docs/source/{ => guides}/getting-started/_static/embed-doc-ex.html (100%) rename docs/source/{ => guides}/getting-started/_static/embed-idom-view/index.html (100%) rename docs/source/{ => guides}/getting-started/_static/embed-idom-view/main.py (100%) rename docs/source/{ => guides}/getting-started/_static/embed-idom-view/screenshot.png (100%) rename docs/source/{ => guides}/getting-started/_static/idom-in-jupyterlab.gif (100%) rename docs/source/{ => guides}/getting-started/_static/logo-django.svg (100%) rename docs/source/{ => guides}/getting-started/_static/logo-jupyter.svg (100%) rename docs/source/{ => guides}/getting-started/_static/logo-plotly.svg (100%) rename docs/source/{ => guides}/getting-started/_static/shared-client-state-server-slider.gif (100%) rename docs/source/{ => guides}/getting-started/index.rst (100%) rename docs/source/{ => guides}/getting-started/installing-idom.rst (99%) rename docs/source/{ => guides}/getting-started/running-idom.rst (100%) rename docs/source/{ => guides}/managing-state/combining-contexts-and-reducers/index.rst (100%) rename docs/source/{ => guides}/managing-state/deeply-sharing-state-with-contexts/index.rst (100%) rename docs/source/{ => guides}/managing-state/how-to-structure-state/index.rst (100%) rename docs/source/{ => guides}/managing-state/index.rst (100%) rename docs/source/{ => guides}/managing-state/sharing-component-state/_examples/filterable_list/app.py (100%) rename docs/source/{ => guides}/managing-state/sharing-component-state/_examples/filterable_list/data.json (100%) rename docs/source/{ => guides}/managing-state/sharing-component-state/_examples/synced_inputs/app.py (100%) rename docs/source/{ => guides}/managing-state/sharing-component-state/index.rst (100%) rename docs/source/{ => guides}/managing-state/simplifying-updates-with-reducers/index.rst (100%) rename docs/source/{ => guides}/managing-state/when-and-how-to-reset-state/index.rst (100%) rename docs/source/{ => guides}/understanding-idom/_static/idom-flow-diagram.svg (100%) rename docs/source/{ => guides}/understanding-idom/_static/live-examples-in-docs.gif (100%) rename docs/source/{ => guides}/understanding-idom/_static/mvc-flow-diagram.svg (100%) rename docs/source/{ => guides}/understanding-idom/_static/npm-download-trends.png (100%) rename docs/source/{ => guides}/understanding-idom/index.rst (85%) rename docs/source/{ => guides}/understanding-idom/layout-render-servers.rst (100%) rename docs/source/{ => guides}/understanding-idom/representing-html.rst (100%) rename docs/source/{ => guides}/understanding-idom/the-rendering-pipeline.rst (100%) rename docs/source/{ => guides}/understanding-idom/the-rendering-process.rst (100%) rename docs/source/{ => guides}/understanding-idom/what-are-components.rst (100%) rename docs/source/{ => guides}/understanding-idom/why-idom-needs-keys.rst (100%) rename docs/source/{ => guides}/understanding-idom/writing-tests.rst (100%) delete mode 100644 docs/source/reference-material/examples.rst delete mode 100644 docs/source/reference-material/faq.rst delete mode 100644 docs/source/reference-material/index.rst rename docs/source/{reference-material => reference}/_examples/character_movement/app.py (100%) rename docs/source/{reference-material => reference}/_examples/character_movement/static/bunny.png (100%) rename docs/source/{reference-material => reference}/_examples/click_count.py (100%) rename docs/source/{reference-material => reference}/_examples/material_ui_switch.py (100%) rename docs/source/{reference-material => reference}/_examples/matplotlib_plot.py (100%) rename docs/source/{reference-material => reference}/_examples/network_graph.py (100%) rename docs/source/{reference-material => reference}/_examples/pigeon_maps.py (100%) rename docs/source/{reference-material => reference}/_examples/simple_dashboard.py (100%) rename docs/source/{reference-material => reference}/_examples/slideshow.py (100%) rename docs/source/{reference-material => reference}/_examples/snake_game.py (100%) rename docs/source/{reference-material => reference}/_examples/todo.py (100%) rename docs/source/{reference-material => reference}/_examples/use_reducer_counter.py (100%) rename docs/source/{reference-material => reference}/_examples/use_state_counter.py (100%) rename docs/source/{reference-material => reference}/_examples/victory_chart.py (100%) rename docs/source/{reference-material => reference}/_static/vdom-json-schema.json (84%) rename docs/source/{reference-material => reference}/browser-events.rst (100%) rename docs/source/{reference-material => reference}/hooks-api.rst (98%) rename docs/source/{reference-material => reference}/javascript-api.rst (100%) rename docs/source/{reference-material => reference}/specifications.rst (100%) diff --git a/docs/source/developing-idom/changelog.rst b/docs/source/about/changelog.rst similarity index 92% rename from docs/source/developing-idom/changelog.rst rename to docs/source/about/changelog.rst index ab678f088..6df2b732a 100644 --- a/docs/source/developing-idom/changelog.rst +++ b/docs/source/about/changelog.rst @@ -1,11 +1,41 @@ Changelog ========= -The IDOM team manages their short and long term plans with `GitHub Projects -`__. If you have questions about what the -team are working on, or have feedback on how issues should be prioritized, feel free to -:discussion-type:`open up a discussion `. +.. note:: + The IDOM team manages their short and long term plans with `GitHub Projects + `__. If you have questions about what + the team are working on, or have feedback on how issues should be prioritized, feel + free to :discussion-type:`open up a discussion `. + +All notable changes to this project will be recorded in this document. The style of +which is based on `Keep a Changelog `__. The versioning +scheme for the project adheres to `Semantic Versioning `__. + + +Unreleased +---------- + +While this release doesn't warrant a minor version bump, the last release should have +been. Thus, to make up for that, this release will be a minor bump. It includes misc +bug fixes, and several feature adds, the most important of which is the addition of the +``use_context`` hook. + +Added: + +- Support for keys in HTML fragments - :issue:`682` + +**Merged Pull Requests** + +- reset schedule_render_later flag after triggering - :pull:`688` +- support keys in HTML fragments - :pull:`683` +- Add Use Context Hook - :pull:`585` + +---- + +Releases below do not use the "Keep a Changelog" style guidelines. + +---- 0.36.3 ------ @@ -92,7 +122,7 @@ for elements at the root did not trigger unmounts. ------ As part of :pull:`614`, elements which changed type were not deeply unmounted. This -behavior is probably undesireable though since the state for children of the element +behavior is probably undesirable though since the state for children of the element in question would persist (probably unexpectedly). **Pull Requests** @@ -136,7 +166,7 @@ this marker file. The highlight of this release is that the default :ref:`"key" ` of all elements will be their index amongst their neighbors. Previously this behavior could be engaged by setting ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=1`` when -running IDOM. In this release though, you will need to explicitely turn off this feature +running IDOM. In this release though, you will need to explicitly turn off this feature (i.e. ``=0``) to return to the old behavior. With this change, some may notice additional error logs which warn that: @@ -200,7 +230,7 @@ event dictionary. As part of this change we also add ``event["currentTarget"]`` 0.33.3 ------ -Contains a small number of bug fixes and improvements. The most signicifact change is +Contains a small number of bug fixes and improvements. The most significant change is the addition of a warning stating that `IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=1` will become the default in a future release. Beyond that, a lesser improvement makes it possible to use the default export from a Javascript module when calling `module_from_template` by @@ -277,7 +307,7 @@ yet. - move VdomDict and VdomJson to proto - :pull:`492` - only send error info in debug mode - :pull:`491` -- correcly apply client-side JSON patch - :pull:`490` +- correctly apply client-side JSON patch - :pull:`490` - add script to set version of all packages in IDOM - :pull:`483` - Pass import source to bind - :pull:`482` - Do not mutate client-side model - :pull:`481` @@ -339,12 +369,12 @@ The latter behavior is the most egregious design issue since there's absolutely indication that the component instance can be swapped out (not even a comment). The new refactor no longer binds component or layout instances to a ``LifeCycleHook``. -Instead, the hook simply receives an unparametrized callback that can be triggered to +Instead, the hook simply receives an un-parametrized callback that can be triggered to schedule a render. While some error logs lose clarity (since we can't say what component caused them). This change precludes a need for the layout to ever mutate the hook. -To accomodate this change, the internal representation of the layout's state had to -change. Previsouly, a class-based approach was take, where methods of the state-holding +To accommodate this change, the internal representation of the layout's state had to +change. Previously, a class-based approach was take, where methods of the state-holding classes were meant to handle all use cases. Now we rely much more heavily on very simple (and mostly static) data structures that have purpose built constructor functions that much more narrowly address each use case. @@ -497,7 +527,7 @@ and breaking changes, the most significant of which are: - refactor flask - :commit:`94681b6` - refactor tornado + misc fixes to sanic/fastapi - :commit:`16c9209` - refactor fastapi using server protocol - :commit:`0cc03ba` -- recactor sanic server - :commit:`43d4b4f` +- refactor sanic server - :commit:`43d4b4f` - use server protocol instead of inheritance - :commit:`abe0fde` - support currentTime attr of audio/video elements - :commit:`975b54a` - pass children as props to mount() - :commit:`9494bc0` @@ -554,7 +584,7 @@ several bugs that had cropped up related to improper usage of ``anyio``. **Highlighted Commits:** -- improve docs + simplify multiview - :commit:`4129b60` +- improve docs + simplify multi-view - :commit:`4129b60` - require anyio>=3.0 - :commit:`24aed28` - refactor dispatchers - :commit:`ce8e060` diff --git a/docs/source/developing-idom/contributor-guide.rst b/docs/source/about/contributor-guide.rst similarity index 70% rename from docs/source/developing-idom/contributor-guide.rst rename to docs/source/about/contributor-guide.rst index 8937f12e3..56de0d747 100644 --- a/docs/source/developing-idom/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -1,17 +1,42 @@ Contributor Guide ================= +.. note:: + + The + `Code of Conduct `__ + applies in all community spaces. If you are not familiar with our Code of Conduct + policy, take a minute to read it before making your first contribution. + +The IDOM team welcomes contributions and contributors of all kinds - whether they come +as code changes, participation in the discussions, opening issues and pointing out bugs, +or simply sharing your work with your colleagues and friends. We're excited to see how +you can help move this project and community forward! + + +.. _everyone can contribute: + +Everyone Can Contribute! +------------------------ + +Trust us, there's so many ways to support the project. We're always looking for people +who can: + +- Improve our documentation +- Teach and tell others about IDOM +- Share ideas for new features +- Report bugs +- Participate in general discussions + +Still aren't sure what you have to offer? Just :discussion-type:`ask us ` and +we'll help you make your first contribution. + + .. note:: If you have any questions during set up or development post on our :discussion-type:`discussion board ` and we'll answer them. -This project uses the `GitHub Flow`_ (more detail :ref:`below `) -for collaboration and consists primarily of Python code and Javascript code. A -:ref:`variety of tools ` are used to aid in its development. -Any code contributed to IDOM is validated by a :ref:`series of tests ` to ensure its quality and correctness. - Making a Pull Request --------------------- @@ -41,6 +66,47 @@ about how to get started. To make a change to IDOM you'll do the following: :ref:`equality checks ` and, with any luck, accept your request. At that point your contribution will be merged into the main codebase! +Create a Changelog Entry +........................ + +As part of your pull request, you'll want to edit the :ref:`Changelog` by adding an +entry describing what you've changed or improved. You should write an entry in the style +of `Keep a Changelog `__ that falls under one of the +following categories, and add it to the :ref:`Unreleased` section of the changelog: + +- **Added** - for new features. +- **Changed** - for changes in existing functionality. +- **Deprecated** - for soon-to-be removed features. +- **Removed** - for now removed features. +- **Fixed** - for any bug fixes. +- **Documented** - for improvements to this documentation. +- **Security** - in case of vulnerabilities. + +If one of the sections doesn't exist, add it. If it does already, add a bullet point +under the relevant section. Here's a short example of what an unreleased changelog entry +might look like: + +.. code-block:: rst + + Unreleased + ---------- + + **Added** + + - A really cool new feature - :pull:`123` + + **Changed** + + - The behavior of some existing feature - :pull:`456` + + **Fixed** + + - Some really bad bug - :issue:`789` + +.. note:: + + ``:issue:`` and ``:pull:`` refer to issue and pull request ticket numbers. + Development Environment ----------------------- @@ -104,7 +170,7 @@ However you may also ``cd`` to the ``src/client`` directory which contains a Running The Tests ----------------- -The test suite for IDOM uses Nox_ and NPM_ in order to validate: +The test suite for IDOM is executed with Nox_. The suite covers: 1. Server-side Python code with PyTest_ @@ -112,11 +178,7 @@ The test suite for IDOM uses Nox_ and NPM_ in order to validate: 3. Client-side Javascript code with UVU_ - -Running Python Tests -.................... - -To run the full suite of Python tests you'll need to install: +To run the full suite of tests you'll need to install: - `Google Chrome`_ @@ -126,8 +188,7 @@ To run the full suite of Python tests you'll need to install: Be sure the version of `Google Chrome`_ and ChromeDriver_ you install are compatible. -Once you've installed the aforementioned browser and web driver you should be able to -run: +Once you've installed the aforementioned browser and web driver you'll be able to run: .. code-block:: bash @@ -139,27 +200,6 @@ If you prefer to run the tests using a headless browser: nox -s test -- --headless -You can pass other options to pytest in a similar manner: - -.. code-block:: bash - - nox -s test -- arg --flag --key=value - - -Running Javascript Tests -........................ - -If you've already run ``npm install`` inside the ``src/idom/client/app`` directory, you -can execute the suite of workspace tests under ``packages/*`` with: - -.. code-block:: - - npm test - -As a final check, you might want to run ``npm run build``. This command is run in the -top-level ``setup.py`` installation script for the Python package, so if this command -fails, the installation of the Python package with ``pip`` will too. - Code Quality Checks ------------------- @@ -175,11 +215,12 @@ The following are currently being used: - Black_ - an opinionated code formatter - Flake8_ - a style guide enforcement tool - ISort_ - a utility for alphabetically sorting imports -- Prettier_ - a tool for autimatically formatting Javascript code +- Prettier_ - a tool for automatically formatting various file types -The most strict measure of quality enforced on the codebase is 100% coverage. This means -that every line of coded added to IDOM requires a test case that exercises it. This -doesn't prevent all bugs, but it should ensure that we catch the most common ones. +The most strict measure of quality enforced on the codebase is 100% test coverage in +Python files. This means that every line of coded added to IDOM requires a test case +that exercises it. This doesn't prevent all bugs, but it should ensure that we catch the +most common ones. If you need help understanding why code you've submitted does not pass these checks, then be sure to ask, either in the :discussion-type:`Community Forum ` or in @@ -196,7 +237,7 @@ your :ref:`Pull Request `. Building The Documentation -------------------------- -To build and display the documentation simply run: +To build and display the documentation locally run: .. code-block:: bash @@ -215,13 +256,13 @@ To run some of the examples in the documentation as if they were tests run: nox -s test_docs Building the documentation as it's deployed in production requires Docker_. Once you've -installed, you can run: +installed Docker, you can run: .. code-block:: bash nox -s docs_in_docker -You should then navigate to to see the documentation. +Where you can then navigate to http://localhost:5000.. Release Process @@ -249,58 +290,7 @@ To update the version for all core Javascript and Python packages in IDOM run: .. note:: - The new version must adhere to `SemVer `__. Once IDOM - becomes stable we will shift to using `CalVer `__. - - -Create Changelog Entry -...................... - -Immediately after updating the version you'll need to create a changelog entry for the -release. This should **always** include a human authored summary of the changes it -includes. For example, new or deprecated features, performance improvements, and bug -fixes (whatever is relevant). To help with this, there are some useful tools for -gathering the Pull Requests and Issues that have been merged and resolved since the last -release. While reviewing these items can help in writing a human authored release -summary, you **must not** resort to a bullet list of Pull Request and Issue -descriptions. Putting these two together, the format of a changelog entry should look a -bit like this: - -.. code-block:: text - - X.Y.Z - ----- - - The release summary... - - **Closed Issues** - - - Some issue - :issue:`123` - - Another issue - :issue:`456` - - **Pull Requests** - - - Some pull request - :pull:`123` - - Another pull request - :pull:`456` - - **Deprecated Features** - - - Description one - - Description two - -To create the list of pull requests and closed issues you can copy the output of the -following commands using the ```` of your choosing (``rst``, ``md``, ``text``): - -.. note:: - - You should currate the list - not everything needs to be included. - -.. code-block:: bash - - nox -s changes_since_release -- - -Once the version has been updated and the changelog entry completed, you should commit -the changes. + The new version must adhere to `SemVer `__. Creating The Release @@ -321,12 +311,12 @@ To create the release tag you can run the following command: nox -s tag -- push -Last, you must create a -`"Release" `__ +Last, you must create a `"Release" +`__ in GitHub. Because we pushed a tag using the command above, there should already be a -saved draft which needs a title and desription. The title should simply be the version -(same as the tag), and the description should, at minimum, be a markdown version of the -already authored :ref:`Changelog summary `. +saved draft which needs a title and description. The title should simply be the version +(same as the tag), and the description should simply use GitHub's "Auto-generated +release notes". Other Core Repositories diff --git a/docs/source/credits-and-licenses.rst b/docs/source/about/credits-and-licenses.rst similarity index 93% rename from docs/source/credits-and-licenses.rst rename to docs/source/about/credits-and-licenses.rst index 5aef11a59..4bc1544f2 100644 --- a/docs/source/credits-and-licenses.rst +++ b/docs/source/about/credits-and-licenses.rst @@ -12,5 +12,5 @@ copy language or examples where IDOM's behavior mirrors that of React's. Source Code License ------------------- -.. literalinclude:: ../../LICENSE +.. literalinclude:: ../../../LICENSE :language: text diff --git a/docs/source/developing-idom/index.rst b/docs/source/developing-idom/index.rst deleted file mode 100644 index e9a881cf2..000000000 --- a/docs/source/developing-idom/index.rst +++ /dev/null @@ -1,65 +0,0 @@ -Developing IDOM -=============== - -.. toctree:: - :hidden: - - contributor-guide - changelog - -.. note:: - - The - `Code of Conduct `__ - applies in all community spaces. If you are not familiar with our Code of Conduct - policy, take a minute to read it before making your first contribution. - -The IDOM team welcomes contributions and contributors of all kinds - whether they come -as code changes, participation in the discussions, opening issues and pointing out bugs, -or simply sharing your work with your colleagues and friends. We're excited to see how -you can help move this project and community forward! - - -.. grid:: 1 2 2 2 - :gutter: 1 - - .. grid-item-card:: :octicon:`people` Discussion Forum - :link: https://github.com/idom-team/idom/discussions - - Ask questions, share ideas, or show projects - - .. grid-item-card:: :octicon:`info` Contributor Guide - :link: contributor-guide - :link-type: doc - - Learn how to make changes to IDOM and submit them back to the project - - .. grid-item-card:: :octicon:`git-pull-request` Changelog - :link: changelog - :link-type: doc - - Discover the features and fixes included in each release - - .. grid-item-card:: :octicon:`milestone` Roadmap - :link: https://github.com/orgs/idom-team/projects/1 - :link-type: url - - See the long term goals of the IDOM team - - -.. _everyone can contribute: - -Everyone Can Contribute! ------------------------- - -Trust us, there's so many ways to support the project. We're always looking for people -who can: - -- Improve our documentation -- Teach and tell others about IDOM -- Share ideas for new features -- Report bugs -- Participate in general discussions - -Still aren't sure what you have to offer? Just :discussion-type:`ask us ` and -we'll help you make your first contribution. diff --git a/docs/source/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py diff --git a/docs/source/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json rename to docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/data.json diff --git a/docs/source/adding-interactivity/components-with-state/_examples/isolated_state/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/app.py similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/isolated_state/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/app.py diff --git a/docs/source/adding-interactivity/components-with-state/_examples/isolated_state/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/data.json similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/isolated_state/data.json rename to docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/data.json diff --git a/docs/source/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py diff --git a/docs/source/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json rename to docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/data.json diff --git a/docs/source/adding-interactivity/components-with-state/_examples/when_variables_arent_enough/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/app.py similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/when_variables_arent_enough/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/app.py diff --git a/docs/source/adding-interactivity/components-with-state/_examples/when_variables_arent_enough/data.json b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/data.json similarity index 100% rename from docs/source/adding-interactivity/components-with-state/_examples/when_variables_arent_enough/data.json rename to docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/data.json diff --git a/docs/source/adding-interactivity/components-with-state/index.rst b/docs/source/guides/adding-interactivity/components-with-state/index.rst similarity index 97% rename from docs/source/adding-interactivity/components-with-state/index.rst rename to docs/source/guides/adding-interactivity/components-with-state/index.rst index 93928e05d..5c9161de2 100644 --- a/docs/source/adding-interactivity/components-with-state/index.rst +++ b/docs/source/guides/adding-interactivity/components-with-state/index.rst @@ -16,7 +16,7 @@ Below is a gallery of images about sculpture. Clicking the "Next" button should increment the ``index`` and, as a result, change what image is displayed. However, this does not work: -.. idom:: _examples/when_variables_arent_enough +.. idom:: _examples/when_variables_are_not_enough .. note:: @@ -42,7 +42,7 @@ that still wouldn't fix the underlying problems: To address these problems, IDOM provides the :func:`~idom.core.hooks.use_state` "hook" which provides: -1. A **state variable** whose data is retained aross renders. +1. A **state variable** whose data is retained across renders. 2. A **state setter** function that can be used to update that variable and trigger a render. @@ -130,7 +130,7 @@ Thus, in this example: of the component. The convention is that, if you name your state variable ``thing``, your state setter -should be named ``set_thing``. While you could name them anything you want, adhereing to +should be named ``set_thing``. While you could name them anything you want, adhering to the convention makes things easier to understand across projects. ---- @@ -308,7 +308,7 @@ displayed and ``show_more`` is solely concerned with whether the description for sculpture is shown. Put other way ``index`` is concerned with *what* information is displayed while ``show_more`` is concerned with *how* it is displayed. Conversely though, if you have a form with many fields, it probably makes sense to have a single -objec that holds the data for all the fields rather than an object per-field. +object that holds the data for all the fields rather than an object per-field. .. note:: @@ -340,7 +340,7 @@ it. The parent component can’t change it. This lets you add state to any compo remove it without impacting the rest of the components. .. card:: - :link: /managing-state/sharing-component-state/index + :link: /guides/managing-state/sharing-component-state/index :link-type: doc :octicon:`book` Read More diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/dict_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/dict_update.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/list_insert.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/list_insert.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/list_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/list_remove.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/list_replace.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/list_replace.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/set_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/set_remove.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/_examples/set_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/_examples/set_update.py rename to docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py diff --git a/docs/source/adding-interactivity/dangers-of-mutability/index.rst b/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst similarity index 100% rename from docs/source/adding-interactivity/dangers-of-mutability/index.rst rename to docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst diff --git a/docs/source/adding-interactivity/index.rst b/docs/source/guides/adding-interactivity/index.rst similarity index 100% rename from docs/source/adding-interactivity/index.rst rename to docs/source/guides/adding-interactivity/index.rst diff --git a/docs/source/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py similarity index 100% rename from docs/source/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py rename to docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py diff --git a/docs/source/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py similarity index 100% rename from docs/source/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py rename to docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py diff --git a/docs/source/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py similarity index 100% rename from docs/source/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py rename to docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py diff --git a/docs/source/adding-interactivity/multiple-state-updates/_examples/set_state_function.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py similarity index 100% rename from docs/source/adding-interactivity/multiple-state-updates/_examples/set_state_function.py rename to docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py diff --git a/docs/source/adding-interactivity/multiple-state-updates/index.rst b/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst similarity index 100% rename from docs/source/adding-interactivity/multiple-state-updates/index.rst rename to docs/source/guides/adding-interactivity/multiple-state-updates/index.rst diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/audio_player.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/audio_player.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/button_async_handlers.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/button_async_handlers.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/button_does_nothing.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/button_does_nothing.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/button_prints_event.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/button_prints_event.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/button_prints_message.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/button_prints_message.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py diff --git a/docs/source/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py rename to docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py diff --git a/docs/source/adding-interactivity/responding-to-events/index.rst b/docs/source/guides/adding-interactivity/responding-to-events/index.rst similarity index 100% rename from docs/source/adding-interactivity/responding-to-events/index.rst rename to docs/source/guides/adding-interactivity/responding-to-events/index.rst diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/delayed_print_after_set.py diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_chat_message.py diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/print_count_after_set.py diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_examples/send_message.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/send_message.py similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_examples/send_message.py rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/send_message.py diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_examples/set_counter_3_times.py diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/direct-state-change.png diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/_static/idom-state-change.png b/docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/idom-state-change.png similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/_static/idom-state-change.png rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/_static/idom-state-change.png diff --git a/docs/source/adding-interactivity/state-as-a-snapshot/index.rst b/docs/source/guides/adding-interactivity/state-as-a-snapshot/index.rst similarity index 100% rename from docs/source/adding-interactivity/state-as-a-snapshot/index.rst rename to docs/source/guides/adding-interactivity/state-as-a-snapshot/index.rst diff --git a/docs/source/creating-interfaces/html-with-idom/index.rst b/docs/source/guides/creating-interfaces/html-with-idom/index.rst similarity index 98% rename from docs/source/creating-interfaces/html-with-idom/index.rst rename to docs/source/guides/creating-interfaces/html-with-idom/index.rst index 5bad18912..52ca1e617 100644 --- a/docs/source/creating-interfaces/html-with-idom/index.rst +++ b/docs/source/guides/creating-interfaces/html-with-idom/index.rst @@ -110,7 +110,7 @@ Additionally, instead of specifying ``style`` using a string, we use a dictionar .. card:: - :link: /understanding-idom/representing-html + :link: /guides/understanding-idom/representing-html :link-type: doc :octicon:`book` Read More diff --git a/docs/source/creating-interfaces/index.rst b/docs/source/guides/creating-interfaces/index.rst similarity index 100% rename from docs/source/creating-interfaces/index.rst rename to docs/source/guides/creating-interfaces/index.rst diff --git a/docs/source/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py b/docs/source/guides/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py similarity index 100% rename from docs/source/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py rename to docs/source/guides/creating-interfaces/rendering-data/_examples/sorted_and_filtered_todo_list.py diff --git a/docs/source/creating-interfaces/rendering-data/_examples/todo_from_list.py b/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_from_list.py similarity index 100% rename from docs/source/creating-interfaces/rendering-data/_examples/todo_from_list.py rename to docs/source/guides/creating-interfaces/rendering-data/_examples/todo_from_list.py diff --git a/docs/source/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py b/docs/source/guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py similarity index 100% rename from docs/source/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py rename to docs/source/guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys.py diff --git a/docs/source/creating-interfaces/rendering-data/index.rst b/docs/source/guides/creating-interfaces/rendering-data/index.rst similarity index 98% rename from docs/source/creating-interfaces/rendering-data/index.rst rename to docs/source/guides/creating-interfaces/rendering-data/index.rst index d10aed9c3..78990bbe9 100644 --- a/docs/source/creating-interfaces/rendering-data/index.rst +++ b/docs/source/guides/creating-interfaces/rendering-data/index.rst @@ -76,7 +76,7 @@ priority. Thus, we need to change the data structure we're using to represent ou ] With this we can now imaging writing some filtering and sorting logic using Python's -:func:`filter` and :func:`sorted` functions respecitvely. We'll do this by only +:func:`filter` and :func:`sorted` functions respectively. We'll do this by only displaying items whose ``priority`` is less than or equal to some ``filter_by_priority`` and then ordering the elements based on the ``priority``: @@ -231,7 +231,7 @@ with the correct UI element. html.ul([html.li(data["text"], key=data["id"]) for data in data_2]), ) -.. dropdown:: Keys must be unique amonst siblings +.. dropdown:: Keys must be unique amongst siblings :color: danger Keys must be unique among siblings. @@ -288,7 +288,7 @@ use for each ``key``? .. card:: - :link: /understanding-idom/why-idom-needs-keys + :link: /guides/understanding-idom/why-idom-needs-keys :link-type: doc :octicon:`book` Read More diff --git a/docs/source/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/bad_conditional_todo_list.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/nested_photos.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/nested_photos.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/nested_photos.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/nested_photos.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/parametrized_photos.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/parametrized_photos.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/parametrized_photos.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/parametrized_photos.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/simple_photo.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/simple_photo.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/simple_photo.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/simple_photo.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/todo_list.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/todo_list.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/todo_list.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/wrap_in_div.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_div.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/wrap_in_div.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_div.py diff --git a/docs/source/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py similarity index 100% rename from docs/source/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py rename to docs/source/guides/creating-interfaces/your-first-components/_examples/wrap_in_fragment.py diff --git a/docs/source/creating-interfaces/your-first-components/index.rst b/docs/source/guides/creating-interfaces/your-first-components/index.rst similarity index 100% rename from docs/source/creating-interfaces/your-first-components/index.rst rename to docs/source/guides/creating-interfaces/your-first-components/index.rst diff --git a/docs/source/escape-hatches/_examples/material_ui_button_no_action.py b/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py similarity index 100% rename from docs/source/escape-hatches/_examples/material_ui_button_no_action.py rename to docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py diff --git a/docs/source/escape-hatches/_examples/material_ui_button_on_click.py b/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py similarity index 100% rename from docs/source/escape-hatches/_examples/material_ui_button_on_click.py rename to docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py diff --git a/docs/source/escape-hatches/_examples/super_simple_chart/app.py b/docs/source/guides/escape-hatches/_examples/super_simple_chart/app.py similarity index 100% rename from docs/source/escape-hatches/_examples/super_simple_chart/app.py rename to docs/source/guides/escape-hatches/_examples/super_simple_chart/app.py diff --git a/docs/source/escape-hatches/_examples/super_simple_chart/super-simple-chart.js b/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js similarity index 99% rename from docs/source/escape-hatches/_examples/super_simple_chart/super-simple-chart.js rename to docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js index f14103d78..71f117860 100644 --- a/docs/source/escape-hatches/_examples/super_simple_chart/super-simple-chart.js +++ b/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js @@ -8,7 +8,7 @@ export function bind(node, config) { create: (component, props, children) => h(component, props, ...children), render: (element) => render(element, node), unmount: () => render(null, node), - } + }; } export function SuperSimpleChart(props) { diff --git a/docs/source/escape-hatches/distributing-javascript.rst b/docs/source/guides/escape-hatches/distributing-javascript.rst similarity index 100% rename from docs/source/escape-hatches/distributing-javascript.rst rename to docs/source/guides/escape-hatches/distributing-javascript.rst diff --git a/docs/source/escape-hatches/index.rst b/docs/source/guides/escape-hatches/index.rst similarity index 100% rename from docs/source/escape-hatches/index.rst rename to docs/source/guides/escape-hatches/index.rst diff --git a/docs/source/escape-hatches/javascript-components.rst b/docs/source/guides/escape-hatches/javascript-components.rst similarity index 100% rename from docs/source/escape-hatches/javascript-components.rst rename to docs/source/guides/escape-hatches/javascript-components.rst diff --git a/docs/source/escape-hatches/writing-your-own-client.rst b/docs/source/guides/escape-hatches/writing-your-own-client.rst similarity index 100% rename from docs/source/escape-hatches/writing-your-own-client.rst rename to docs/source/guides/escape-hatches/writing-your-own-client.rst diff --git a/docs/source/escape-hatches/writing-your-own-server.rst b/docs/source/guides/escape-hatches/writing-your-own-server.rst similarity index 100% rename from docs/source/escape-hatches/writing-your-own-server.rst rename to docs/source/guides/escape-hatches/writing-your-own-server.rst diff --git a/docs/source/getting-started/_examples/debug_error_example.py b/docs/source/guides/getting-started/_examples/debug_error_example.py similarity index 100% rename from docs/source/getting-started/_examples/debug_error_example.py rename to docs/source/guides/getting-started/_examples/debug_error_example.py diff --git a/docs/source/getting-started/_examples/hello_world.py b/docs/source/guides/getting-started/_examples/hello_world.py similarity index 100% rename from docs/source/getting-started/_examples/hello_world.py rename to docs/source/guides/getting-started/_examples/hello_world.py diff --git a/docs/source/getting-started/_examples/sample_app.py b/docs/source/guides/getting-started/_examples/sample_app.py similarity index 100% rename from docs/source/getting-started/_examples/sample_app.py rename to docs/source/guides/getting-started/_examples/sample_app.py diff --git a/docs/source/getting-started/_static/embed-doc-ex.html b/docs/source/guides/getting-started/_static/embed-doc-ex.html similarity index 100% rename from docs/source/getting-started/_static/embed-doc-ex.html rename to docs/source/guides/getting-started/_static/embed-doc-ex.html diff --git a/docs/source/getting-started/_static/embed-idom-view/index.html b/docs/source/guides/getting-started/_static/embed-idom-view/index.html similarity index 100% rename from docs/source/getting-started/_static/embed-idom-view/index.html rename to docs/source/guides/getting-started/_static/embed-idom-view/index.html diff --git a/docs/source/getting-started/_static/embed-idom-view/main.py b/docs/source/guides/getting-started/_static/embed-idom-view/main.py similarity index 100% rename from docs/source/getting-started/_static/embed-idom-view/main.py rename to docs/source/guides/getting-started/_static/embed-idom-view/main.py diff --git a/docs/source/getting-started/_static/embed-idom-view/screenshot.png b/docs/source/guides/getting-started/_static/embed-idom-view/screenshot.png similarity index 100% rename from docs/source/getting-started/_static/embed-idom-view/screenshot.png rename to docs/source/guides/getting-started/_static/embed-idom-view/screenshot.png diff --git a/docs/source/getting-started/_static/idom-in-jupyterlab.gif b/docs/source/guides/getting-started/_static/idom-in-jupyterlab.gif similarity index 100% rename from docs/source/getting-started/_static/idom-in-jupyterlab.gif rename to docs/source/guides/getting-started/_static/idom-in-jupyterlab.gif diff --git a/docs/source/getting-started/_static/logo-django.svg b/docs/source/guides/getting-started/_static/logo-django.svg similarity index 100% rename from docs/source/getting-started/_static/logo-django.svg rename to docs/source/guides/getting-started/_static/logo-django.svg diff --git a/docs/source/getting-started/_static/logo-jupyter.svg b/docs/source/guides/getting-started/_static/logo-jupyter.svg similarity index 100% rename from docs/source/getting-started/_static/logo-jupyter.svg rename to docs/source/guides/getting-started/_static/logo-jupyter.svg diff --git a/docs/source/getting-started/_static/logo-plotly.svg b/docs/source/guides/getting-started/_static/logo-plotly.svg similarity index 100% rename from docs/source/getting-started/_static/logo-plotly.svg rename to docs/source/guides/getting-started/_static/logo-plotly.svg diff --git a/docs/source/getting-started/_static/shared-client-state-server-slider.gif b/docs/source/guides/getting-started/_static/shared-client-state-server-slider.gif similarity index 100% rename from docs/source/getting-started/_static/shared-client-state-server-slider.gif rename to docs/source/guides/getting-started/_static/shared-client-state-server-slider.gif diff --git a/docs/source/getting-started/index.rst b/docs/source/guides/getting-started/index.rst similarity index 100% rename from docs/source/getting-started/index.rst rename to docs/source/guides/getting-started/index.rst diff --git a/docs/source/getting-started/installing-idom.rst b/docs/source/guides/getting-started/installing-idom.rst similarity index 99% rename from docs/source/getting-started/installing-idom.rst rename to docs/source/guides/getting-started/installing-idom.rst index a9082972d..1187704e4 100644 --- a/docs/source/getting-started/installing-idom.rst +++ b/docs/source/guides/getting-started/installing-idom.rst @@ -105,7 +105,7 @@ are always excited to :ref:`welcome ` new contributions contributors of all kinds .. card:: - :link: /developing-idom/index + :link: /about/contributor-guide :link-type: doc :octicon:`book` Read More diff --git a/docs/source/getting-started/running-idom.rst b/docs/source/guides/getting-started/running-idom.rst similarity index 100% rename from docs/source/getting-started/running-idom.rst rename to docs/source/guides/getting-started/running-idom.rst diff --git a/docs/source/managing-state/combining-contexts-and-reducers/index.rst b/docs/source/guides/managing-state/combining-contexts-and-reducers/index.rst similarity index 100% rename from docs/source/managing-state/combining-contexts-and-reducers/index.rst rename to docs/source/guides/managing-state/combining-contexts-and-reducers/index.rst diff --git a/docs/source/managing-state/deeply-sharing-state-with-contexts/index.rst b/docs/source/guides/managing-state/deeply-sharing-state-with-contexts/index.rst similarity index 100% rename from docs/source/managing-state/deeply-sharing-state-with-contexts/index.rst rename to docs/source/guides/managing-state/deeply-sharing-state-with-contexts/index.rst diff --git a/docs/source/managing-state/how-to-structure-state/index.rst b/docs/source/guides/managing-state/how-to-structure-state/index.rst similarity index 100% rename from docs/source/managing-state/how-to-structure-state/index.rst rename to docs/source/guides/managing-state/how-to-structure-state/index.rst diff --git a/docs/source/managing-state/index.rst b/docs/source/guides/managing-state/index.rst similarity index 100% rename from docs/source/managing-state/index.rst rename to docs/source/guides/managing-state/index.rst diff --git a/docs/source/managing-state/sharing-component-state/_examples/filterable_list/app.py b/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/app.py similarity index 100% rename from docs/source/managing-state/sharing-component-state/_examples/filterable_list/app.py rename to docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/app.py diff --git a/docs/source/managing-state/sharing-component-state/_examples/filterable_list/data.json b/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/data.json similarity index 100% rename from docs/source/managing-state/sharing-component-state/_examples/filterable_list/data.json rename to docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/data.json diff --git a/docs/source/managing-state/sharing-component-state/_examples/synced_inputs/app.py b/docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/app.py similarity index 100% rename from docs/source/managing-state/sharing-component-state/_examples/synced_inputs/app.py rename to docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/app.py diff --git a/docs/source/managing-state/sharing-component-state/index.rst b/docs/source/guides/managing-state/sharing-component-state/index.rst similarity index 100% rename from docs/source/managing-state/sharing-component-state/index.rst rename to docs/source/guides/managing-state/sharing-component-state/index.rst diff --git a/docs/source/managing-state/simplifying-updates-with-reducers/index.rst b/docs/source/guides/managing-state/simplifying-updates-with-reducers/index.rst similarity index 100% rename from docs/source/managing-state/simplifying-updates-with-reducers/index.rst rename to docs/source/guides/managing-state/simplifying-updates-with-reducers/index.rst diff --git a/docs/source/managing-state/when-and-how-to-reset-state/index.rst b/docs/source/guides/managing-state/when-and-how-to-reset-state/index.rst similarity index 100% rename from docs/source/managing-state/when-and-how-to-reset-state/index.rst rename to docs/source/guides/managing-state/when-and-how-to-reset-state/index.rst diff --git a/docs/source/understanding-idom/_static/idom-flow-diagram.svg b/docs/source/guides/understanding-idom/_static/idom-flow-diagram.svg similarity index 100% rename from docs/source/understanding-idom/_static/idom-flow-diagram.svg rename to docs/source/guides/understanding-idom/_static/idom-flow-diagram.svg diff --git a/docs/source/understanding-idom/_static/live-examples-in-docs.gif b/docs/source/guides/understanding-idom/_static/live-examples-in-docs.gif similarity index 100% rename from docs/source/understanding-idom/_static/live-examples-in-docs.gif rename to docs/source/guides/understanding-idom/_static/live-examples-in-docs.gif diff --git a/docs/source/understanding-idom/_static/mvc-flow-diagram.svg b/docs/source/guides/understanding-idom/_static/mvc-flow-diagram.svg similarity index 100% rename from docs/source/understanding-idom/_static/mvc-flow-diagram.svg rename to docs/source/guides/understanding-idom/_static/mvc-flow-diagram.svg diff --git a/docs/source/understanding-idom/_static/npm-download-trends.png b/docs/source/guides/understanding-idom/_static/npm-download-trends.png similarity index 100% rename from docs/source/understanding-idom/_static/npm-download-trends.png rename to docs/source/guides/understanding-idom/_static/npm-download-trends.png diff --git a/docs/source/understanding-idom/index.rst b/docs/source/guides/understanding-idom/index.rst similarity index 85% rename from docs/source/understanding-idom/index.rst rename to docs/source/guides/understanding-idom/index.rst index 4c0baaf2a..389995553 100644 --- a/docs/source/understanding-idom/index.rst +++ b/docs/source/guides/understanding-idom/index.rst @@ -11,3 +11,7 @@ Understanding IDOM the-rendering-process layout-render-servers writing-tests + +.. note:: + + Under construction 🚧 diff --git a/docs/source/understanding-idom/layout-render-servers.rst b/docs/source/guides/understanding-idom/layout-render-servers.rst similarity index 100% rename from docs/source/understanding-idom/layout-render-servers.rst rename to docs/source/guides/understanding-idom/layout-render-servers.rst diff --git a/docs/source/understanding-idom/representing-html.rst b/docs/source/guides/understanding-idom/representing-html.rst similarity index 100% rename from docs/source/understanding-idom/representing-html.rst rename to docs/source/guides/understanding-idom/representing-html.rst diff --git a/docs/source/understanding-idom/the-rendering-pipeline.rst b/docs/source/guides/understanding-idom/the-rendering-pipeline.rst similarity index 100% rename from docs/source/understanding-idom/the-rendering-pipeline.rst rename to docs/source/guides/understanding-idom/the-rendering-pipeline.rst diff --git a/docs/source/understanding-idom/the-rendering-process.rst b/docs/source/guides/understanding-idom/the-rendering-process.rst similarity index 100% rename from docs/source/understanding-idom/the-rendering-process.rst rename to docs/source/guides/understanding-idom/the-rendering-process.rst diff --git a/docs/source/understanding-idom/what-are-components.rst b/docs/source/guides/understanding-idom/what-are-components.rst similarity index 100% rename from docs/source/understanding-idom/what-are-components.rst rename to docs/source/guides/understanding-idom/what-are-components.rst diff --git a/docs/source/understanding-idom/why-idom-needs-keys.rst b/docs/source/guides/understanding-idom/why-idom-needs-keys.rst similarity index 100% rename from docs/source/understanding-idom/why-idom-needs-keys.rst rename to docs/source/guides/understanding-idom/why-idom-needs-keys.rst diff --git a/docs/source/understanding-idom/writing-tests.rst b/docs/source/guides/understanding-idom/writing-tests.rst similarity index 100% rename from docs/source/understanding-idom/writing-tests.rst rename to docs/source/guides/understanding-idom/writing-tests.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index 516a33a25..1a48693f9 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -9,30 +9,34 @@ What is IDOM? .. toctree:: :hidden: - :caption: User Guide + :caption: Guides - getting-started/index - creating-interfaces/index - adding-interactivity/index - managing-state/index - escape-hatches/index - understanding-idom/index + guides/getting-started/index + guides/creating-interfaces/index + guides/adding-interactivity/index + guides/managing-state/index + guides/escape-hatches/index + guides/understanding-idom/index .. toctree:: :hidden: - :caption: Other Resources + :caption: Reference - developing-idom/index - reference-material/index - credits-and-licenses + reference/browser-events + reference/hooks-api + _auto/apis + reference/javascript-api + reference/specifications .. toctree:: :hidden: - :caption: External Links + :caption: About + about/changelog + about/contributor-guide + about/credits-and-licenses Source Code Community - Issues IDOM is a Python web framework for building **interactive websites without needing a @@ -56,7 +60,7 @@ At a Glance To get a rough idea of how to write apps in IDOM, take a look at the tiny `"hello world" `__ application below: -.. idom:: getting-started/_examples/hello_world +.. idom:: guides/getting-started/_examples/hello_world .. hint:: @@ -101,10 +105,10 @@ IDOM within a Jupyter Notebook, this is where you can learn how to do those thin .. grid-item:: - .. image:: getting-started/_static/idom-in-jupyterlab.gif + .. image:: guides/getting-started/_static/idom-in-jupyterlab.gif .. card:: - :link: getting-started/index + :link: guides/getting-started/index :link-type: doc :octicon:`book` Read More @@ -123,10 +127,10 @@ combine these elements into reusable :ref:`"components" ` sections that follow you'll learn how these UI elements are created and organized into components. Then, you'll use this knowledge to create interfaces from raw data: -.. idom:: creating-interfaces/rendering-data/_examples/todo_list_with_keys +.. idom:: guides/creating-interfaces/rendering-data/_examples/todo_list_with_keys .. card:: - :link: creating-interfaces/index + :link: guides/creating-interfaces/index :link-type: doc :octicon:`book` Read More @@ -146,7 +150,7 @@ image, the shopping cart. In IDOM, this kind of component-specific memory is cre updated with a "hook" called ``use_state()`` that creates a **state variable** and **state setter** respectively: -.. idom:: adding-interactivity/components-with-state/_examples/adding_state_variable +.. idom:: guides/adding-interactivity/components-with-state/_examples/adding_state_variable In IDOM, ``use_state``, as well as any other function whose name starts with ``use``, is called a "hook". These are special functions that should only be called while IDOM is @@ -155,7 +159,7 @@ capabilities of IDOM's components of which ``use_state`` is just one (well get i other :ref:`later `). .. card:: - :link: adding-interactivity/index + :link: guides/adding-interactivity/index :link-type: doc :octicon:`book` Read More @@ -168,7 +172,7 @@ Chapter 4 - :ref:`Managing State` --------------------------------- .. card:: - :link: managing-state/index + :link: guides/managing-state/index :link-type: doc :octicon:`book` Read More @@ -182,7 +186,7 @@ Chapter 5 - :ref:`Escape Hatches` --------------------------------- .. card:: - :link: escape-hatches/index + :link: guides/escape-hatches/index :link-type: doc :octicon:`book` Read More @@ -195,7 +199,7 @@ Chapter 6 - :ref:`Understanding IDOM` ------------------------------------- .. card:: - :link: escape-hatches/index + :link: guides/escape-hatches/index :link-type: doc :octicon:`book` Read More diff --git a/docs/source/reference-material/examples.rst b/docs/source/reference-material/examples.rst deleted file mode 100644 index 694864e53..000000000 --- a/docs/source/reference-material/examples.rst +++ /dev/null @@ -1,106 +0,0 @@ -Examples -======== - -Slideshow ---------- - -Try clicking the image 🖱️ - -.. idom:: _examples/slideshow - :result-is-default-tab: - - -Click Counter -------------- - -.. idom:: _examples/click_count - :result-is-default-tab: - - -To Do List ----------- - -Try typing in the text box and pressing 'Enter' 📋 - -.. idom:: _examples/todo - :result-is-default-tab: - - -Simple Image Movement ---------------------- - -.. idom:: _examples/character_movement - :result-is-default-tab: - - -The Game Snake --------------- - -Click to start playing and use the arrow keys to move 🎮 - -Slow internet may cause inconsistent frame pacing 😅 - -.. idom:: _examples/snake_game - :result-is-default-tab: - - -Matplotlib Plot ---------------- - -Pick the polynomial coefficients (separate each coefficient by a space) 🔢: - -.. idom:: _examples/matplotlib_plot - :result-is-default-tab: - - -Simple Dashboard ----------------- - -Try interacting with the sliders 📈 - -.. idom:: _examples/simple_dashboard - :result-is-default-tab: - - -Dynamically Loaded React Components ------------------------------------ - -This method is not recommended for use in production applications, but it's great while -you're experimenting: - -.. idom:: _examples/victory_chart - :result-is-default-tab: - - -Material UI Button ------------------- - -Click the button to change the indicator 👇 - -.. idom:: _examples/material_ui_switch - :result-is-default-tab: - - -Pigeon Maps ------------ - -Click the map to create pinned location 📍: - -.. idom:: _examples/pigeon_maps - :result-is-default-tab: - - -Cytoscape Network Graph ------------------------ - -You can move the nodes in the graph 🕸️: - -.. idom:: _examples/network_graph - :result-is-default-tab: - - -.. Links -.. ===== - -.. |launch-binder| image:: https://mybinder.org/badge_logo.svg - :target: https://mybinder.org/v2/gh/idom-team/idom-jupyter/main?filepath=examples%2Fintroduction.ipynb diff --git a/docs/source/reference-material/faq.rst b/docs/source/reference-material/faq.rst deleted file mode 100644 index df1628dcd..000000000 --- a/docs/source/reference-material/faq.rst +++ /dev/null @@ -1,64 +0,0 @@ -FAQ -=== - -See our :discussion-type:`Discussion Forum ` for more questions and answers. - - -Do UI components run client-side? ---------------------------------- - -No. The layout is constructed, and components are executed, server-side in Python. Only -rendering occurs client-side. This means you can access files, databases, and all your -favorite Python packages with IDOM. - - -Does IDOM transpile Python to Javascript? ------------------------------------------ - -No. As in the answer to :ref:`Do UI components run client-side?`, IDOM runs almost -everything server-side and in Python. This was an explicit design choice to keep things -simple and one which allows you to do everything you normally would in Python. - - -Does IDOM support any React component? --------------------------------------- - -If you use :ref:`Dynamically Loaded Components`, then the answer is no. Only components -whose props are JSON serializable, or which expect basic callback functions similar to -those of standard event handlers (e.g. ``onClick``) will operate as expected. - -However, if you import a :ref:`Custom Javascript Component ` -then, so long as the bundle has be defined appropriately, any component can be made to -work, even those that don't rely on React. - - -How does IDOM communicate with the client? ------------------------------------------- - -IDOM sends diffs of a Virtual Document Object Model (:ref:`VDOM`) to the -client. For more details, see the description in -`this article `__. - - -Can I use Javascript components from a CDN? -------------------------------------------- - -Yes, but with some restrictions: - -1. The Javascript in question must be distributed as an ECMAScript Module - (`ESM `__) -2. The module must export the :ref:`required interface `. - -These restrictions apply because the Javascript from the CDN must be able to run -natively in the browser and the module must be able to run in isolation from the main -application. - -See :ref:`Distributing Javascript via CDN_` for more info. - - -What props can I pass to Javascript components? ------------------------------------------------ - -You can only pass JSON serializable props to components implemented in Javascript. It is -possible to create a :ref:`Custom Javascript Component ` -which undestands how to deserialise JSON data into native Javascript objects though. diff --git a/docs/source/reference-material/index.rst b/docs/source/reference-material/index.rst deleted file mode 100644 index fb4021aca..000000000 --- a/docs/source/reference-material/index.rst +++ /dev/null @@ -1,17 +0,0 @@ -Reference Material -================== - -.. toctree:: - :hidden: - - examples - hooks-api - /_auto/apis - javascript-api - browser-events - specifications - faq - -.. note:: - - Under construction 🚧 diff --git a/docs/source/reference-material/_examples/character_movement/app.py b/docs/source/reference/_examples/character_movement/app.py similarity index 100% rename from docs/source/reference-material/_examples/character_movement/app.py rename to docs/source/reference/_examples/character_movement/app.py diff --git a/docs/source/reference-material/_examples/character_movement/static/bunny.png b/docs/source/reference/_examples/character_movement/static/bunny.png similarity index 100% rename from docs/source/reference-material/_examples/character_movement/static/bunny.png rename to docs/source/reference/_examples/character_movement/static/bunny.png diff --git a/docs/source/reference-material/_examples/click_count.py b/docs/source/reference/_examples/click_count.py similarity index 100% rename from docs/source/reference-material/_examples/click_count.py rename to docs/source/reference/_examples/click_count.py diff --git a/docs/source/reference-material/_examples/material_ui_switch.py b/docs/source/reference/_examples/material_ui_switch.py similarity index 100% rename from docs/source/reference-material/_examples/material_ui_switch.py rename to docs/source/reference/_examples/material_ui_switch.py diff --git a/docs/source/reference-material/_examples/matplotlib_plot.py b/docs/source/reference/_examples/matplotlib_plot.py similarity index 100% rename from docs/source/reference-material/_examples/matplotlib_plot.py rename to docs/source/reference/_examples/matplotlib_plot.py diff --git a/docs/source/reference-material/_examples/network_graph.py b/docs/source/reference/_examples/network_graph.py similarity index 100% rename from docs/source/reference-material/_examples/network_graph.py rename to docs/source/reference/_examples/network_graph.py diff --git a/docs/source/reference-material/_examples/pigeon_maps.py b/docs/source/reference/_examples/pigeon_maps.py similarity index 100% rename from docs/source/reference-material/_examples/pigeon_maps.py rename to docs/source/reference/_examples/pigeon_maps.py diff --git a/docs/source/reference-material/_examples/simple_dashboard.py b/docs/source/reference/_examples/simple_dashboard.py similarity index 100% rename from docs/source/reference-material/_examples/simple_dashboard.py rename to docs/source/reference/_examples/simple_dashboard.py diff --git a/docs/source/reference-material/_examples/slideshow.py b/docs/source/reference/_examples/slideshow.py similarity index 100% rename from docs/source/reference-material/_examples/slideshow.py rename to docs/source/reference/_examples/slideshow.py diff --git a/docs/source/reference-material/_examples/snake_game.py b/docs/source/reference/_examples/snake_game.py similarity index 100% rename from docs/source/reference-material/_examples/snake_game.py rename to docs/source/reference/_examples/snake_game.py diff --git a/docs/source/reference-material/_examples/todo.py b/docs/source/reference/_examples/todo.py similarity index 100% rename from docs/source/reference-material/_examples/todo.py rename to docs/source/reference/_examples/todo.py diff --git a/docs/source/reference-material/_examples/use_reducer_counter.py b/docs/source/reference/_examples/use_reducer_counter.py similarity index 100% rename from docs/source/reference-material/_examples/use_reducer_counter.py rename to docs/source/reference/_examples/use_reducer_counter.py diff --git a/docs/source/reference-material/_examples/use_state_counter.py b/docs/source/reference/_examples/use_state_counter.py similarity index 100% rename from docs/source/reference-material/_examples/use_state_counter.py rename to docs/source/reference/_examples/use_state_counter.py diff --git a/docs/source/reference-material/_examples/victory_chart.py b/docs/source/reference/_examples/victory_chart.py similarity index 100% rename from docs/source/reference-material/_examples/victory_chart.py rename to docs/source/reference/_examples/victory_chart.py diff --git a/docs/source/reference-material/_static/vdom-json-schema.json b/docs/source/reference/_static/vdom-json-schema.json similarity index 84% rename from docs/source/reference-material/_static/vdom-json-schema.json rename to docs/source/reference/_static/vdom-json-schema.json index d3ab5bd6d..2281657e3 100644 --- a/docs/source/reference-material/_static/vdom-json-schema.json +++ b/docs/source/reference/_static/vdom-json-schema.json @@ -35,9 +35,7 @@ "type": "string" } }, - "required": [ - "tagName" - ], + "required": ["tagName"], "type": "object" }, "elementChildren": { @@ -61,10 +59,7 @@ "then": { "$ref": "#/definitions/element" }, - "type": [ - "object", - "string" - ] + "type": ["object", "string"] }, "eventHander": { "properties": { @@ -78,9 +73,7 @@ "type": "string" } }, - "required": [ - "target" - ], + "required": ["target"], "type": "object" }, "importSource": { @@ -94,29 +87,20 @@ "then": { "$ref": "#/definitions/elementOrString" }, - "type": [ - "object", - "string", - "null" - ] + "type": ["object", "string", "null"] }, "source": { "type": "string" }, "sourceType": { - "enum": [ - "URL", - "NAME" - ] + "enum": ["URL", "NAME"] }, "unmountBeforeUpdate": { "type": "boolean" } }, - "required": [ - "source" - ], + "required": ["source"], "type": "object" } } -} \ No newline at end of file +} diff --git a/docs/source/reference-material/browser-events.rst b/docs/source/reference/browser-events.rst similarity index 100% rename from docs/source/reference-material/browser-events.rst rename to docs/source/reference/browser-events.rst diff --git a/docs/source/reference-material/hooks-api.rst b/docs/source/reference/hooks-api.rst similarity index 98% rename from docs/source/reference-material/hooks-api.rst rename to docs/source/reference/hooks-api.rst index f41a532cf..286508a6c 100644 --- a/docs/source/reference-material/hooks-api.rst +++ b/docs/source/reference/hooks-api.rst @@ -164,11 +164,11 @@ supports ``async`` functions: .. code-block:: - async def nonblocking_effect(): + async def non_blocking_effect(): resource = await do_something_asynchronously() return lambda: blocking_close(resource) - use_effect(nonblocking_effect) + use_effect(non_blocking_effect) There are **three important subtleties** to note about using asynchronous effects: @@ -311,7 +311,6 @@ The identity of the ``Ref`` object will be preserved for the lifetime of the com A ``Ref`` is most useful if you need to incur side effects since updating its ``.current`` attribute doesn't trigger a re-render of the component. You'll often use this hook alongside :ref:`Use Effect` or in response to component event handlers. -:ref:`The Game Snake` provides a good use case for ``use_ref``. .. links diff --git a/docs/source/reference-material/javascript-api.rst b/docs/source/reference/javascript-api.rst similarity index 100% rename from docs/source/reference-material/javascript-api.rst rename to docs/source/reference/javascript-api.rst diff --git a/docs/source/reference-material/specifications.rst b/docs/source/reference/specifications.rst similarity index 100% rename from docs/source/reference-material/specifications.rst rename to docs/source/reference/specifications.rst diff --git a/scripts/update_versions.py b/scripts/update_versions.py index 5da160625..b9ba5dd97 100644 --- a/scripts/update_versions.py +++ b/scripts/update_versions.py @@ -11,7 +11,7 @@ JS_PACKAGE_JSON_FILES = [ pkg_dir / "package.json" for pkg_dir in (JS_ROOT_DIR / "packages").iterdir() ] + [JS_ROOT_DIR / "package.json"] - +CHANGELOG_FILE = ROOT / "docs" / "source" / "about" / "changelog.rst" VERSION_INFO = semver.VersionInfo.parse(VERSION_FILE.read_text().strip()) @@ -19,6 +19,7 @@ def main() -> None: version_str = str(VERSION_INFO) update_py_version(version_str) update_js_versions(version_str) + update_changelog_version(version_str) def update_py_version(new_version: str) -> None: @@ -40,5 +41,38 @@ def update_js_versions(new_version: str) -> None: pkg_json_file.write_text(json.dumps(pkg_json, indent=2, sort_keys=True) + "\n") +def update_changelog_version(new_version: str) -> None: + old_content = CHANGELOG_FILE.read_text().split("\n") + + new_content = [] + for index in range(0, len(old_content), 2): + if index == len(old_content) - 2: + # reached end of file + continue + + old_lines = old_content[index : index + 2] + if old_lines[0] == "Unreleased" and old_lines[1] == ("-" * len(old_lines[0])): + new_content.append(_UNRELEASED_SECTION) + new_content.append(new_version) + new_content.append("-" * len(new_version)) + new_content.extend(old_content[index + 2 :]) + break + else: + new_content.extend(old_lines) + else: + raise ValueError(f"Did not find 'Unreleased' section in {CHANGELOG_FILE}") + + CHANGELOG_FILE.write_text("\n".join(new_content)) + + +_UNRELEASED_SECTION = """\ +Unreleased +---------- + +Nothing yet... + +""" + + if __name__ == "__main__": main() From a66eae4f874b5436479a33454607914b97cb6f6e Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 27 Feb 2022 20:18:05 -0800 Subject: [PATCH 036/253] load import source in effect (#691) --- docs/source/about/changelog.rst | 13 +++------ .../idom-client-react/src/components.js | 15 +++-------- .../idom-client-react/src/contexts.js | 6 +++++ .../idom-client-react/src/import-source.js | 27 ++++++++++++++++++- .../packages/idom-client-react/src/index.js | 1 + 5 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 src/client/packages/idom-client-react/src/contexts.js diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 6df2b732a..8d1b55346 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,20 +16,15 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- -While this release doesn't warrant a minor version bump, the last release should have -been. Thus, to make up for that, this release will be a minor bump. It includes misc -bug fixes, and several feature adds, the most important of which is the addition of the -``use_context`` hook. - Added: - Support for keys in HTML fragments - :issue:`682` +- Use Context Hook - :pull:`585` -**Merged Pull Requests** +Fixed: -- reset schedule_render_later flag after triggering - :pull:`688` -- support keys in HTML fragments - :pull:`683` -- Add Use Context Hook - :pull:`585` +- React warning about set state in unmounted component - :issue:`690` +- Missing reset of schedule_render_later flag - :pull:`688` ---- diff --git a/src/client/packages/idom-client-react/src/components.js b/src/client/packages/idom-client-react/src/components.js index 54a3c1685..c44eed085 100644 --- a/src/client/packages/idom-client-react/src/components.js +++ b/src/client/packages/idom-client-react/src/components.js @@ -3,17 +3,15 @@ import ReactDOM from "react-dom"; import htm from "htm"; import { useJsonPatchCallback } from "./json-patch.js"; -import { loadModelImportSource } from "./import-source.js"; +import { useImportSource } from "./import-source.js"; +import { LayoutContext } from "./contexts.js"; + import { createElementAttributes, createElementChildren, } from "./element-utils.js"; const html = htm.bind(React.createElement); -export const LayoutContext = React.createContext({ - sendEvent: undefined, - loadImportSource: undefined, -}); export function Layout({ saveUpdateHook, sendEvent, loadImportSource }) { const [model, patchModel] = useJsonPatchCallback({}); @@ -101,14 +99,9 @@ function ImportedElement({ model }) { const layoutContext = React.useContext(LayoutContext); const importSourceFallback = model.importSource.fallback; - const [importSource, setImportSource] = React.useState(null); + const importSource = useImportSource(model.importSource); if (!importSource) { - // load the import source in the background - loadModelImportSource(layoutContext, model.importSource).then( - setImportSource - ); - // display a fallback if one was given if (!importSourceFallback) { return html`
`; diff --git a/src/client/packages/idom-client-react/src/contexts.js b/src/client/packages/idom-client-react/src/contexts.js new file mode 100644 index 000000000..c6ad86978 --- /dev/null +++ b/src/client/packages/idom-client-react/src/contexts.js @@ -0,0 +1,6 @@ +import React from "react"; + +export const LayoutContext = React.createContext({ + sendEvent: undefined, + loadImportSource: undefined, +}); diff --git a/src/client/packages/idom-client-react/src/import-source.js b/src/client/packages/idom-client-react/src/import-source.js index de6ebdda6..7c09c7c5d 100644 --- a/src/client/packages/idom-client-react/src/import-source.js +++ b/src/client/packages/idom-client-react/src/import-source.js @@ -1,9 +1,34 @@ +import React from "react"; + +import { LayoutContext } from "./contexts.js"; + import { createElementAttributes, createElementChildren, } from "./element-utils.js"; -export function loadModelImportSource(layoutContext, importSource) { +export function useImportSource(modelImportSource) { + const layoutContext = React.useContext(LayoutContext); + const [importSource, setImportSource] = React.useState(null); + + React.useEffect(() => { + let unmounted = false; + + loadModelImportSource(layoutContext, modelImportSource).then((src) => { + if (!unmounted) { + setImportSource(src); + } + }); + + return () => { + unmounted = true; + }; + }, [layoutContext, modelImportSource, setImportSource]); + + return importSource; +} + +function loadModelImportSource(layoutContext, importSource) { return layoutContext .loadImportSource(importSource.source, importSource.sourceType) .then((module) => { diff --git a/src/client/packages/idom-client-react/src/index.js b/src/client/packages/idom-client-react/src/index.js index bee7de4fd..df461bb84 100644 --- a/src/client/packages/idom-client-react/src/index.js +++ b/src/client/packages/idom-client-react/src/index.js @@ -1,3 +1,4 @@ export * from "./mount.js"; +export * from "./contexts"; export * from "./components.js"; export * from "./server.js"; From e6e91905f2e84f2bf01361dbdf32f9cb7b62e632 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 27 Feb 2022 21:31:10 -0800 Subject: [PATCH 037/253] 'update version to 0.37.0' --- VERSION | 2 +- docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 6 ++ docs/source/about/contributor-guide.rst | 28 ++++---- noxfile.py | 66 ++++++++++--------- scripts/update_versions.py | 8 +-- src/client/package-lock.json | 8 +-- src/client/package.json | 2 +- .../packages/idom-app-react/package.json | 2 +- .../packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 11 files changed, 71 insertions(+), 57 deletions(-) diff --git a/VERSION b/VERSION index 1d3b40ecf..0f1a7dfc7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.36.3 +0.37.0 diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index e9d3f4374..62c2210aa 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.36.3", + "version": "0.37.0", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 8d1b55346..bed99bf10 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,6 +16,12 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- +Nothing yet... + + +0.37.0 +------ + Added: - Support for keys in HTML fragments - :issue:`682` diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index 56de0d747..e0561f050 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -268,21 +268,21 @@ Where you can then navigate to http://localhost:5000.. Release Process --------------- -1. Update version -2. Add changelog entry - - - Include merged pull requests - - Include closed issues - -3. Commit final release changes -4. Create a release tag -5. Manually author a release in GitHub +1. :ref:`Update version ` +2. Create a release tag +3. Manually author a release in GitHub Update Release Version ...................... -To update the version for all core Javascript and Python packages in IDOM run: +To simultaneously update the version for: + +- Python packages +- Javascript packages +- The :ref:`changelog` + +Run the following command: .. code-block:: bash @@ -290,7 +290,13 @@ To update the version for all core Javascript and Python packages in IDOM run: .. note:: - The new version must adhere to `SemVer `__. + The ```` must adhere to `SemVer `__. + +Then commit those changes: + +.. code-block:: bash + + git commit -m 'update version to ' Creating The Release diff --git a/noxfile.py b/noxfile.py index c1d77d95c..165fd1a14 100644 --- a/noxfile.py +++ b/noxfile.py @@ -289,13 +289,35 @@ def build_js(session: Session) -> None: @nox.session def tag(session: Session) -> None: """Create a new git tag""" + if len(session.posargs) > 1: + session.error("To many arguments") + + try: + new_version = session.posargs[0] + except IndexError: + session.error("No version tag given") + + install_requirements_file(session, "make-release") + + # check that version is valid semver + session.run("pysemver", "check", new_version) + + old_version = get_version() + session.log(f"Old version: {old_version}") + session.log(f"New version: {new_version}") + set_version(new_version) + + session.run("python", "scripts/update_versions.py") + + # trigger npm install to update package-lock.json + session.install("-e", ".") + try: session.run( "git", "diff", "--cached", "--exit-code", - silent=True, external=True, ) except Exception: @@ -305,7 +327,7 @@ def tag(session: Session) -> None: install_requirements_file(session, "make-release") session.run("pysemver", "check", version) - changelog_file = ROOT / "docs" / "source" / "developing-idom" / "changelog.rst" + changelog_file = ROOT / "docs" / "source" / "about" / "changelog.rst" for line in changelog_file.read_text().splitlines(): if line == version: session.log(f"Found changelog section for version {version}") @@ -316,37 +338,17 @@ def tag(session: Session) -> None: f"make sure you have a title section called {version}." ) - session.run("git", "tag", version, external=True) - - if "push" in session.posargs: - session.run("git", "push", "--tags", external=True) + if session.interactive: + session.log() + response = input("confirm (yes/no): ").lower() + if response != "yes": + return None - -@nox.session -def update_version(session: Session) -> None: - """Update the version of all Python and Javascript packages in this repo""" - if len(session.posargs) > 1: - session.error("To many arguments") - - try: - new_version = session.posargs[0] - except IndexError: - session.error("No version tag given") - - install_requirements_file(session, "make-release") - - # check that version is valid semver - session.run("pysemver", "check", new_version) - - old_version = get_version() - session.log(f"Old version: {old_version}") - session.log(f"New version: {new_version}") - set_version(new_version) - - session.run("python", "scripts/update_versions.py") - - # trigger npm install to update package-lock.json - session.install("-e", ".") + # stage, commit, tag, and push version bump + session.run("git", "add", "--all") + session.run("git", "commit", "-m", repr(f"update version to {new_version}")) + session.run("git", "tag", version, external=True) + session.run("git", "push", "--tags", external=True) @nox.session(reuse_venv=True) diff --git a/scripts/update_versions.py b/scripts/update_versions.py index b9ba5dd97..e1b01d14a 100644 --- a/scripts/update_versions.py +++ b/scripts/update_versions.py @@ -45,20 +45,20 @@ def update_changelog_version(new_version: str) -> None: old_content = CHANGELOG_FILE.read_text().split("\n") new_content = [] - for index in range(0, len(old_content), 2): + for index in range(len(old_content) - 1): if index == len(old_content) - 2: # reached end of file continue - old_lines = old_content[index : index + 2] - if old_lines[0] == "Unreleased" and old_lines[1] == ("-" * len(old_lines[0])): + this_line, next_line = old_content[index : index + 2] + if this_line == "Unreleased" and next_line == ("-" * len(this_line)): new_content.append(_UNRELEASED_SECTION) new_content.append(new_version) new_content.append("-" * len(new_version)) new_content.extend(old_content[index + 2 :]) break else: - new_content.extend(old_lines) + new_content.append(this_line) else: raise ValueError(f"Did not find 'Unreleased' section in {CHANGELOG_FILE}") diff --git a/src/client/package-lock.json b/src/client/package-lock.json index c3a6b916d..599438407 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.36.3", + "version": "0.37.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.36.3", + "version": "0.37.0", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.36.3", + "version": "0.37.0", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.36.3", + "version": "0.37.0", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 02bb4cb6a..09ce381e0 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.36.3", + "version": "0.37.0", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 0e1ded781..7ee77a3a7 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.36.3" + "version": "0.37.0" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 9ad405ba0..772b5478a 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.36.3" + "version": "0.37.0" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 778368a6e..409e0fec5 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -23,7 +23,7 @@ __author__ = "idom-team" -__version__ = "0.36.3" # DO NOT MODIFY +__version__ = "0.37.0" # DO NOT MODIFY __all__ = [ "component", From 856487c8aff5b73b7440595748e4e75743945933 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 27 Feb 2022 21:32:15 -0800 Subject: [PATCH 038/253] noxfile correction --- noxfile.py | 1 - 1 file changed, 1 deletion(-) diff --git a/noxfile.py b/noxfile.py index 165fd1a14..f53accbd4 100644 --- a/noxfile.py +++ b/noxfile.py @@ -339,7 +339,6 @@ def tag(session: Session) -> None: ) if session.interactive: - session.log() response = input("confirm (yes/no): ").lower() if response != "yes": return None From 78f33ffb68e398613ee4265afd67fb134afea330 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 27 Feb 2022 21:39:36 -0800 Subject: [PATCH 039/253] minor changes to nox tag process --- docs/source/about/contributor-guide.rst | 68 ++++++++----------------- noxfile.py | 40 +++++++++------ 2 files changed, 44 insertions(+), 64 deletions(-) diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index e0561f050..05de3f2cf 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -268,61 +268,33 @@ Where you can then navigate to http://localhost:5000.. Release Process --------------- -1. :ref:`Update version ` -2. Create a release tag -3. Manually author a release in GitHub +Creating a release for IDOM involves two steps: +1. Tagging a version +2. Publishing a release -Update Release Version -...................... - -To simultaneously update the version for: - -- Python packages -- Javascript packages -- The :ref:`changelog` - -Run the following command: - -.. code-block:: bash - - nox -s update_version -- - -.. note:: - - The ```` must adhere to `SemVer `__. - -Then commit those changes: +To **tag a version** you'll run the following command: .. code-block:: bash - git commit -m 'update version to ' + nox -s tag -- +Which will update the version for: -Creating The Release -.................... - -The final release process involves two steps: - -1. Creating a tag for the release -2. Authoring a release in GitHub - -To create the release tag you can run the following command: - -.. note:: - - To just create the tag without pushing, omit the trailing ``push`` argument - -.. code-block:: bash - - nox -s tag -- push - -Last, you must create a `"Release" -`__ -in GitHub. Because we pushed a tag using the command above, there should already be a -saved draft which needs a title and description. The title should simply be the version -(same as the tag), and the description should simply use GitHub's "Auto-generated -release notes". +- Python packages +- Javascript packages +- The changelog + +You'll be then prompted to confirm the auto-generated updates before those changes will +be staged, committed, and pushed along with a new tag matching ```` +which was specified earlier. + +Lastly, to **publish a release** `create one in GitHub +`__. +Because we pushed a tag using the command above, there should already be a saved tag you +can target when authoring the release. The release needs a title and description. The +title should simply be the version (same as the tag), and the description should simply +use GitHub's "Auto-generated release notes". Other Core Repositories diff --git a/noxfile.py b/noxfile.py index f53accbd4..bd9ad2599 100644 --- a/noxfile.py +++ b/noxfile.py @@ -289,6 +289,25 @@ def build_js(session: Session) -> None: @nox.session def tag(session: Session) -> None: """Create a new git tag""" + try: + session.run( + "git", + "diff", + "--cached", + "--exit-code", + silent=True, + external=True, + ) + session.run( + "git", + "diff", + "--exit-code", + silent=True, + external=True, + ) + except Exception: + session.error("Cannot create a tag - there are uncommited changes") + if len(session.posargs) > 1: session.error("To many arguments") @@ -312,17 +331,6 @@ def tag(session: Session) -> None: # trigger npm install to update package-lock.json session.install("-e", ".") - try: - session.run( - "git", - "diff", - "--cached", - "--exit-code", - external=True, - ) - except Exception: - session.error("Cannot create a tag - there are uncommited changes") - version = get_version() install_requirements_file(session, "make-release") session.run("pysemver", "check", version) @@ -339,15 +347,15 @@ def tag(session: Session) -> None: ) if session.interactive: - response = input("confirm (yes/no): ").lower() + response = input("Confirm (yes/no): ").lower() if response != "yes": - return None + session.error("Did not create tag") # stage, commit, tag, and push version bump - session.run("git", "add", "--all") - session.run("git", "commit", "-m", repr(f"update version to {new_version}")) + session.run("git", "add", "--all", external=True) + session.run("git", "commit", "-m", repr(f"version {new_version}"), external=True) session.run("git", "tag", version, external=True) - session.run("git", "push", "--tags", external=True) + session.run("git", "push", "origin", "main", "--tags", external=True) @nox.session(reuse_venv=True) From fddd1d82cd05fb9c28c04cc80d533049d4c132dd Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 28 Feb 2022 08:55:09 -0800 Subject: [PATCH 040/253] set target value onchange client-side (#694) * set target value onchange client-side This may not be a perfect solution. I worry that doing this may have unintended consiquences. For example, what if someone wanted to have some sort of auto-correct feature. Will setting the target value somehow overwrite auto-corrections? From limited testing it seems to work fine, but that testing was not extensive. * changelog entry --- docs/source/about/changelog.rst | 4 +++- .../packages/idom-client-react/src/element-utils.js | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index bed99bf10..1b570545e 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,7 +16,9 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- -Nothing yet... +Fixed: + +- ``onChange`` event for inputs missing key strokes :issue:`684` 0.37.0 diff --git a/src/client/packages/idom-client-react/src/element-utils.js b/src/client/packages/idom-client-react/src/element-utils.js index 55709301f..e9a39458c 100644 --- a/src/client/packages/idom-client-react/src/element-utils.js +++ b/src/client/packages/idom-client-react/src/element-utils.js @@ -22,19 +22,25 @@ export function createElementAttributes(model, sendEvent) { if (model.eventHandlers) { for (const [eventName, eventSpec] of Object.entries(model.eventHandlers)) { - attributes[eventName] = createEventHandler(sendEvent, eventSpec); + attributes[eventName] = createEventHandler( + eventName, + sendEvent, + eventSpec + ); } } return attributes; } -function createEventHandler(sendEvent, eventSpec) { +function createEventHandler(eventName, sendEvent, eventSpec) { return function () { const data = Array.from(arguments).map((value) => { if (typeof value === "object" && value.nativeEvent) { if (eventSpec["preventDefault"]) { value.preventDefault(); + } else if (eventName === "onChange") { + value.nativeEvent.target.value = value.target.value; } if (eventSpec["stopPropagation"]) { value.stopPropagation(); From c9536f6b947fb8a2b18f1353cdc65d0cfc7c7e44 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Mon, 28 Feb 2022 08:59:58 -0800 Subject: [PATCH 041/253] 'version 0.37.1-a1' --- VERSION | 2 +- docs/source/about/changelog.rst | 6 ++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 0f1a7dfc7..dc51a4a5a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.37.0 +0.37.1-a1 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 1b570545e..9757d5bcc 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,6 +16,12 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- +Nothing yet... + + +0.37.1-a1 +--------- + Fixed: - ``onChange`` event for inputs missing key strokes :issue:`684` diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 599438407..94e7938d7 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.37.0", + "version": "0.37.1-a1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.37.0", + "version": "0.37.1-a1", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.37.0", + "version": "0.37.1-a1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.37.0", + "version": "0.37.1-a1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 09ce381e0..99df6251d 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.37.0", + "version": "0.37.1-a1", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 7ee77a3a7..12eb1e246 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.37.0" + "version": "0.37.1-a1" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 772b5478a..586f7d195 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.37.0" + "version": "0.37.1-a1" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 409e0fec5..24d9294c4 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -23,7 +23,7 @@ __author__ = "idom-team" -__version__ = "0.37.0" # DO NOT MODIFY +__version__ = "0.37.1-a1" # DO NOT MODIFY __all__ = [ "component", From a0291891e2223e0dc7cf9d131629dbba66eba529 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Wed, 2 Mar 2022 01:28:28 -0800 Subject: [PATCH 042/253] actually fix #684 (#696) * actually fix #684 Because we handle events asynchronously, we must leave the value uncontrolled in order to allow all changed committed by the user to be recorded in the order they occur. If we don't, the user may commit multiple changes before we render resulting in prior changes being overwritten by subsequent ones. Instead of controlling the value, we set it in an effect. This feels a bit hacky, but I can't think of a better way to work around this problem. * update changelog --- docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 6 ++- .../idom-client-react/src/components.js | 41 +++++++++++++++++++ .../idom-client-react/src/element-utils.js | 2 - 4 files changed, 46 insertions(+), 5 deletions(-) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 62c2210aa..ceed13e02 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.37.0", + "version": "0.37.1-a1", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 9757d5bcc..aae86ad8d 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,7 +16,9 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- -Nothing yet... +Fixed: + +- Revert :pull:`694` and by making ``value`` uncontrolled client-side - :issue:`684` 0.37.1-a1 @@ -24,7 +26,7 @@ Nothing yet... Fixed: -- ``onChange`` event for inputs missing key strokes :issue:`684` +- ``onChange`` event for inputs missing key strokes - :issue:`684` 0.37.0 diff --git a/src/client/packages/idom-client-react/src/components.js b/src/client/packages/idom-client-react/src/components.js index c44eed085..65e8c8e6c 100644 --- a/src/client/packages/idom-client-react/src/components.js +++ b/src/client/packages/idom-client-react/src/components.js @@ -38,6 +38,8 @@ export function Element({ model }) { } } else if (model.tagName == "script") { return html`<${ScriptElement} model=${model} />`; + } else if (["input", "select", "textarea"].includes(model.tagName)) { + return html`<${UserInputElement} model=${model} />`; } else if (model.importSource) { return html`<${ImportedElement} model=${model} />`; } else { @@ -68,6 +70,45 @@ function StandardElement({ model }) { ); } +// Element with a value attribute controlled by user input +function UserInputElement({ model }) { + const ref = React.useRef(); + const layoutContext = React.useContext(LayoutContext); + + const props = createElementAttributes(model, layoutContext.sendEvent); + + // Because we handle events asynchronously, we must leave the value uncontrolled in + // order to allow all changes committed by the user to be recorded in the order they + // occur. If we don't the user may commit multiple changes before we render next + // causing the content of prior changes to be overwritten by subsequent changes. + const value = props.value; + delete props.value; + + // Instead of controlling the value, we set it in an effect. + React.useEffect(() => { + if (value !== undefined) { + ref.current.value = value; + } + }, [ref.current, value]); + + // Use createElement here to avoid warning about variable numbers of children not + // having keys. Warning about this must now be the responsibility of the server + // providing the models instead of the client rendering them. + return React.createElement( + model.tagName, + { + ...props, + ref: (target) => { + ref.current = target; + }, + }, + ...createElementChildren( + model, + (model) => html`<${Element} key=${model.key} model=${model} />` + ) + ); +} + function ScriptElement({ model }) { const ref = React.useRef(); React.useEffect(() => { diff --git a/src/client/packages/idom-client-react/src/element-utils.js b/src/client/packages/idom-client-react/src/element-utils.js index e9a39458c..cbf13470d 100644 --- a/src/client/packages/idom-client-react/src/element-utils.js +++ b/src/client/packages/idom-client-react/src/element-utils.js @@ -39,8 +39,6 @@ function createEventHandler(eventName, sendEvent, eventSpec) { if (typeof value === "object" && value.nativeEvent) { if (eventSpec["preventDefault"]) { value.preventDefault(); - } else if (eventName === "onChange") { - value.nativeEvent.target.value = value.target.value; } if (eventSpec["stopPropagation"]) { value.stopPropagation(); From 857c789812498dd8d7de1872310f2003d910ea35 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Wed, 2 Mar 2022 21:51:09 -0800 Subject: [PATCH 043/253] fix flicker with observedValues buffer (#697) We do this by constructing a buffer of observed input values. Then, each time the server renders, we check to see if the next rendered value matches the first value in the buffer. If it does then we continue to display the last value in the buffer and shift the buffer array. If it doesn't then we clear the buffer array and display that rendered value. --- .../idom-client-react/src/components.js | 21 +++++++++- tests/test_client.py | 39 +++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/src/client/packages/idom-client-react/src/components.js b/src/client/packages/idom-client-react/src/components.js index 65e8c8e6c..7ca471c6e 100644 --- a/src/client/packages/idom-client-react/src/components.js +++ b/src/client/packages/idom-client-react/src/components.js @@ -81,7 +81,7 @@ function UserInputElement({ model }) { // order to allow all changes committed by the user to be recorded in the order they // occur. If we don't the user may commit multiple changes before we render next // causing the content of prior changes to be overwritten by subsequent changes. - const value = props.value; + let value = props.value; delete props.value; // Instead of controlling the value, we set it in an effect. @@ -91,6 +91,25 @@ function UserInputElement({ model }) { } }, [ref.current, value]); + // Track a buffer of observed values in order to avoid flicker + const observedValues = React.useState([])[0]; + if (observedValues) { + if (value === observedValues[0]) { + observedValues.shift(); + value = observedValues[observedValues.length - 1]; + } else { + observedValues.length = 0; + } + } + + const givenOnChange = props.onChange; + if (typeof givenOnChange === "function") { + props.onChange = (event) => { + observedValues.push(event.target.value); + givenOnChange(event); + }; + } + // Use createElement here to avoid warning about variable numbers of children not // having keys. Warning about this must now be the responsibility of the server // providing the models instead of the client rendering them. diff --git a/tests/test_client.py b/tests/test_client.py index 017d9abb9..ab0cd7413 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,7 +1,10 @@ +import asyncio +import time from pathlib import Path import idom from idom.testing import ServerMountPoint +from tests.driver_utils import send_keys JS_DIR = Path(__file__).parent / "js" @@ -71,14 +74,44 @@ def ButtonWithChangingColor(): button = driver.find_element("id", "my-button") - assert get_style(button)["background-color"] == "red" + assert _get_style(button)["background-color"] == "red" for color in ["blue", "red"] * 2: button.click() - driver_wait.until(lambda _: get_style(button)["background-color"] == color) + driver_wait.until(lambda _: _get_style(button)["background-color"] == color) -def get_style(element): +def _get_style(element): items = element.get_attribute("style").split(";") pairs = [item.split(":", 1) for item in map(str.strip, items) if item] return {key.strip(): value.strip() for key, value in pairs} + + +def test_slow_server_response_on_input_change(display, driver, driver_wait): + """A delay server-side could cause input values to be overwritten. + + For more info see: https://github.com/idom-team/idom/issues/684 + """ + + delay = 0.2 + + @idom.component + def SomeComponent(): + value, set_value = idom.hooks.use_state("") + + async def handle_change(event): + await asyncio.sleep(delay) + set_value(event["target"]["value"]) + + return idom.html.input({"onChange": handle_change, "id": "test-input"}) + + display(SomeComponent) + + inp = driver.find_element("id", "test-input") + + text = "hello" + send_keys(inp, text) + + time.sleep(delay * len(text) * 1.1) + + driver_wait.until(lambda _: inp.get_attribute("value") == "hello") From 1e11b22a42dfebb901921379cdd558e1b28b2f2c Mon Sep 17 00:00:00 2001 From: rmorshea Date: Wed, 2 Mar 2022 22:21:51 -0800 Subject: [PATCH 044/253] 'version 0.37.1-a2' --- VERSION | 2 +- docs/source/about/changelog.rst | 6 ++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index dc51a4a5a..7e4178b4b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.37.1-a1 +0.37.1-a2 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index aae86ad8d..87f29cef7 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,6 +16,12 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- +Nothing yet... + + +0.37.1-a2 +--------- + Fixed: - Revert :pull:`694` and by making ``value`` uncontrolled client-side - :issue:`684` diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 94e7938d7..7bea82440 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.37.1-a1", + "version": "0.37.1-a2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.37.1-a1", + "version": "0.37.1-a2", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.37.1-a1", + "version": "0.37.1-a2", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.37.1-a1", + "version": "0.37.1-a2", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 99df6251d..5e6d5035b 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.37.1-a1", + "version": "0.37.1-a2", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 12eb1e246..94a676060 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.37.1-a1" + "version": "0.37.1-a2" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 586f7d195..36948027c 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.37.1-a1" + "version": "0.37.1-a2" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 24d9294c4..b121d8f30 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -23,7 +23,7 @@ __author__ = "idom-team" -__version__ = "0.37.1-a1" # DO NOT MODIFY +__version__ = "0.37.1-a2" # DO NOT MODIFY __all__ = [ "component", From 506d40e5664a16c5bcaeb2cbf37265bb3f732259 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 5 Mar 2022 13:23:34 -0800 Subject: [PATCH 045/253] 0.37.1 has no changes --- docs/source/about/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 87f29cef7..25994f927 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,7 +16,7 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- -Nothing yet... +No changes. 0.37.1-a2 From d73b79f655c2c90e9a6d592698f62ebe5807c276 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 5 Mar 2022 13:23:58 -0800 Subject: [PATCH 046/253] 'version 0.37.1' --- VERSION | 2 +- docs/source/about/changelog.rst | 6 ++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 7e4178b4b..9b1bb8512 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.37.1-a2 +0.37.1 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 25994f927..5e9fee043 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -16,6 +16,12 @@ scheme for the project adheres to `Semantic Versioning `__. Unreleased ---------- +Nothing yet... + + +0.37.1 +------ + No changes. diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 7bea82440..fb8128bb9 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.37.1-a2", + "version": "0.37.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.37.1-a2", + "version": "0.37.1", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.37.1-a2", + "version": "0.37.1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.37.1-a2", + "version": "0.37.1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 5e6d5035b..fafe48dae 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.37.1-a2", + "version": "0.37.1", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 94a676060..3023c0295 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.37.1-a2" + "version": "0.37.1" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 36948027c..21878e7c9 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.37.1-a2" + "version": "0.37.1" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index b121d8f30..1b48d1533 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -23,7 +23,7 @@ __author__ = "idom-team" -__version__ = "0.37.1-a2" # DO NOT MODIFY +__version__ = "0.37.1" # DO NOT MODIFY __all__ = [ "component", From f96538cfa8beba7e0c39394665102acaaffbc174 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sat, 5 Mar 2022 15:29:33 -0800 Subject: [PATCH 047/253] rename proto modules to types (#701) * rename proto modules to types * sphinx ignore __all__ * changelog entry * fix doc issue not sure why this was not caught earlier --- docs/examples.py | 2 +- docs/source/_custom_js/package-lock.json | 2 +- docs/source/_exts/autogen_api_docs.py | 2 ++ docs/source/about/changelog.rst | 8 +++-- docs/source/about/contributor-guide.rst | 9 ++--- src/idom/__init__.py | 12 +++---- src/idom/core/component.py | 2 +- src/idom/core/dispatcher.py | 2 +- src/idom/core/events.py | 2 +- src/idom/core/hooks.py | 14 +++++--- src/idom/core/layout.py | 2 +- src/idom/core/{proto.py => types.py} | 12 +++++++ src/idom/core/vdom.py | 4 +-- src/idom/html.py | 2 +- src/idom/sample.py | 4 +-- src/idom/server/fastapi.py | 2 +- src/idom/server/flask.py | 2 +- src/idom/server/prefab.py | 4 +-- src/idom/server/sanic.py | 2 +- src/idom/server/starlette.py | 2 +- src/idom/server/tornado.py | 2 +- src/idom/server/{proto.py => types.py} | 2 +- src/idom/server/utils.py | 2 +- src/idom/testing.py | 2 +- src/idom/types.py | 45 ++++++++++++++++++++++++ src/idom/web/module.py | 27 +++----------- src/idom/widgets.py | 2 +- tests/test_core/test_vdom.py | 2 +- 28 files changed, 111 insertions(+), 64 deletions(-) rename src/idom/core/{proto.py => types.py} (93%) rename src/idom/server/{proto.py => types.py} (95%) create mode 100644 src/idom/types.py diff --git a/docs/examples.py b/docs/examples.py index aee0ef2d5..e5f8eacc6 100644 --- a/docs/examples.py +++ b/docs/examples.py @@ -6,7 +6,7 @@ from typing import Callable, Iterator import idom -from idom import ComponentType +from idom.types import ComponentType HERE = Path(__file__) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index ceed13e02..9e75d6d66 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.37.1-a1", + "version": "0.37.1", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/_exts/autogen_api_docs.py b/docs/source/_exts/autogen_api_docs.py index 96ee6e876..4419f5d69 100644 --- a/docs/source/_exts/autogen_api_docs.py +++ b/docs/source/_exts/autogen_api_docs.py @@ -22,10 +22,12 @@ AUTODOC_TEMPLATE_WITH_MEMBERS = """\ .. automodule:: {module} :members: + :ignore-module-all: """ AUTODOC_TEMPLATE_WITHOUT_MEMBERS = """\ .. automodule:: {module} + :ignore-module-all: """ TITLE = """\ diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 5e9fee043..e00370b52 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -10,13 +10,17 @@ Changelog All notable changes to this project will be recorded in this document. The style of which is based on `Keep a Changelog `__. The versioning -scheme for the project adheres to `Semantic Versioning `__. +scheme for the project adheres to `Semantic Versioning `__. For +more info, see the :ref:`Contributor Guide `. Unreleased ---------- -Nothing yet... +Changed: + +- The name of ``proto`` modules to ``types`` and added a top level ``idom.types`` module + - :pull:`701` 0.37.1 diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index 05de3f2cf..38c362edf 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -69,10 +69,11 @@ about how to get started. To make a change to IDOM you'll do the following: Create a Changelog Entry ........................ -As part of your pull request, you'll want to edit the :ref:`Changelog` by adding an -entry describing what you've changed or improved. You should write an entry in the style -of `Keep a Changelog `__ that falls under one of the -following categories, and add it to the :ref:`Unreleased` section of the changelog: +As part of your pull request, you'll want to edit the `Changelog +`__ by +adding an entry describing what you've changed or improved. You should write an entry in +the style of `Keep a Changelog `__ that falls under one of +the following categories, and add it to the :ref:`Unreleased` section of the changelog: - **Added** - for new features. - **Changed** - for changes in existing functionality. diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 1b48d1533..10443fa36 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -1,8 +1,8 @@ -from . import config, html, log, web +from . import config, html, log, types, web from .core import hooks -from .core.component import Component, component +from .core.component import component from .core.dispatcher import Stop -from .core.events import EventHandler, event +from .core.events import event from .core.hooks import ( create_context, use_callback, @@ -14,7 +14,6 @@ use_state, ) from .core.layout import Layout -from .core.proto import ComponentType, VdomDict from .core.vdom import vdom from .sample import run_sample_app from .server.prefab import run @@ -27,12 +26,9 @@ __all__ = [ "component", - "Component", - "ComponentType", "config", "create_context", "event", - "EventHandler", "hooks", "hotswap", "html_to_vdom", @@ -44,6 +40,7 @@ "run_sample_app", "run", "Stop", + "types", "use_callback", "use_context", "use_effect", @@ -52,6 +49,5 @@ "use_ref", "use_state", "vdom", - "VdomDict", "web", ] diff --git a/src/idom/core/component.py b/src/idom/core/component.py index 4b18d4712..5ef0f1844 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -4,7 +4,7 @@ from functools import wraps from typing import Any, Callable, Dict, Optional, Tuple, Union -from .proto import ComponentType, VdomDict +from .types import ComponentType, VdomDict def component( diff --git a/src/idom/core/dispatcher.py b/src/idom/core/dispatcher.py index 2768879ad..540c2757b 100644 --- a/src/idom/core/dispatcher.py +++ b/src/idom/core/dispatcher.py @@ -24,7 +24,7 @@ from ._fixed_jsonpatch import apply_patch, make_patch # type: ignore from .layout import LayoutEvent, LayoutUpdate -from .proto import LayoutType, VdomJson +from .types import LayoutType, VdomJson logger = getLogger(__name__) diff --git a/src/idom/core/events.py b/src/idom/core/events.py index 9afb84e9f..990e3185d 100644 --- a/src/idom/core/events.py +++ b/src/idom/core/events.py @@ -6,7 +6,7 @@ from anyio import create_task_group from typing_extensions import Literal -from idom.core.proto import EventHandlerFunc, EventHandlerType +from idom.core.types import EventHandlerFunc, EventHandlerType @overload diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index c19b9e547..d8ff3ab54 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -27,7 +27,7 @@ from idom.utils import Ref from ._thread_local import ThreadLocal -from .proto import Key, VdomDict +from .types import Key, VdomDict from .vdom import vdom @@ -561,7 +561,11 @@ class LifeCycleHook: .. testcode:: - from idom.core.hooks import LifeCycleHook, DID_RENDER_EFFECT + from idom.core.hooks import ( + current_hook, + LifeCycleHook, + COMPONENT_DID_RENDER_EFFECT, + ) # this function will come from a layout implementation @@ -569,7 +573,7 @@ class LifeCycleHook: # --- start life cycle --- - hook = hooks.LifeCycle(schedule_render) + hook = LifeCycleHook(schedule_render) # --- start render cycle --- @@ -582,11 +586,11 @@ class LifeCycleHook: ... # the component may access the current hook - assert hooks.current_hook() is hook + assert current_hook() is hook # and save state or add effects current_hook().use_state(lambda: ...) - current_hook().use_effect(DID_RENDER_EFFECT, lambda: ...) + current_hook().add_effect(COMPONENT_DID_RENDER_EFFECT, lambda: ...) finally: hook.unset_current() diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 87a632b79..fe3817a4d 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -32,7 +32,7 @@ from ._event_proxy import _wrap_in_warning_event_proxies from .hooks import LifeCycleHook -from .proto import ComponentType, EventHandlerDict, VdomDict, VdomJson +from .types import ComponentType, EventHandlerDict, VdomDict, VdomJson from .vdom import validate_vdom_json diff --git a/src/idom/core/proto.py b/src/idom/core/types.py similarity index 93% rename from src/idom/core/proto.py rename to src/idom/core/types.py index 915fa0a7f..ffa9ba99a 100644 --- a/src/idom/core/proto.py +++ b/src/idom/core/types.py @@ -180,3 +180,15 @@ class EventHandlerType(Protocol): When ``None``, it is left to a :class:`LayoutType` to auto generate a unique ID. """ + + +class VdomDictConstructor(Protocol): + """Standard function for constructing a :class:`VdomDict`""" + + def __call__( + self, + *attributes_and_children: VdomAttributesAndChildren, + key: str = ..., + event_handlers: Optional[EventHandlerMapping] = ..., + ) -> VdomDict: + ... diff --git a/src/idom/core/vdom.py b/src/idom/core/vdom.py index 853c412a8..0470c15be 100644 --- a/src/idom/core/vdom.py +++ b/src/idom/core/vdom.py @@ -13,7 +13,7 @@ merge_event_handlers, to_event_handler_function, ) -from idom.core.proto import ( +from idom.core.types import ( EventHandlerDict, EventHandlerMapping, EventHandlerType, @@ -320,7 +320,7 @@ def _is_single_child(value: Any) -> bool: if _debug_is_single_child(value): return True - from .proto import ComponentType + from .types import ComponentType if hasattr(value, "__iter__") and not hasattr(value, "__len__"): logger.error( diff --git a/src/idom/html.py b/src/idom/html.py index 4865dc7e5..45db97463 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -160,7 +160,7 @@ from typing import Any, Mapping -from .core.proto import Key, VdomDict +from .core.types import Key, VdomDict from .core.vdom import coalesce_attributes_and_children, make_vdom_constructor diff --git a/src/idom/sample.py b/src/idom/sample.py index 63ffdd243..b0844ada9 100644 --- a/src/idom/sample.py +++ b/src/idom/sample.py @@ -3,11 +3,11 @@ import webbrowser from typing import Any -from idom.server.proto import ServerType +from idom.server.types import ServerType from . import html from .core.component import component -from .core.proto import VdomDict +from .core.types import VdomDict from .server.utils import find_available_port, find_builtin_server_type diff --git a/src/idom/server/fastapi.py b/src/idom/server/fastapi.py index f36078a48..4dbb0e281 100644 --- a/src/idom/server/fastapi.py +++ b/src/idom/server/fastapi.py @@ -2,7 +2,7 @@ from fastapi import FastAPI -from idom.core.proto import ComponentConstructor +from idom.core.types import ComponentConstructor from .starlette import ( Config, diff --git a/src/idom/server/flask.py b/src/idom/server/flask.py index 87ab88c6c..667071808 100644 --- a/src/idom/server/flask.py +++ b/src/idom/server/flask.py @@ -22,7 +22,7 @@ from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR from idom.core.dispatcher import dispatch_single_view from idom.core.layout import LayoutEvent, LayoutUpdate -from idom.core.proto import ComponentConstructor, ComponentType +from idom.core.types import ComponentConstructor, ComponentType from .utils import CLIENT_BUILD_DIR, threaded, wait_on_event diff --git a/src/idom/server/prefab.py b/src/idom/server/prefab.py index 8d7c73325..f264ce9ca 100644 --- a/src/idom/server/prefab.py +++ b/src/idom/server/prefab.py @@ -1,10 +1,10 @@ import logging from typing import Any, Dict, Optional, Tuple, TypeVar -from idom.core.proto import ComponentConstructor +from idom.core.types import ComponentConstructor from idom.widgets import MountFunc, MultiViewMount, hotswap, multiview -from .proto import ServerFactory, ServerType +from .types import ServerFactory, ServerType from .utils import find_available_port, find_builtin_server_type diff --git a/src/idom/server/sanic.py b/src/idom/server/sanic.py index 53740b832..4845f1f6a 100644 --- a/src/idom/server/sanic.py +++ b/src/idom/server/sanic.py @@ -23,7 +23,7 @@ ensure_shared_view_dispatcher_future, ) from idom.core.layout import Layout, LayoutEvent -from idom.core.proto import ComponentConstructor +from idom.core.types import ComponentConstructor from .utils import CLIENT_BUILD_DIR, threaded, wait_on_event diff --git a/src/idom/server/starlette.py b/src/idom/server/starlette.py index 63c105b1a..fe6c27f87 100644 --- a/src/idom/server/starlette.py +++ b/src/idom/server/starlette.py @@ -30,7 +30,7 @@ ensure_shared_view_dispatcher_future, ) from idom.core.layout import Layout, LayoutEvent -from idom.core.proto import ComponentConstructor +from idom.core.types import ComponentConstructor from .utils import CLIENT_BUILD_DIR, poll, threaded diff --git a/src/idom/server/tornado.py b/src/idom/server/tornado.py index d7daa7476..c1f8ae569 100644 --- a/src/idom/server/tornado.py +++ b/src/idom/server/tornado.py @@ -16,7 +16,7 @@ from idom.config import IDOM_WEB_MODULES_DIR from idom.core.dispatcher import VdomJsonPatch, dispatch_single_view from idom.core.layout import Layout, LayoutEvent -from idom.core.proto import ComponentConstructor +from idom.core.types import ComponentConstructor from .utils import CLIENT_BUILD_DIR, threaded, wait_on_event diff --git a/src/idom/server/proto.py b/src/idom/server/types.py similarity index 95% rename from src/idom/server/proto.py rename to src/idom/server/types.py index d0db29eee..d17495664 100644 --- a/src/idom/server/proto.py +++ b/src/idom/server/types.py @@ -5,7 +5,7 @@ from typing_extensions import Protocol -from idom.core.proto import ComponentConstructor +from idom.core.types import ComponentConstructor _App = TypeVar("_App") diff --git a/src/idom/server/utils.py b/src/idom/server/utils.py index 1aa775e93..cb2c88a7c 100644 --- a/src/idom/server/utils.py +++ b/src/idom/server/utils.py @@ -12,7 +12,7 @@ import idom -from .proto import ServerFactory +from .types import ServerFactory CLIENT_BUILD_DIR = Path(idom.__file__).parent / "client" diff --git a/src/idom/testing.py b/src/idom/testing.py index ad7a9bac1..e32086af1 100644 --- a/src/idom/testing.py +++ b/src/idom/testing.py @@ -34,7 +34,7 @@ from idom.core.events import EventHandler, to_event_handler_function from idom.core.hooks import LifeCycleHook, current_hook from idom.server.prefab import hotswap_server -from idom.server.proto import ServerFactory, ServerType +from idom.server.types import ServerFactory, ServerType from idom.server.utils import find_available_port from .log import ROOT_LOGGER diff --git a/src/idom/types.py b/src/idom/types.py new file mode 100644 index 000000000..e979ec8a0 --- /dev/null +++ b/src/idom/types.py @@ -0,0 +1,45 @@ +"""Exports common types from: + +- :mod:`idom.core.types` +- :mod:`idom.server.types` +""" + +from .core.types import ( + ComponentConstructor, + ComponentType, + EventHandlerDict, + EventHandlerFunc, + EventHandlerMapping, + EventHandlerType, + ImportSourceDict, + Key, + LayoutType, + VdomAttributes, + VdomAttributesAndChildren, + VdomChild, + VdomChildren, + VdomDict, + VdomJson, +) +from .server.types import ServerFactory, ServerType + + +__all__ = [ + "ComponentConstructor", + "ComponentType", + "EventHandlerDict", + "EventHandlerFunc", + "EventHandlerMapping", + "EventHandlerType", + "ImportSourceDict", + "Key", + "LayoutType", + "VdomAttributes", + "VdomAttributesAndChildren", + "VdomChild", + "VdomChildren", + "VdomDict", + "VdomJson", + "ServerFactory", + "ServerType", +] diff --git a/src/idom/web/module.py b/src/idom/web/module.py index a113d0274..48267adff 100644 --- a/src/idom/web/module.py +++ b/src/idom/web/module.py @@ -10,15 +10,8 @@ from typing import Any, List, NewType, Optional, Set, Tuple, Union, overload from urllib.parse import urlparse -from typing_extensions import Protocol - from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR -from idom.core.proto import ( - EventHandlerMapping, - ImportSourceDict, - VdomAttributesAndChildren, - VdomDict, -) +from idom.core.types import ImportSourceDict, VdomDictConstructor from idom.core.vdom import make_vdom_constructor from .utils import ( @@ -292,16 +285,6 @@ def module_from_string( ) -class _VdomDictConstructor(Protocol): - def __call__( - self, - *attributes_and_children: VdomAttributesAndChildren, - key: str = ..., - event_handlers: Optional[EventHandlerMapping] = ..., - ) -> VdomDict: - ... - - @dataclass(frozen=True) class WebModule: source: str @@ -318,7 +301,7 @@ def export( export_names: str, fallback: Optional[Any] = ..., allow_children: bool = ..., -) -> _VdomDictConstructor: +) -> VdomDictConstructor: ... @@ -328,7 +311,7 @@ def export( export_names: Union[List[str], Tuple[str, ...]], fallback: Optional[Any] = ..., allow_children: bool = ..., -) -> List[_VdomDictConstructor]: +) -> List[VdomDictConstructor]: ... @@ -337,7 +320,7 @@ def export( export_names: Union[str, List[str], Tuple[str, ...]], fallback: Optional[Any] = None, allow_children: bool = True, -) -> Union[_VdomDictConstructor, List[_VdomDictConstructor]]: +) -> Union[VdomDictConstructor, List[VdomDictConstructor]]: """Return one or more VDOM constructors from a :class:`WebModule` Parameters: @@ -375,7 +358,7 @@ def _make_export( name: str, fallback: Optional[Any], allow_children: bool, -) -> _VdomDictConstructor: +) -> VdomDictConstructor: return partial( make_vdom_constructor( name, diff --git a/src/idom/widgets.py b/src/idom/widgets.py index 2564ac945..167f84696 100644 --- a/src/idom/widgets.py +++ b/src/idom/widgets.py @@ -21,7 +21,7 @@ from . import html from .core import hooks from .core.component import component -from .core.proto import ComponentConstructor, VdomDict +from .core.types import ComponentConstructor, VdomDict from .utils import Ref diff --git a/tests/test_core/test_vdom.py b/tests/test_core/test_vdom.py index dabde9f40..b377cc231 100644 --- a/tests/test_core/test_vdom.py +++ b/tests/test_core/test_vdom.py @@ -4,7 +4,7 @@ import idom from idom.config import IDOM_DEBUG_MODE from idom.core.events import EventHandler -from idom.core.proto import VdomDict +from idom.core.types import VdomDict from idom.core.vdom import is_vdom, make_vdom_constructor, validate_vdom_json From 366470637dfa69b8b0cd0a6ff377d466767d5233 Mon Sep 17 00:00:00 2001 From: Jim Taysom Date: Thu, 17 Mar 2022 14:14:29 -0400 Subject: [PATCH 048/253] Update running-idom.rst (#710) The run function does not have a `config` kwarg but instead `server_config` --- docs/source/guides/getting-started/running-idom.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/guides/getting-started/running-idom.rst b/docs/source/guides/getting-started/running-idom.rst index 3b180f6e5..1a471979b 100644 --- a/docs/source/guides/getting-started/running-idom.rst +++ b/docs/source/guides/getting-started/running-idom.rst @@ -157,7 +157,7 @@ then be passed to the ``run()`` function via the ``config`` parameter: redirect_root_to_index=True, ) - run(App, server_type=PerClientStateServer, config=server_config) + run(App, server_type=PerClientStateServer, server_config=server_config) Here's the list of available configuration types: From a7c4d6c6d767119b5355b049fc173798e4bf45ae Mon Sep 17 00:00:00 2001 From: liberty-rising <93674695+liberty-rising@users.noreply.github.com> Date: Sat, 26 Mar 2022 06:18:49 +0100 Subject: [PATCH 049/253] Bugfix for wss protocol issue. (#716) * fix typo * add console log * change websocket connection * fix error defaulting to ws protocol * undo some changes and typecast secure to boolean * add a console log * add new console log, remove old one * add colon to http * remove console.log * remove Boolean typecast * remove console.log statement * revert build-pkg to older version * add to changelog * changelog entry rewrite Co-authored-by: Ryan Morshead --- docs/source/about/changelog.rst | 8 ++++++++ src/client/packages/idom-app-react/src/index.js | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index e00370b52..2c9eb53a2 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,14 @@ Changed: - :pull:`701` +0.37.2 +------ + +Fixed: + +- A typo caused IDOM to use the insecure `ws` web-socket protocol on pages loaded with `https` instead of the secure `wss` protocol - :pull:`716` + + 0.37.1 ------ diff --git a/src/client/packages/idom-app-react/src/index.js b/src/client/packages/idom-app-react/src/index.js index 311f5aeed..1f57c5fa9 100644 --- a/src/client/packages/idom-app-react/src/index.js +++ b/src/client/packages/idom-app-react/src/index.js @@ -6,9 +6,8 @@ export function mount(mountPoint) { port: document.location.port, path: "../", query: queryParams.user.toString(), - secture: document.location.protocol == "https", + secure: document.location.protocol == "https:", }); - mountWithLayoutServer(mountPoint, serverInfo, shouldReconnect() ? 45 : 0); } From 99d3792570081a76beda8ce9be846c2fe3d9a33b Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 27 Mar 2022 15:55:07 -0700 Subject: [PATCH 050/253] remove 0.37.2 section --- docs/source/about/changelog.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 2c9eb53a2..c88c84c6a 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -22,10 +22,6 @@ Changed: - The name of ``proto`` modules to ``types`` and added a top level ``idom.types`` module - :pull:`701` - -0.37.2 ------- - Fixed: - A typo caused IDOM to use the insecure `ws` web-socket protocol on pages loaded with `https` instead of the secure `wss` protocol - :pull:`716` From ad49f29c65147cd9b8d220a88940cd3d085ccdcf Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 27 Mar 2022 15:59:19 -0700 Subject: [PATCH 051/253] 'version 0.37.2' --- VERSION | 2 +- docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 6 ++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index 9b1bb8512..8570a3aeb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.37.1 +0.37.2 diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 9e75d6d66..33bdecfcd 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.37.1", + "version": "0.37.2", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index c88c84c6a..cf9a35696 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -17,6 +17,12 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +Nothing yet... + + +0.37.2 +------ + Changed: - The name of ``proto`` modules to ``types`` and added a top level ``idom.types`` module diff --git a/src/client/package-lock.json b/src/client/package-lock.json index fb8128bb9..fec0a5e33 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.37.1", + "version": "0.37.2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.37.1", + "version": "0.37.2", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.37.1", + "version": "0.37.2", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.37.1", + "version": "0.37.2", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index fafe48dae..1884d7ff2 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.37.1", + "version": "0.37.2", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 3023c0295..30ce8aa5c 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.37.1" + "version": "0.37.2" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 21878e7c9..e4b08beff 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.37.1" + "version": "0.37.2" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 10443fa36..8d250090e 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.37.1" # DO NOT MODIFY +__version__ = "0.37.2" # DO NOT MODIFY __all__ = [ "component", From f2c1070263f5dcce33f69ed91a4a34f107efbf67 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 27 Mar 2022 17:42:35 -0700 Subject: [PATCH 052/253] Rework How IDOM Integrates With Servers (#703) * initial work to move away from run func * initial work converting to new server interface * finish up flask conversion * convert tornado + begin reworking test utils * remove shared dispatchers and rename to serve module * misc fixes * start to switch test suite to playwright * get basic tests working * get some tests working * slight optimization * misc minor improvements * fix test_html * implement test_module * implement connection context * fix playwright install in nox * add minimal docstrings * remove pytest-playwright * get suite to run (with failures) * fix log assertion problems * misc fixes in order to get reconnect test to work * expose use_scope instead of use_connection * fix test common * fix test_client * test use_scope * remove unused imports * fix live docs * fix typing issues * fix rest of tests * improve coverage * import protocol from typing extensions * fix syntax error * fix docs test * fix flake8 * test run function * use selector event loop * try to fix loop * only install chromium * remove unused import * fix shutdown code * skip browser tests on windows * fix coverage + reorg testing utils * minor logging changes * fix live docs script * fix log message * fix types * documentation updates * use dataclasses for options instead of typeddict * move section * add note to changelog * fix missing refs * fix ref * fix fastapi alias * fix tornado redirect * remove unused imports * changelog entry * fix noxfile tag commit msg * improve changelog entry * fix typo in old cl entry --- .github/workflows/test.yml | 6 +- docs/app.py | 48 +- docs/examples.py | 4 +- docs/source/_exts/idom_example.py | 2 +- docs/source/about/changelog.rst | 35 +- docs/source/about/contributor-guide.rst | 4 +- .../adding_state_variable/{app.py => main.py} | 0 .../isolated_state/{app.py => main.py} | 0 .../{app.py => main.py} | 0 .../{app.py => main.py} | 0 .../components-with-state/index.rst | 18 +- .../super_simple_chart/{app.py => main.py} | 0 .../getting-started/_examples/hello_world.py | 2 +- .../getting-started/_examples/run_fastapi.py | 23 + .../getting-started/_examples/run_flask.py | 23 + .../getting-started/_examples/run_sanic.py | 27 ++ .../_examples/run_starlette.py | 23 + .../getting-started/_examples/run_tornado.py | 32 ++ .../getting-started/_examples/sample_app.py | 2 +- .../_static/embed-idom-view/main.py | 6 +- docs/source/guides/getting-started/index.rst | 51 +- .../getting-started/installing-idom.rst | 32 +- .../guides/getting-started/running-idom.rst | 261 ++++------- .../filterable_list/{app.py => main.py} | 0 .../synced_inputs/{app.py => main.py} | 0 .../character_movement/{app.py => main.py} | 0 noxfile.py | 4 +- requirements/pkg-deps.txt | 1 + requirements/pkg-extras.txt | 19 +- requirements/test-env.txt | 8 +- scripts/live_docs.py | 61 ++- setup.cfg | 6 +- src/idom/__init__.py | 15 +- src/idom/core/dispatcher.py | 235 ---------- src/idom/core/hooks.py | 23 +- src/idom/core/layout.py | 1 + src/idom/core/serve.py | 93 ++++ src/idom/core/types.py | 6 +- src/idom/{log.py => logging.py} | 4 +- src/idom/sample.py | 43 +- src/idom/server/__init__.py | 8 - src/idom/server/_asgi.py | 42 ++ src/idom/server/default.py | 58 +++ src/idom/server/fastapi.py | 76 +-- src/idom/server/flask.py | 251 +++++----- src/idom/server/prefab.py | 151 ------ src/idom/server/sanic.py | 257 +++------- src/idom/server/starlette.py | 265 +++-------- src/idom/server/tornado.py | 180 +++---- src/idom/server/types.py | 56 ++- src/idom/server/utils.py | 123 ++--- src/idom/testing.py | 439 ------------------ src/idom/testing/__init__.py | 23 + src/idom/testing/common.py | 205 ++++++++ src/idom/testing/display.py | 71 +++ src/idom/testing/logs.py | 177 +++++++ src/idom/testing/server.py | 148 ++++++ src/idom/types.py | 9 +- src/idom/widgets.py | 101 +--- tests/conftest.py | 140 ++---- tests/driver_utils.py | 19 - tests/test_client.py | 73 +-- tests/test_core/test_component.py | 18 +- tests/test_core/test_dispatcher.py | 98 +--- tests/test_core/test_events.py | 31 +- tests/test_core/test_hooks.py | 91 ++-- tests/test_core/test_layout.py | 24 +- tests/test_html.py | 60 +-- tests/test_sample.py | 18 +- tests/test_server/test_common.py | 77 +++ .../test_server/test_common/test_multiview.py | 58 --- .../test_common/test_per_client_state.py | 74 --- .../test_common/test_shared_state_client.py | 125 ----- tests/test_server/test_utils.py | 53 ++- tests/test_testing.py | 41 +- tests/test_web/test_module.py | 78 ++-- tests/test_web/test_utils.py | 12 +- tests/test_widgets.py | 122 ++--- .../test_common => tooling}/__init__.py | 0 tests/{assert_utils.py => tooling/asserts.py} | 0 tests/tooling/loop.py | 83 ++++ 81 files changed, 2295 insertions(+), 2758 deletions(-) rename docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/{app.py => main.py} (100%) rename docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/{app.py => main.py} (100%) rename docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/{app.py => main.py} (100%) rename docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/{app.py => main.py} (100%) rename docs/source/guides/escape-hatches/_examples/super_simple_chart/{app.py => main.py} (100%) create mode 100644 docs/source/guides/getting-started/_examples/run_fastapi.py create mode 100644 docs/source/guides/getting-started/_examples/run_flask.py create mode 100644 docs/source/guides/getting-started/_examples/run_sanic.py create mode 100644 docs/source/guides/getting-started/_examples/run_starlette.py create mode 100644 docs/source/guides/getting-started/_examples/run_tornado.py rename docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/{app.py => main.py} (100%) rename docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/{app.py => main.py} (100%) rename docs/source/reference/_examples/character_movement/{app.py => main.py} (100%) delete mode 100644 src/idom/core/dispatcher.py create mode 100644 src/idom/core/serve.py rename src/idom/{log.py => logging.py} (85%) create mode 100644 src/idom/server/_asgi.py create mode 100644 src/idom/server/default.py delete mode 100644 src/idom/server/prefab.py delete mode 100644 src/idom/testing.py create mode 100644 src/idom/testing/__init__.py create mode 100644 src/idom/testing/common.py create mode 100644 src/idom/testing/display.py create mode 100644 src/idom/testing/logs.py create mode 100644 src/idom/testing/server.py delete mode 100644 tests/driver_utils.py create mode 100644 tests/test_server/test_common.py delete mode 100644 tests/test_server/test_common/test_multiview.py delete mode 100644 tests/test_server/test_common/test_per_client_state.py delete mode 100644 tests/test_server/test_common/test_shared_state_client.py rename tests/{test_server/test_common => tooling}/__init__.py (100%) rename tests/{assert_utils.py => tooling/asserts.py} (100%) create mode 100644 tests/tooling/loop.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 239281f79..8be799f5a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: nanasess/setup-chromedriver@master - uses: actions/setup-node@v2 with: node-version: "14.x" @@ -29,7 +28,7 @@ jobs: run: pip install -r requirements/nox-deps.txt - name: Run Tests env: { "CI": "true" } - run: nox -s test_python_suite -- --headless --maxfail=3 + run: nox -s test_python_suite -- --maxfail=3 test-python-environments: runs-on: ${{ matrix.os }} strategy: @@ -38,7 +37,6 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v2 - - uses: nanasess/setup-chromedriver@master - uses: actions/setup-node@v2 with: node-version: "14.x" @@ -52,7 +50,7 @@ jobs: run: pip install -r requirements/nox-deps.txt - name: Run Tests env: { "CI": "true" } - run: nox -s test_python --stop-on-first-error -- --headless --maxfail=3 --no-cov + run: nox -s test_python --stop-on-first-error -- --maxfail=3 --no-cov test-docs: runs-on: ubuntu-latest steps: diff --git a/docs/app.py b/docs/app.py index b065dd09e..c51095ee2 100644 --- a/docs/app.py +++ b/docs/app.py @@ -4,8 +4,9 @@ from sanic import Sanic, response -from idom.server.sanic import PerClientStateServer -from idom.widgets import multiview +from idom import component +from idom.core.types import ComponentConstructor +from idom.server.sanic import Options, configure, use_request from .examples import load_examples @@ -22,13 +23,13 @@ def run(): app = make_app() - PerClientStateServer( - make_examples_component(), - { - "redirect_root_to_index": False, - "url_prefix": IDOM_MODEL_SERVER_URL_PREFIX, - }, + configure( app, + Example(), + Options( + redirect_root=False, + url_prefix=IDOM_MODEL_SERVER_URL_PREFIX, + ), ) app.run( @@ -39,8 +40,28 @@ def run(): ) +@component +def Example(): + view_id = use_request().get_args().get("view_id") + return _get_examples()[view_id]() + + +def _get_examples(): + if not _EXAMPLES: + _EXAMPLES.update(load_examples()) + return _EXAMPLES + + +def reload_examples(): + _EXAMPLES.clear() + _EXAMPLES.update(load_examples()) + + +_EXAMPLES: dict[str, ComponentConstructor] = {} + + def make_app(): - app = Sanic(__name__) + app = Sanic("docs_app") app.static("/docs", str(HERE / "build")) @@ -49,12 +70,3 @@ async def forward_to_index(request): return response.redirect("/docs/index.html") return app - - -def make_examples_component(): - mount, component = multiview() - - for example_name, example_component in load_examples(): - mount.add(example_name, example_component) - - return component diff --git a/docs/examples.py b/docs/examples.py index e5f8eacc6..b61e7295e 100644 --- a/docs/examples.py +++ b/docs/examples.py @@ -23,7 +23,7 @@ def load_examples() -> Iterator[tuple[str, Callable[[], ComponentType]]]: def all_example_names() -> set[str]: names = set() for file in _iter_example_files(SOURCE_DIR): - path = file.parent if file.name == "app.py" else file + path = file.parent if file.name == "main.py" else file names.add("/".join(path.relative_to(SOURCE_DIR).with_suffix("").parts)) return names @@ -48,7 +48,7 @@ def get_main_example_file_by_name( ) -> Path: path = _get_root_example_path_by_name(name, relative_to) if path.is_dir(): - return path / "app.py" + return path / "main.py" else: return path.with_suffix(".py") diff --git a/docs/source/_exts/idom_example.py b/docs/source/_exts/idom_example.py index 07c0a74a2..686734392 100644 --- a/docs/source/_exts/idom_example.py +++ b/docs/source/_exts/idom_example.py @@ -51,7 +51,7 @@ def run(self): if len(ex_files) == 1: labeled_tab_items.append( ( - "app.py", + "main.py", _literal_include( path=ex_files[0], linenos=show_linenos, diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index cf9a35696..f4bbab94a 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -11,13 +11,41 @@ Changelog All notable changes to this project will be recorded in this document. The style of which is based on `Keep a Changelog `__. The versioning scheme for the project adheres to `Semantic Versioning `__. For -more info, see the :ref:`Contributor Guide `. +more info, see the :ref:`Contributor Guide `. +.. INSTRUCTIONS FOR CHANGELOG CONTRIBUTORS +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +.. If you're adding a changelog entry, be sure to read the "Creating a Changelog Entry" +.. section of the documentation before doing so for instructions on how to adhere to the +.. "Keep a Changelog" style guide (https://keepachangelog.com). + Unreleased ---------- -Nothing yet... +Changed: + +- How IDOM integrates with servers - :pull:`703` + + - ``idom.run`` no longer accepts an app instance to discourage use outside of testing + - IDOM's server implementations now provide ``configure()`` functions instead + - ``idom.testing`` has been completely reworked in order to support async web drivers + +Added: + +- Access to underlying server requests via contexts - :issue:`669` + +Removed: + +- ``idom.widgets.multiview`` since basic routing view ``use_scope`` is now possible +- All ``SharedClientStateServer`` implementations. +- All ``PerClientStateServer`` implementations have been replaced with ``configure()`` + +Fixed: + +- IDOM's test suite no longer uses sync web drivers - :issue:`591` +- Updated Sanic requirement to ``>=21`` - :issue:`678` +- How we advertise ``idom.run`` - :issue:`657` 0.37.2 @@ -30,7 +58,8 @@ Changed: Fixed: -- A typo caused IDOM to use the insecure `ws` web-socket protocol on pages loaded with `https` instead of the secure `wss` protocol - :pull:`716` +- A typo caused IDOM to use the insecure ``ws`` web-socket protocol on pages loaded with + ``https`` instead of the secure ``wss`` protocol - :pull:`716` 0.37.1 diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index 38c362edf..b70b7cd32 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -66,8 +66,8 @@ about how to get started. To make a change to IDOM you'll do the following: :ref:`equality checks ` and, with any luck, accept your request. At that point your contribution will be merged into the main codebase! -Create a Changelog Entry -........................ +Creating a Changelog Entry +.......................... As part of your pull request, you'll want to edit the `Changelog `__ by diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py similarity index 100% rename from docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py similarity index 100% rename from docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py similarity index 100% rename from docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/app.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py similarity index 100% rename from docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/app.py rename to docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py diff --git a/docs/source/guides/adding-interactivity/components-with-state/index.rst b/docs/source/guides/adding-interactivity/components-with-state/index.rst index 5c9161de2..3925b3cf2 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/index.rst +++ b/docs/source/guides/adding-interactivity/components-with-state/index.rst @@ -151,7 +151,7 @@ below highlights a line of code where something of interest occurs:

Initial render

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 2 @@ -165,7 +165,7 @@ below highlights a line of code where something of interest occurs:

Initial state declaration

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 3 @@ -181,7 +181,7 @@ below highlights a line of code where something of interest occurs:

Define event handler

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 5 @@ -196,7 +196,7 @@ below highlights a line of code where something of interest occurs:

Return the view

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 16 @@ -212,7 +212,7 @@ below highlights a line of code where something of interest occurs:

User interaction

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 5 @@ -226,7 +226,7 @@ below highlights a line of code where something of interest occurs:

New state is set

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 6 @@ -242,7 +242,7 @@ below highlights a line of code where something of interest occurs:

Next render begins

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 2 @@ -256,7 +256,7 @@ below highlights a line of code where something of interest occurs:

Next state is acquired

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 :emphasize-lines: 3 @@ -272,7 +272,7 @@ below highlights a line of code where something of interest occurs:

Repeat...

- .. literalinclude:: _examples/adding_state_variable/app.py + .. literalinclude:: _examples/adding_state_variable/main.py :lines: 12-33 From this point on, the steps remain the same. The only difference being the diff --git a/docs/source/guides/escape-hatches/_examples/super_simple_chart/app.py b/docs/source/guides/escape-hatches/_examples/super_simple_chart/main.py similarity index 100% rename from docs/source/guides/escape-hatches/_examples/super_simple_chart/app.py rename to docs/source/guides/escape-hatches/_examples/super_simple_chart/main.py diff --git a/docs/source/guides/getting-started/_examples/hello_world.py b/docs/source/guides/getting-started/_examples/hello_world.py index a5621718e..1ad68582e 100644 --- a/docs/source/guides/getting-started/_examples/hello_world.py +++ b/docs/source/guides/getting-started/_examples/hello_world.py @@ -3,7 +3,7 @@ @component def App(): - return html.h1("Hello, World!") + return html.h1("Hello, world!") run(App) diff --git a/docs/source/guides/getting-started/_examples/run_fastapi.py b/docs/source/guides/getting-started/_examples/run_fastapi.py new file mode 100644 index 000000000..f114333bb --- /dev/null +++ b/docs/source/guides/getting-started/_examples/run_fastapi.py @@ -0,0 +1,23 @@ +# :lines: 11- + +from idom import run +from idom.server import fastapi as fastapi_server + + +# the run() function is the entry point for examples +fastapi_server.configure = lambda _, cmpt: run(cmpt) + + +from fastapi import FastAPI + +from idom import component, html +from idom.server.fastapi import configure + + +@component +def HelloWorld(): + return html.h1("Hello, world!") + + +app = FastAPI() +configure(app, HelloWorld) diff --git a/docs/source/guides/getting-started/_examples/run_flask.py b/docs/source/guides/getting-started/_examples/run_flask.py new file mode 100644 index 000000000..9f64d0e15 --- /dev/null +++ b/docs/source/guides/getting-started/_examples/run_flask.py @@ -0,0 +1,23 @@ +# :lines: 11- + +from idom import run +from idom.server import flask as flask_server + + +# the run() function is the entry point for examples +flask_server.configure = lambda _, cmpt: run(cmpt) + + +from flask import Flask + +from idom import component, html +from idom.server.flask import configure + + +@component +def HelloWorld(): + return html.h1("Hello, world!") + + +app = Flask(__name__) +configure(app, HelloWorld) diff --git a/docs/source/guides/getting-started/_examples/run_sanic.py b/docs/source/guides/getting-started/_examples/run_sanic.py new file mode 100644 index 000000000..449e2b2e1 --- /dev/null +++ b/docs/source/guides/getting-started/_examples/run_sanic.py @@ -0,0 +1,27 @@ +# :lines: 11- + +from idom import run +from idom.server import sanic as sanic_server + + +# the run() function is the entry point for examples +sanic_server.configure = lambda _, cmpt: run(cmpt) + + +from sanic import Sanic + +from idom import component, html +from idom.server.sanic import configure + + +@component +def HelloWorld(): + return html.h1("Hello, world!") + + +app = Sanic("MyApp") +configure(app, HelloWorld) + + +if __name__ == "__main__": + app.run(port=8000) diff --git a/docs/source/guides/getting-started/_examples/run_starlette.py b/docs/source/guides/getting-started/_examples/run_starlette.py new file mode 100644 index 000000000..f287b831b --- /dev/null +++ b/docs/source/guides/getting-started/_examples/run_starlette.py @@ -0,0 +1,23 @@ +# :lines: 11- + +from idom import run +from idom.server import starlette as starlette_server + + +# the run() function is the entry point for examples +starlette_server.configure = lambda _, cmpt: run(cmpt) + + +from starlette.applications import Starlette + +from idom import component, html +from idom.server.starlette import configure + + +@component +def HelloWorld(): + return html.h1("Hello, world!") + + +app = Starlette() +configure(app, HelloWorld) diff --git a/docs/source/guides/getting-started/_examples/run_tornado.py b/docs/source/guides/getting-started/_examples/run_tornado.py new file mode 100644 index 000000000..313fdf4fe --- /dev/null +++ b/docs/source/guides/getting-started/_examples/run_tornado.py @@ -0,0 +1,32 @@ +# :lines: 11- + +from idom import run +from idom.server import tornado as tornado_server + + +# the run() function is the entry point for examples +tornado_server.configure = lambda _, cmpt: run(cmpt) + + +import tornado.ioloop +import tornado.web + +from idom import component, html +from idom.server.tornado import configure + + +@component +def HelloWorld(): + return html.h1("Hello, world!") + + +def make_app(): + app = tornado.web.Application() + configure(app, HelloWorld) + return app + + +if __name__ == "__main__": + app = make_app() + app.listen(8000) + tornado.ioloop.IOLoop.current().start() diff --git a/docs/source/guides/getting-started/_examples/sample_app.py b/docs/source/guides/getting-started/_examples/sample_app.py index 610f8988a..332035e87 100644 --- a/docs/source/guides/getting-started/_examples/sample_app.py +++ b/docs/source/guides/getting-started/_examples/sample_app.py @@ -1,4 +1,4 @@ import idom -idom.run(idom.sample.App) +idom.run(idom.sample.SampleApp) diff --git a/docs/source/guides/getting-started/_static/embed-idom-view/main.py b/docs/source/guides/getting-started/_static/embed-idom-view/main.py index 0c0cb5ac0..e33173173 100644 --- a/docs/source/guides/getting-started/_static/embed-idom-view/main.py +++ b/docs/source/guides/getting-started/_static/embed-idom-view/main.py @@ -2,10 +2,10 @@ from sanic.response import file from idom import component, html -from idom.server.sanic import Config, PerClientStateServer +from idom.server.sanic import Options, configure -app = Sanic(__name__) +app = Sanic("MyApp") @app.route("/") @@ -18,6 +18,6 @@ def IdomView(): return html.code("This text came from an IDOM App") -PerClientStateServer(IdomView, app=app, config=Config(url_prefix="/_idom")) +configure(app, IdomView, Options(url_prefix="/_idom")) app.run(host="127.0.0.1", port=5000) diff --git a/docs/source/guides/getting-started/index.rst b/docs/source/guides/getting-started/index.rst index 0a5ed4daf..1aed237d9 100644 --- a/docs/source/guides/getting-started/index.rst +++ b/docs/source/guides/getting-started/index.rst @@ -18,15 +18,15 @@ Getting Started :link: installing-idom :link-type: doc - Learn how IDOM can be installed in a variety of different ways - with different web - servers and even in different frameworks. + Learn how IDOM can be installed in a variety of different ways - with + different web servers and even in different frameworks. .. grid-item-card:: :octicon:`play` Running IDOM :link: running-idom :link-type: doc - See the ways that IDOM can be run with servers or be embedded in existing - applications. + See how IDOM can be run with a variety of different production servers or be + added to existing applications. The fastest way to get started with IDOM is to try it out in a `Juptyer Notebook `__. @@ -46,19 +46,35 @@ notebook linked below will demonstrate how to do this: Section 1: Installing IDOM -------------------------- -The next fastest option is to install IDOM with ``pip``: +The next fastest option is to install IDOM along with a supported server (like +``starlette``) with ``pip``: .. code-block:: bash - pip install "idom[stable]" + pip install "idom[starlette]" To check that everything is working you can run the sample application: .. code-block:: bash - python -c "import idom; idom.run_sample_app(open_browser=True)" + python -c "import idom; idom.run(idom.sample.SampleApp)" -This should automatically open up a browser window to a page that looks like this: +.. note:: + + This launches a simple development server which is good enough for testing, but + probably not what you want to use in production. When deploying in production, + there's a number of different ways of :ref:`running IDOM
`. + +You should then see a few log messages: + +.. code-block:: text + + 2022-03-27T11:58:59-0700 | WARNING | You are running a development server. Change this before deploying in production! + 2022-03-27T11:58:59-0700 | INFO | Running with 'Starlette' at http://127.0.0.1:8000 + +The second log message includes a URL indicating where you should go to view the app. +That will usually be http://127.0.0.1:8000. Once you go to that URL you should see +something like this: .. card:: @@ -70,9 +86,8 @@ If you get a ``RuntimeError`` similar to the following: Found none of the following builtin server implementations... -Then be sure you installed ``"idom[stable]"`` and not just ``idom``. - -For anything else, report your issue in IDOM's :discussion-type:`discussion forum +Then be sure you run ``pip install "idom[starlette]"`` instead of just ``idom``. For +anything else, report your issue in IDOM's :discussion-type:`discussion forum `. .. card:: @@ -89,11 +104,11 @@ For anything else, report your issue in IDOM's :discussion-type:`discussion foru Section 2: Running IDOM ----------------------- -Once you've :ref:`installed IDOM `. The simplest way to run IDOM is -with the :func:`~idom.server.prefab.run` function. By default this will execute your -application using one of the builtin server implementations whose dependencies have all -been installed. Running a tiny "hello world" application just requires the following -code: +Once you've :ref:`installed IDOM `, you'll want to learn how to run an +application. Throughout most of the examples in this documentation, you'll see the +:func:`~idom.server.utils.run` function used. While it's convenient tool for development +it shouldn't be used in production settings - it's slow, and could leak secrets through +debug log messages. .. idom:: _examples/hello_world @@ -104,5 +119,5 @@ code: :octicon:`book` Read More ^^^^^^^^^^^^^^^^^^^^^^^^^ - See the ways that IDOM can be run with servers or be embedded in existing - applications. + See how IDOM can be run with a variety of different production servers or be + added to existing applications. diff --git a/docs/source/guides/getting-started/installing-idom.rst b/docs/source/guides/getting-started/installing-idom.rst index 1187704e4..06dffe0a7 100644 --- a/docs/source/guides/getting-started/installing-idom.rst +++ b/docs/source/guides/getting-started/installing-idom.rst @@ -1,37 +1,45 @@ Installing IDOM =============== -The easiest way to ``pip`` install idom is to do so using the ``stable`` option: +Installing IDOM with ``pip`` will generally require doing so alongside a supported +server implementation. This can be done by specifying an installation extra using square +brackets. For example, if we want to run IDOM using `Starlette +`__ we would run: .. code-block:: bash - pip install "idom[stable]" + pip install "idom[starlette]" -This includes a set of default dependencies for one of the builtin web server -implementation. If you want to install IDOM without these dependencies you may simply -``pip install idom``. +If you want to install a "pure" version of IDOM without a server implementation you can +do so without any installation extras. You might do this if you wanted to user a server +which is not officially supported or if you wanted to manually pin your dependencies: + +.. code-block:: bash + + pip install idom -Installing Other Servers ------------------------- +Officially Supported Servers +---------------------------- IDOM includes built-in support for a variety web server implementations. To install the -required dependencies for each you should substitute ``stable`` from the ``pip install`` -command above with one of the options below: +required dependencies for each you should substitute ``starlette`` from the ``pip +install`` command above with one of the options below: - ``fastapi`` - https://fastapi.tiangolo.com - ``flask`` - https://palletsprojects.com/p/flask/ - ``sanic`` - https://sanicframework.org +- ``starlette`` - https://www.starlette.io/ - ``tornado`` - https://www.tornadoweb.org/en/stable/ If you need to, you can install more than one option by separating them with commas: .. code-block:: bash - pip install idom[fastapi,flask,sanic,tornado] + pip install "idom[fastapi,flask,sanic,starlette,tornado]" Once this is complete you should be able to :ref:`run IDOM ` with your -:ref:`chosen server implementation `. +chosen server implementation. Installing In Other Frameworks @@ -40,7 +48,7 @@ Installing In Other Frameworks While IDOM can run in a variety of contexts, sometimes web frameworks require extra work in order to integrate with them. In these cases, the IDOM team distributes bindings for various frameworks as separate Python packages. For documentation on how to install and -run IDOM in the supported frameworks, follow the links below: +run IDOM in these supported frameworks, follow the links below: .. raw:: html diff --git a/docs/source/guides/getting-started/running-idom.rst b/docs/source/guides/getting-started/running-idom.rst index 1a471979b..0b913070b 100644 --- a/docs/source/guides/getting-started/running-idom.rst +++ b/docs/source/guides/getting-started/running-idom.rst @@ -1,236 +1,171 @@ Running IDOM ============ -The simplest way to run IDOM is with the :func:`~idom.server.prefab.run` function. By -default this will execute your application using one of the builtin server -implementations whose dependencies have all been installed. Running a tiny "hello world" -application just requires the following code: +The simplest way to run IDOM is with the :func:`~idom.server.utils.run` function. This +is the method you'll see used throughout this documentation. However, this executes your +application using a development server which is great for testing, but probably not what +if you're :ref:`deploying in production `. Below are some +more robust and performant ways of running IDOM with various supported servers. -.. idom:: _examples/hello_world -.. note:: - - Try clicking the **▶️ Result** tab to see what this displays! - - -Running IDOM in Debug Mode +Running IDOM in Production -------------------------- -IDOM provides a debug mode that is turned off by default. This can be enabled when you -run your application by setting the ``IDOM_DEBUG_MODE`` environment variable. - -.. tab-set:: - - .. tab-item:: Unix Shell - - .. code-block:: - - export IDOM_DEBUG_MODE=1 - python my_idom_app.py - - .. tab-item:: Command Prompt - - .. code-block:: text - - set IDOM_DEBUG_MODE=1 - python my_idom_app.py - - .. tab-item:: PowerShell - - .. code-block:: powershell +The first thing you'll need to do if you want to run IDOM in production is choose a +server implementation and follow its documentation on how to create and run an +application. This is the server :ref:`you probably chose ` +when installing IDOM. Then you'll need to configure that application with an IDOM view. +We should the basics how how to run each supported server below, but all implementations +will follow a pattern similar to the following: - $env:IDOM_DEBUG_MODE = "1" - python my_idom_app.py +.. code-block:: -.. danger:: + from my_chosen_server import Application - Leave debug mode off in production! - -Among other things, running in this mode: + from idom import component, html + from idom.server.my_chosen_server import configure -- Turns on debug log messages -- Adds checks to ensure the :ref:`VDOM` spec is adhered to -- Displays error messages that occur within your app -Errors will be displayed where the uppermost component is located in the view: + @component + def HelloWorld(): + return html.h1("Hello, world!") -.. idom:: _examples/debug_error_example + app = Application() + configure(app, HelloWorld) -Choosing a Server Implementation --------------------------------- +You'll then run this ``app`` using a `ASGI `__ or +`WSGI `__ server from the command line. -Without extra care, running an IDOM app with the ``run()`` function can be somewhat -inpredictable since the kind of server being used by default depends on what gets -discovered first. To be more explicit about which server implementation you want to run -with you can import your chosen server class and pass it to the ``server_type`` -parameter of ``run()``: -.. code-block:: +Running with `FastAPI `__ +....................................................... - from idom import component, html, run - from idom.server.sanic import PerClientStateServer +.. idom:: _examples/run_fastapi +Then assuming you put this in ``main.py``, you can run the ``app`` using `Uvicorn +`__: - @component - def App(): - return html.h1(f"Hello, World!") +.. code-block:: bash + uvicorn main:app - run(App, server_type=PerClientStateServer) -Presently IDOM's core library supports the following server implementations: +Running with `Flask `__ +............................................................. -- :mod:`idom.server.fastapi` -- :mod:`idom.server.sanic` -- :mod:`idom.server.flask` -- :mod:`idom.server.tornado` +.. idom:: _examples/run_flask -.. hint:: +Then assuming you put this in ``main.py``, you can run the ``app`` using `Gunicorn +`__: - To install them, see the :ref:`Installing Other Servers` section. +.. code-block:: bash + gunicorn main:app -Available Server Types ----------------------- -Some of server implementations have more than one server type available. The server type -which exists for all implementations is the ``PerClientStateServer``. This server type -displays a unique view to each user who visits the site. For those that support it, -there may also be a ``SharedClientStateServer`` available. This server type presents the -same view to all users who visit the site. For example, if you were to run the following -code: +Running with `Sanic `__ +................................................... -.. code-block:: +.. idom:: _examples/run_sanic - from idom import component, hooks, html, run - from idom.server.sanic import SharedClientStateServer +Then assuming you put this in ``main.py``, you can run the ``app`` using Sanic's builtin +server: +.. code-block:: bash - @component - def Slider(): - value, set_value = hooks.use_state(50) - return html.input({"type": "range", "min": 1, "max": 100, "value": value}) + sanic main.app - run(Slider, server_type=SharedClientStateServer) +Running with `Starlette `__ +...................................................... -Two clients could see the slider and see a synchronized view of it. That is, when one -client moved the slider, the other would see the slider update without their action. -This might look similar to the video below: +.. idom:: _examples/run_starlette -.. image:: _static/shared-client-state-server-slider.gif +Then assuming you put this in ``main.py``, you can run the application using `Uvicorn +`__: -Presently the following server implementations support the ``SharedClientStateServer``: +.. code-block:: bash -- :func:`idom.server.fastapi.SharedClientStateServer` -- :func:`idom.server.sanic.SharedClientStateServer` + uvicorn main:app -.. note:: - If you need to, your can :ref:`write your own server implementation `. +Running with `Tornado `__ +................................................................ -Common Server Settings ----------------------- +.. idom:: _examples/run_tornado -Each server implementation has its own high-level settings that are defined by its -respective ``Config`` (a typed dictionary). As a general rule, these ``Config`` types -expose the same options across implementations. These configuration dictionaries can -then be passed to the ``run()`` function via the ``config`` parameter: +Tornado is run using it's own builtin server rather than an external WSGI or ASGI +server. -.. code-block:: - from idom import run, component, html - from idom.server.sanic import PerClientStateServer, Config +Running IDOM in Debug Mode +-------------------------- +IDOM provides a debug mode that is turned off by default. This can be enabled when you +run your application by setting the ``IDOM_DEBUG_MODE`` environment variable. - @component - def App(): - return html.h1(f"Hello, World!") +.. tab-set:: + .. tab-item:: Unix Shell - server_config = Config( - cors=False, - url_prefix="", - serve_static_files=True, - redirect_root_to_index=True, - ) + .. code-block:: - run(App, server_type=PerClientStateServer, server_config=server_config) + export IDOM_DEBUG_MODE=1 + python my_idom_app.py -Here's the list of available configuration types: + .. tab-item:: Command Prompt -- :class:`idom.server.fastapi.Config` -- :class:`idom.server.sanic.Config` -- :class:`idom.server.flask.Config` -- :class:`idom.server.tornado.Config` + .. code-block:: text + set IDOM_DEBUG_MODE=1 + python my_idom_app.py -Specific Server Settings ------------------------- + .. tab-item:: PowerShell -The ``Config`` :ref:`described above ` is meant to be an -implementation agnostic - all ``Config`` objects support a similar set of options. -However, there are inevitably cases where you need to set up your chosen server using -implementation specific details. For instance, you might want to add an extra route to -the server your using in order to provide extra resources to your application. + .. code-block:: powershell -Doing this kind of set up can be achieved by passing in an instance of your chosen -server implementation into the ``app`` parameter of the ``run()`` function. To -illustrate, if I'm making my application with ``sanic`` and I want to add an extra route -I would do the following: + $env:IDOM_DEBUG_MODE = "1" + python my_idom_app.py -.. code-block:: +.. danger:: - from sanic import Sanic - from idom import component, html, run - from idom.server.sanic import PerClientStateServer + Leave debug mode off in production! - app = Sanic(__name__) +Among other things, running in this mode: - # these are implementation specific settings only known to `sanic` servers - app.config.REQUEST_TIMEOUT = 60 - app.config.RESPONSE_TIMEOUT = 60 +- Turns on debug log messages +- Adds checks to ensure the :ref:`VDOM` spec is adhered to +- Displays error messages that occur within your app +Errors will be displayed where the uppermost component is located in the view: - @component - def SomeView(): - return html.form({"action": }) +.. idom:: _examples/debug_error_example - run(SomeView, server_type=PerClientStateServer, app=app) +Server Configuration Options +---------------------------- +IDOM's various server implementations come with ``Options`` that can be passed to their +respective ``configure()`` functions. Those which are common amongst the options are: -Add to an Existing Web Server ------------------------------ +- ``url_prefix`` - prefix all routes configured by IDOM +- ``redirect_root`` - whether to redirect the root of the application to the IDOM view +- ``serve_static_files`` - whether to server IDOM's static files from it's default route -If you're already serving an application with one of the supported web servers listed -above, you can add an IDOM to them as a server extension. Instead of using the ``run()`` -function, you'll instantiate one of IDOM's server implementations by passing it an -instance of your existing application: +You'd then pass these options to ``configure()`` in the following way: .. code-block:: - from sanic import Sanic - - from idom import component, html - from idom.server.sanic import PerClientStateServer, Config - - existing_app = Sanic(__name__) - - - @component - def IdomView(): - return html.h1("This is an IDOM App") - - - PerClientStateServer(IdomView, app=existing_app, config=Config(url_prefix="app")) + configure(app, MyComponent, Options(...)) - existing_app.run(host="127.0.0.1", port=8000) +To learn more read the description for your chosen server implementation: -To test that everything is working, you should be able to navigate to -``https://127.0.0.1:8000/app`` where you should see the results from ``IdomView``. +- :class:`idom.server.fastapi.Options` +- :class:`idom.server.flask.Options` +- :class:`idom.server.sanic.Options` +- :class:`idom.server.starlette.Options` +- :class:`idom.server.tornado.Options` Embed in an Existing Webpage @@ -261,8 +196,8 @@ embedding one the examples from this documentation into your own webpage: As mentioned though, this is connecting to the server that is hosting this documentation. If you want to connect to a view from your own server, you'll need to -change the URL above to one you provide. One way to do this might be to :ref:`add to an -existing web server`. Another would be to run IDOM in an adjacent web server instance +change the URL above to one you provide. One way to do this might be to add to an +existing application. Another would be to run IDOM in an adjacent web server instance that you coordinate with something like `NGINX `__. For the sake of simplicity, we'll assume you do something similar to the following in an existing Python app: diff --git a/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/app.py b/docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/main.py similarity index 100% rename from docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/app.py rename to docs/source/guides/managing-state/sharing-component-state/_examples/filterable_list/main.py diff --git a/docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/app.py b/docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/main.py similarity index 100% rename from docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/app.py rename to docs/source/guides/managing-state/sharing-component-state/_examples/synced_inputs/main.py diff --git a/docs/source/reference/_examples/character_movement/app.py b/docs/source/reference/_examples/character_movement/main.py similarity index 100% rename from docs/source/reference/_examples/character_movement/app.py rename to docs/source/reference/_examples/character_movement/main.py diff --git a/noxfile.py b/noxfile.py index bd9ad2599..b954df00d 100644 --- a/noxfile.py +++ b/noxfile.py @@ -179,7 +179,7 @@ def test_python_suite(session: Session) -> None: """Run the Python-based test suite""" session.env["IDOM_DEBUG_MODE"] = "1" install_requirements_file(session, "test-env") - + session.run("playwright", "install", "chromium") posargs = session.posargs posargs += ["--reruns", "3", "--reruns-delay", "1"] @@ -353,7 +353,7 @@ def tag(session: Session) -> None: # stage, commit, tag, and push version bump session.run("git", "add", "--all", external=True) - session.run("git", "commit", "-m", repr(f"version {new_version}"), external=True) + session.run("git", "commit", "-m", f"version {new_version}", external=True) session.run("git", "tag", version, external=True) session.run("git", "push", "origin", "main", "--tags", external=True) diff --git a/requirements/pkg-deps.txt b/requirements/pkg-deps.txt index f4d440e32..706e6fdcd 100644 --- a/requirements/pkg-deps.txt +++ b/requirements/pkg-deps.txt @@ -4,3 +4,4 @@ anyio >=3.0 jsonpatch >=1.32 fastjsonschema >=2.14.5 requests >=2.0 +colorlog >=6 diff --git a/requirements/pkg-extras.txt b/requirements/pkg-extras.txt index 3e7d3aab1..834885aa4 100644 --- a/requirements/pkg-extras.txt +++ b/requirements/pkg-extras.txt @@ -1,26 +1,23 @@ -# extra=stable,sanic -sanic <19.12.0 +# extra=starlette +starlette >=0.13.6 +uvicorn[standard] >=0.13.4 + +# extra=sanic +sanic >=21 sanic-cors # extra=fastapi fastapi >=0.63.0 uvicorn[standard] >=0.13.4 -# extra=starlette -fastapi >=0.16.0 -uvicorn[standard] >=0.13.4 - # extra=flask flask<2.0 markupsafe<2.1 flask-cors flask-sockets -# tornado +# extra=tornado tornado # extra=testing -selenium - -# extra=matplotlib -matplotlib +playwright diff --git a/requirements/test-env.txt b/requirements/test-env.txt index c277b335c..7e5ab1955 100644 --- a/requirements/test-env.txt +++ b/requirements/test-env.txt @@ -1,9 +1,11 @@ -ipython pytest -pytest-asyncio +pytest-asyncio>=0.17 pytest-cov pytest-mock pytest-rerunfailures pytest-timeout responses -selenium +playwright + +# I'm not quite sure why this needs to be installed for tests with Sanic to pass +sanic-testing diff --git a/scripts/live_docs.py b/scripts/live_docs.py index f0173d436..e21339326 100644 --- a/scripts/live_docs.py +++ b/scripts/live_docs.py @@ -1,4 +1,8 @@ +import asyncio import os +import threading +import time +import webbrowser from sphinx_autobuild.cli import ( Server, @@ -9,8 +13,8 @@ get_parser, ) -from docs.app import IDOM_MODEL_SERVER_URL_PREFIX, make_app, make_examples_component -from idom.server.sanic import PerClientStateServer +from docs.app import IDOM_MODEL_SERVER_URL_PREFIX, Example, make_app, reload_examples +from idom.server.sanic import Options, configure, serve_development_app from idom.testing import clear_idom_web_modules_dir @@ -23,19 +27,41 @@ def wrap_builder(old_builder): # This is the bit that we're injecting to get the example components to reload too - def new_builder(): - [s.stop() for s in _running_idom_servers] - clear_idom_web_modules_dir() - server = PerClientStateServer( - make_examples_component(), - {"cors": True, "url_prefix": IDOM_MODEL_SERVER_URL_PREFIX}, - make_app(), + app = make_app() + + configure( + app, + Example, + Options(cors=True, url_prefix=IDOM_MODEL_SERVER_URL_PREFIX), + ) + + thread_started = threading.Event() + + def run_in_thread(): + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + + server_started = asyncio.Event() + + async def set_thread_event_when_started(): + await server_started.wait() + thread_started.set() + + loop.run_until_complete( + asyncio.gather( + serve_development_app(app, "127.0.0.1", 5555, server_started), + set_thread_event_when_started(), + ) ) - server.run_in_thread("127.0.0.1", 5555, debug=True) - _running_idom_servers.append(server) - server.wait_until_started() + threading.Thread(target=run_in_thread, daemon=True).start() + + thread_started.wait() + + def new_builder(): + clear_idom_web_modules_dir() + reload_examples() old_builder() return new_builder @@ -71,9 +97,14 @@ def main(): # Find the free port portn = args.port or find_free_port() if args.openbrowser is True: - server.serve(port=portn, host=args.host, root=outdir, open_url_delay=args.delay) - else: - server.serve(port=portn, host=args.host, root=outdir) + + def opener(): + time.sleep(args.delay) + webbrowser.open("http://%s:%s/index.html" % (args.host, 8000)) + + threading.Thread(target=opener, daemon=True).start() + + server.serve(port=portn, host=args.host, root=outdir) if __name__ == "__main__": diff --git a/setup.cfg b/setup.cfg index 7e05d27bd..293907987 100644 --- a/setup.cfg +++ b/setup.cfg @@ -9,6 +9,9 @@ warn_unused_ignores = True [flake8] ignore = E203, E266, E501, W503, F811, N802, N806 +per-file-ignores = + # sometimes this is required in order to hide setup for an example + docs/*/_examples/*.py:E402 max-line-length = 88 max-complexity = 18 select = B,C,E,F,W,T4,B9,N,ROH @@ -24,7 +27,8 @@ testpaths = tests xfail_strict = True markers = slow: marks tests as slow (deselect with '-m "not slow"') -python_files = assert_*.py test_*.py +python_files = *asserts.py test_*.py +asyncio_mode = auto [coverage:report] fail_under = 100 diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 8d250090e..336f3332f 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -1,7 +1,6 @@ -from . import config, html, log, types, web +from . import config, html, logging, sample, server, types, web from .core import hooks from .core.component import component -from .core.dispatcher import Stop from .core.events import event from .core.hooks import ( create_context, @@ -14,11 +13,11 @@ use_state, ) from .core.layout import Layout +from .core.serve import Stop from .core.vdom import vdom -from .sample import run_sample_app -from .server.prefab import run +from .server.utils import run from .utils import Ref, html_to_vdom -from .widgets import hotswap, multiview +from .widgets import hotswap __author__ = "idom-team" @@ -34,11 +33,11 @@ "html_to_vdom", "html", "Layout", - "log", - "multiview", + "logging", "Ref", - "run_sample_app", "run", + "sample", + "server", "Stop", "types", "use_callback", diff --git a/src/idom/core/dispatcher.py b/src/idom/core/dispatcher.py deleted file mode 100644 index 540c2757b..000000000 --- a/src/idom/core/dispatcher.py +++ /dev/null @@ -1,235 +0,0 @@ -from __future__ import annotations - -from asyncio import Future, Queue, ensure_future -from asyncio.tasks import FIRST_COMPLETED, ensure_future, gather, wait -from contextlib import asynccontextmanager -from logging import getLogger -from typing import ( - Any, - AsyncIterator, - Awaitable, - Callable, - Dict, - List, - NamedTuple, - Sequence, - Tuple, - cast, -) -from weakref import WeakSet - -from anyio import create_task_group - -from idom.utils import Ref - -from ._fixed_jsonpatch import apply_patch, make_patch # type: ignore -from .layout import LayoutEvent, LayoutUpdate -from .types import LayoutType, VdomJson - - -logger = getLogger(__name__) - - -SendCoroutine = Callable[["VdomJsonPatch"], Awaitable[None]] -"""Send model patches given by a dispatcher""" - -RecvCoroutine = Callable[[], Awaitable[LayoutEvent]] -"""Called by a dispatcher to return a :class:`idom.core.layout.LayoutEvent` - -The event will then trigger an :class:`idom.core.proto.EventHandlerType` in a layout. -""" - - -class Stop(BaseException): - """Stop dispatching changes and events - - Raising this error will tell dispatchers to gracefully exit. Typically this is - called by code running inside a layout to tell it to stop rendering. - """ - - -async def dispatch_single_view( - layout: LayoutType[LayoutUpdate, LayoutEvent], - send: SendCoroutine, - recv: RecvCoroutine, -) -> None: - """Run a dispatch loop for a single view instance""" - with layout: - try: - async with create_task_group() as task_group: - task_group.start_soon(_single_outgoing_loop, layout, send) - task_group.start_soon(_single_incoming_loop, layout, recv) - except Stop: - logger.info("Stopped dispatch task") - - -SharedViewDispatcher = Callable[[SendCoroutine, RecvCoroutine], Awaitable[None]] -_SharedViewDispatcherFuture = Callable[[SendCoroutine, RecvCoroutine], "Future[None]"] - - -@asynccontextmanager -async def create_shared_view_dispatcher( - layout: LayoutType[LayoutUpdate, LayoutEvent], -) -> AsyncIterator[_SharedViewDispatcherFuture]: - """Enter a dispatch context where all subsequent view instances share the same state""" - with layout: - ( - dispatch_shared_view, - send_patch, - ) = await _create_shared_view_dispatcher(layout) - - dispatch_tasks: List[Future[None]] = [] - - def dispatch_shared_view_soon( - send: SendCoroutine, recv: RecvCoroutine - ) -> Future[None]: - future = ensure_future(dispatch_shared_view(send, recv)) - dispatch_tasks.append(future) - return future - - yield dispatch_shared_view_soon - - gathered_dispatch_tasks = gather(*dispatch_tasks, return_exceptions=True) - - while True: - ( - update_future, - dispatchers_completed_future, - ) = await _wait_until_first_complete( - layout.render(), - gathered_dispatch_tasks, - ) - - if dispatchers_completed_future.done(): - update_future.cancel() - break - else: - patch = VdomJsonPatch.create_from(update_future.result()) - - send_patch(patch) - - -def ensure_shared_view_dispatcher_future( - layout: LayoutType[LayoutUpdate, LayoutEvent], -) -> Tuple[Future[None], SharedViewDispatcher]: - """Ensure the future of a dispatcher made by :func:`create_shared_view_dispatcher` - - This returns a future that can be awaited to block until all dispatch tasks have - completed as well as the dispatcher coroutine itself which is used to start dispatch - tasks. - - This is required in situations where usage of the async context manager from - :func:`create_shared_view_dispatcher` is not possible. Typically this happens when - integrating IDOM with other frameworks, servers, or applications. - """ - dispatcher_future: Future[SharedViewDispatcher] = Future() - - async def dispatch_shared_view_forever() -> None: - with layout: - ( - dispatch_shared_view, - send_patch, - ) = await _create_shared_view_dispatcher(layout) - - dispatcher_future.set_result(dispatch_shared_view) - - while True: - send_patch(await render_json_patch(layout)) - - async def dispatch(send: SendCoroutine, recv: RecvCoroutine) -> None: - await (await dispatcher_future)(send, recv) - - return ensure_future(dispatch_shared_view_forever()), dispatch - - -async def render_json_patch(layout: LayoutType[LayoutUpdate, Any]) -> VdomJsonPatch: - """Render a class:`VdomJsonPatch` from a layout""" - return VdomJsonPatch.create_from(await layout.render()) - - -class VdomJsonPatch(NamedTuple): - """An object describing an update to a :class:`Layout` in the form of a JSON patch""" - - path: str - """The path where changes should be applied""" - - changes: List[Dict[str, Any]] - """A list of JSON patches to apply at the given path""" - - def apply_to(self, model: VdomJson) -> VdomJson: - """Return the model resulting from the changes in this update""" - return cast( - VdomJson, - apply_patch( - model, [{**c, "path": self.path + c["path"]} for c in self.changes] - ), - ) - - @classmethod - def create_from(cls, update: LayoutUpdate) -> VdomJsonPatch: - """Return a patch given an layout update""" - return cls(update.path, make_patch(update.old or {}, update.new).patch) - - -async def _create_shared_view_dispatcher( - layout: LayoutType[LayoutUpdate, LayoutEvent], -) -> Tuple[SharedViewDispatcher, Callable[[VdomJsonPatch], None]]: - update = await layout.render() - model_state = Ref(update.new) - - # We push updates to queues instead of pushing directly to send() callbacks in - # order to isolate send_patch() from any errors send() callbacks might raise. - all_patch_queues: WeakSet[Queue[VdomJsonPatch]] = WeakSet() - - async def dispatch_shared_view(send: SendCoroutine, recv: RecvCoroutine) -> None: - patch_queue: Queue[VdomJsonPatch] = Queue() - try: - async with create_task_group() as inner_task_group: - all_patch_queues.add(patch_queue) - effective_update = LayoutUpdate("", None, model_state.current) - await send(VdomJsonPatch.create_from(effective_update)) - inner_task_group.start_soon(_single_incoming_loop, layout, recv) - inner_task_group.start_soon(_shared_outgoing_loop, send, patch_queue) - except Stop: - logger.info("Stopped dispatch task") - finally: - all_patch_queues.remove(patch_queue) - return None - - def send_patch(patch: VdomJsonPatch) -> None: - model_state.current = patch.apply_to(model_state.current) - for queue in all_patch_queues: - queue.put_nowait(patch) - - return dispatch_shared_view, send_patch - - -async def _single_outgoing_loop( - layout: LayoutType[LayoutUpdate, LayoutEvent], send: SendCoroutine -) -> None: - while True: - await send(await render_json_patch(layout)) - - -async def _single_incoming_loop( - layout: LayoutType[LayoutUpdate, LayoutEvent], recv: RecvCoroutine -) -> None: - while True: - # We need to fire and forget here so that we avoid waiting on the completion - # of this event handler before receiving and running the next one. - ensure_future(layout.deliver(await recv())) - - -async def _shared_outgoing_loop( - send: SendCoroutine, queue: Queue[VdomJsonPatch] -) -> None: - while True: - await send(await queue.get()) - - -async def _wait_until_first_complete( - *tasks: Awaitable[Any], -) -> Sequence[Future[Any]]: - futures = [ensure_future(t) for t in tasks] - await wait(futures, return_when=FIRST_COMPLETED) - return futures diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index d8ff3ab54..d6e8983ec 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -206,19 +206,18 @@ def effect() -> None: def create_context( default_value: _StateType, name: str | None = None -) -> type[_Context[_StateType]]: +) -> type[Context[_StateType]]: """Return a new context type for use in :func:`use_context`""" - class Context(_Context[_StateType]): + class _Context(Context[_StateType]): _default_value = default_value - if name is not None: - Context.__name__ = name + _Context.__name__ = name or "Context" - return Context + return _Context -def use_context(context_type: type[_Context[_StateType]]) -> _StateType: +def use_context(context_type: type[Context[_StateType]]) -> _StateType: """Get the current value for the given context type. See the full :ref:`Use Context` docs for more information. @@ -228,7 +227,7 @@ def use_context(context_type: type[_Context[_StateType]]) -> _StateType: # that newly present current context. When we update it though, we don't need to # schedule a new render since we're already rending right now. Thus we can't do this # with use_state() since we'd incur an extra render when calling set_state. - context_ref: Ref[_Context[_StateType] | None] = use_ref(None) + context_ref: Ref[Context[_StateType] | None] = use_ref(None) if context_ref.current is None: provided_context = context_type._current.get() @@ -244,7 +243,7 @@ def use_context(context_type: type[_Context[_StateType]]) -> _StateType: @use_effect def subscribe_to_context_change() -> Callable[[], None]: - def set_context(new: _Context[_StateType]) -> None: + def set_context(new: Context[_StateType]) -> None: # We don't need to check if `new is not context_ref.current` because we only # trigger this callback when the value of a context, and thus the context # itself changes. Therefore we can always schedule a render. @@ -260,13 +259,13 @@ def set_context(new: _Context[_StateType]) -> None: _UNDEFINED: Any = object() -class _Context(Generic[_StateType]): +class Context(Generic[_StateType]): # This should be _StateType instead of Any, but it can't due to this limitation: # https://github.com/python/mypy/issues/5144 _default_value: ClassVar[Any] - _current: ClassVar[ThreadLocal[_Context[Any] | None]] + _current: ClassVar[ThreadLocal[Context[Any] | None]] def __init_subclass__(cls) -> None: # every context type tracks which of its instances are currently in use @@ -281,7 +280,7 @@ def __init__( self.children = children self.value: _StateType = self._default_value if value is _UNDEFINED else value self.key = key - self.subscribers: set[Callable[[_Context[_StateType]], None]] = set() + self.subscribers: set[Callable[[Context[_StateType]], None]] = set() self.type = self.__class__ def render(self) -> VdomDict: @@ -297,7 +296,7 @@ def reset_ctx() -> None: return vdom("", *self.children) - def should_render(self, new: _Context[_StateType]) -> bool: + def should_render(self, new: Context[_StateType]) -> bool: if self.value is not new.value: new.subscribers.update(self.subscribers) for set_context in self.subscribers: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index fe3817a4d..1f67bd586 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -193,6 +193,7 @@ def _render_component( if ( old_state is not None + and hasattr(old_state.model, "current") and old_state.is_component_state and not _check_should_render( old_state.life_cycle_state.component, component diff --git a/src/idom/core/serve.py b/src/idom/core/serve.py new file mode 100644 index 000000000..af21f40f7 --- /dev/null +++ b/src/idom/core/serve.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +from asyncio import ensure_future +from asyncio.tasks import ensure_future +from logging import getLogger +from typing import Any, Awaitable, Callable, Dict, List, NamedTuple, cast + +from anyio import create_task_group + +from ._fixed_jsonpatch import apply_patch, make_patch # type: ignore +from .layout import LayoutEvent, LayoutUpdate +from .types import LayoutType, VdomJson + + +logger = getLogger(__name__) + + +SendCoroutine = Callable[["VdomJsonPatch"], Awaitable[None]] +"""Send model patches given by a dispatcher""" + +RecvCoroutine = Callable[[], Awaitable[LayoutEvent]] +"""Called by a dispatcher to return a :class:`idom.core.layout.LayoutEvent` + +The event will then trigger an :class:`idom.core.proto.EventHandlerType` in a layout. +""" + + +class Stop(BaseException): + """Stop serving changes and events + + Raising this error will tell dispatchers to gracefully exit. Typically this is + called by code running inside a layout to tell it to stop rendering. + """ + + +async def serve_json_patch( + layout: LayoutType[LayoutUpdate, LayoutEvent], + send: SendCoroutine, + recv: RecvCoroutine, +) -> None: + """Run a dispatch loop for a single view instance""" + with layout: + try: + async with create_task_group() as task_group: + task_group.start_soon(_single_outgoing_loop, layout, send) + task_group.start_soon(_single_incoming_loop, layout, recv) + except Stop: + logger.info("Stopped dispatch task") + + +async def render_json_patch(layout: LayoutType[LayoutUpdate, Any]) -> VdomJsonPatch: + """Render a class:`VdomJsonPatch` from a layout""" + return VdomJsonPatch.create_from(await layout.render()) + + +class VdomJsonPatch(NamedTuple): + """An object describing an update to a :class:`Layout` in the form of a JSON patch""" + + path: str + """The path where changes should be applied""" + + changes: List[Dict[str, Any]] + """A list of JSON patches to apply at the given path""" + + def apply_to(self, model: VdomJson) -> VdomJson: + """Return the model resulting from the changes in this update""" + return cast( + VdomJson, + apply_patch( + model, [{**c, "path": self.path + c["path"]} for c in self.changes] + ), + ) + + @classmethod + def create_from(cls, update: LayoutUpdate) -> VdomJsonPatch: + """Return a patch given an layout update""" + return cls(update.path, make_patch(update.old or {}, update.new).patch) + + +async def _single_outgoing_loop( + layout: LayoutType[LayoutUpdate, LayoutEvent], send: SendCoroutine +) -> None: + while True: + await send(await render_json_patch(layout)) + + +async def _single_incoming_loop( + layout: LayoutType[LayoutUpdate, LayoutEvent], recv: RecvCoroutine +) -> None: + while True: + # We need to fire and forget here so that we avoid waiting on the completion + # of this event handler before receiving and running the next one. + ensure_future(layout.deliver(await recv())) diff --git a/src/idom/core/types.py b/src/idom/core/types.py index ffa9ba99a..cdac08b50 100644 --- a/src/idom/core/types.py +++ b/src/idom/core/types.py @@ -21,6 +21,9 @@ ComponentConstructor = Callable[..., "ComponentType"] """Simple function returning a new component""" +RootComponentConstructor = Callable[[], "ComponentType"] +"""The root component should be constructed by a function accepting no arguments.""" + Key = Union[str, int] @@ -35,7 +38,7 @@ class ComponentType(Protocol): key: Key | None """An identifier which is unique amongst a component's immediate siblings""" - type: type[Any] | Callable[..., Any] + type: Any """The function or class defining the behavior of this component This is used to see if two component instances share the same definition. @@ -84,6 +87,7 @@ def __exit__( VdomAttributesAndChildren = Union[ Mapping[str, Any], # this describes both VdomDict and VdomAttributes Iterable[VdomChild], + VdomChild, ] """Useful for the ``*attributes_and_children`` parameter in :func:`idom.core.vdom.vdom`""" diff --git a/src/idom/log.py b/src/idom/logging.py similarity index 85% rename from src/idom/log.py rename to src/idom/logging.py index 856ee9ab2..4f77e72c2 100644 --- a/src/idom/log.py +++ b/src/idom/logging.py @@ -24,9 +24,9 @@ }, "formatters": { "generic": { - "format": "%(asctime)s | %(levelname)s | %(message)s", + "format": "%(asctime)s | %(log_color)s%(levelname)s%(reset)s | %(message)s", "datefmt": r"%Y-%m-%dT%H:%M:%S%z", - "class": "logging.Formatter", + "class": "colorlog.ColoredFormatter", } }, } diff --git a/src/idom/sample.py b/src/idom/sample.py index b0844ada9..908de34b7 100644 --- a/src/idom/sample.py +++ b/src/idom/sample.py @@ -1,20 +1,14 @@ from __future__ import annotations -import webbrowser -from typing import Any - -from idom.server.types import ServerType - from . import html from .core.component import component from .core.types import VdomDict -from .server.utils import find_available_port, find_builtin_server_type @component -def App() -> VdomDict: +def SampleApp() -> VdomDict: return html.div( - {"style": {"padding": "15px"}}, + {"id": "sample", "style": {"padding": "15px"}}, html.h1("Sample Application"), html.p( "This is a basic application made with IDOM. Click ", @@ -25,36 +19,3 @@ def App() -> VdomDict: " to learn more.", ), ) - - -def run_sample_app( - host: str = "127.0.0.1", - port: int | None = None, - open_browser: bool = False, - run_in_thread: bool | None = None, -) -> ServerType[Any]: - """Run a sample application. - - Args: - host: host where the server should run - port: the port on the host to serve from - open_browser: whether to open a browser window after starting the server - """ - port = port or find_available_port(host) - server_type = find_builtin_server_type("PerClientStateServer") - server = server_type(App) - - run_in_thread = open_browser or run_in_thread - - if not run_in_thread: # pragma: no cover - server.run(host=host, port=port) - return server - - thread = server.run_in_thread(host=host, port=port) - server.wait_until_started(5) - - if open_browser: # pragma: no cover - webbrowser.open(f"http://{host}:{port}") - thread.join() - - return server diff --git a/src/idom/server/__init__.py b/src/idom/server/__init__.py index 0dfd40ace..e69de29bb 100644 --- a/src/idom/server/__init__.py +++ b/src/idom/server/__init__.py @@ -1,8 +0,0 @@ -from .prefab import hotswap_server, multiview_server, run - - -__all__ = [ - "hotswap_server", - "multiview_server", - "run", -] diff --git a/src/idom/server/_asgi.py b/src/idom/server/_asgi.py new file mode 100644 index 000000000..9e01a21e7 --- /dev/null +++ b/src/idom/server/_asgi.py @@ -0,0 +1,42 @@ +from __future__ import annotations + +import asyncio +from typing import Any, Awaitable + +from asgiref.typing import ASGIApplication +from uvicorn.config import Config as UvicornConfig +from uvicorn.server import Server as UvicornServer + + +async def serve_development_asgi( + app: ASGIApplication | Any, + host: str, + port: int, + started: asyncio.Event | None, +) -> None: + """Run a development server for starlette""" + server = UvicornServer( + UvicornConfig( + app, + host=host, + port=port, + loop="asyncio", + debug=True, + ) + ) + + coros: list[Awaitable[Any]] = [server.serve()] + + if started: + coros.append(_check_if_started(server, started)) + + try: + await asyncio.gather(*coros) + finally: + await asyncio.wait_for(server.shutdown(), timeout=3) + + +async def _check_if_started(server: UvicornServer, started: asyncio.Event) -> None: + while not server.started: + await asyncio.sleep(0.2) + started.set() diff --git a/src/idom/server/default.py b/src/idom/server/default.py new file mode 100644 index 000000000..68adaf41b --- /dev/null +++ b/src/idom/server/default.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +import asyncio +from typing import Any + +from idom.types import RootComponentConstructor + +from .types import ServerImplementation +from .utils import all_implementations + + +def configure( + app: Any, component: RootComponentConstructor, options: None = None +) -> None: + """Configure the given app instance to display the given component""" + if options is not None: # pragma: no cover + raise ValueError("Default implementation cannot be configured with options") + return _default_implementation().configure(app, component) + + +def create_development_app() -> Any: + """Create an application instance for development purposes""" + return _default_implementation().create_development_app() + + +async def serve_development_app( + app: Any, + host: str, + port: int, + started: asyncio.Event | None = None, +) -> None: + """Run an application using a development server""" + return await _default_implementation().serve_development_app( + app, host, port, started + ) + + +def use_scope() -> Any: + return _default_implementation().use_scope() + + +_DEFAULT_IMPLEMENTATION: ServerImplementation[Any] | None = None + + +def _default_implementation() -> ServerImplementation[Any]: + """Get the first available server implementation""" + global _DEFAULT_IMPLEMENTATION + + if _DEFAULT_IMPLEMENTATION is not None: + return _DEFAULT_IMPLEMENTATION + + try: + implementation = next(all_implementations()) + except StopIteration: # pragma: no cover + raise RuntimeError("No built-in server implementation installed.") + else: + _DEFAULT_IMPLEMENTATION = implementation + return implementation diff --git a/src/idom/server/fastapi.py b/src/idom/server/fastapi.py index 4dbb0e281..2cf66918d 100644 --- a/src/idom/server/fastapi.py +++ b/src/idom/server/fastapi.py @@ -1,54 +1,28 @@ -from typing import Optional +from __future__ import annotations from fastapi import FastAPI -from idom.core.types import ComponentConstructor - -from .starlette import ( - Config, - StarletteServer, - _setup_common_routes, - _setup_config_and_app, - _setup_shared_view_dispatcher_route, - _setup_single_view_dispatcher_route, -) - - -def PerClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[FastAPI] = None, -) -> StarletteServer: - """Return a :class:`StarletteServer` where each client has its own state. - - Implements the :class:`~idom.server.proto.ServerFactory` protocol - - Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) - """ - config, app = _setup_config_and_app(config, app, FastAPI) - _setup_common_routes(config, app) - _setup_single_view_dispatcher_route(config["url_prefix"], app, constructor) - return StarletteServer(app) - - -def SharedClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[FastAPI] = None, -) -> StarletteServer: - """Return a :class:`StarletteServer` where each client shares state. - - Implements the :class:`~idom.server.proto.ServerFactory` protocol - - Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) - """ - config, app = _setup_config_and_app(config, app, FastAPI) - _setup_common_routes(config, app) - _setup_shared_view_dispatcher_route(config["url_prefix"], app, constructor) - return StarletteServer(app) +from . import starlette + + +serve_development_app = starlette.serve_development_app +"""Alias for :func:`idom.server.starlette.serve_development_app`""" + +# see: https://github.com/idom-team/flake8-idom-hooks/issues/12 +use_scope = starlette.use_scope # noqa: ROH101 +"""Alias for :func:`idom.server.starlette.use_scope`""" + +# see: https://github.com/idom-team/flake8-idom-hooks/issues/12 +use_websocket = starlette.use_websocket # noqa: ROH101 +"""Alias for :func:`idom.server.starlette.use_websocket`""" + +Options = starlette.Options +"""Alias for :class:`idom.server.starlette.Options`""" + +configure = starlette.configure +"""Alias for :class:`idom.server.starlette.configure`""" + + +def create_development_app() -> FastAPI: + """Create a development ``FastAPI`` application instance.""" + return FastAPI(debug=True) diff --git a/src/idom/server/flask.py b/src/idom/server/flask.py index 667071808..1cf2ddb66 100644 --- a/src/idom/server/flask.py +++ b/src/idom/server/flask.py @@ -4,147 +4,155 @@ import json import logging from asyncio import Queue as AsyncQueue +from dataclasses import dataclass from queue import Queue as ThreadQueue from threading import Event as ThreadEvent from threading import Thread -from typing import Any, Callable, Dict, NamedTuple, Optional, Tuple, Union, cast -from urllib.parse import parse_qs as parse_query_string - -from flask import Blueprint, Flask, redirect, request, send_from_directory, url_for +from typing import Any, Callable, Dict, NamedTuple, Optional, Union, cast + +from flask import ( + Blueprint, + Flask, + Request, + copy_current_request_context, + redirect, + request, + send_from_directory, + url_for, +) from flask_cors import CORS from flask_sockets import Sockets from gevent import pywsgi from geventwebsocket.handler import WebSocketHandler from geventwebsocket.websocket import WebSocket -from typing_extensions import TypedDict import idom -from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR -from idom.core.dispatcher import dispatch_single_view +from idom.config import IDOM_WEB_MODULES_DIR +from idom.core.hooks import Context, create_context, use_context from idom.core.layout import LayoutEvent, LayoutUpdate -from idom.core.types import ComponentConstructor, ComponentType +from idom.core.serve import serve_json_patch +from idom.core.types import ComponentType, RootComponentConstructor -from .utils import CLIENT_BUILD_DIR, threaded, wait_on_event +from .utils import CLIENT_BUILD_DIR logger = logging.getLogger(__name__) - -class Config(TypedDict, total=False): - """Render server config for :class:`FlaskRenderServer`""" - - cors: Union[bool, Dict[str, Any]] - """Enable or configure Cross Origin Resource Sharing (CORS) - - For more information see docs for ``flask_cors.CORS`` - """ - - import_name: str - """The module where the application instance was created - - For more info see :class:`flask.Flask`. - """ - - redirect_root_to_index: bool - """Whether to redirect the root URL (with prefix) to ``index.html``""" - - serve_static_files: bool - """Whether or not to serve static files (i.e. web modules)""" - - url_prefix: str - """The URL prefix where IDOM resources will be served from""" +RequestContext: type[Context[Request | None]] = create_context(None, "RequestContext") -def PerClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[Flask] = None, -) -> FlaskServer: +def configure( + app: Flask, component: RootComponentConstructor, options: Options | None = None +) -> None: """Return a :class:`FlaskServer` where each client has its own state. Implements the :class:`~idom.server.proto.ServerFactory` protocol Parameters: constructor: A component constructor - config: Options for configuring server behavior + options: Options for configuring server behavior app: An application instance (otherwise a default instance is created) """ - config, app = _setup_config_and_app(config, app) - blueprint = Blueprint("idom", __name__, url_prefix=config["url_prefix"]) - _setup_common_routes(blueprint, config) - _setup_single_view_dispatcher_route(app, config, constructor) + options = options or Options() + blueprint = Blueprint("idom", __name__, url_prefix=options.url_prefix) + _setup_common_routes(blueprint, options) + _setup_single_view_dispatcher_route(app, options, component) app.register_blueprint(blueprint) - return FlaskServer(app) - -class FlaskServer: - """A thin wrapper for running a Flask application - See :class:`idom.server.proto.Server` for more info - """ +def create_development_app() -> Flask: + """Create an application instance for development purposes""" + return Flask(__name__) - _wsgi_server: pywsgi.WSGIServer - def __init__(self, app: Flask) -> None: - self.app = app - self._did_start = ThreadEvent() +async def serve_development_app( + app: Flask, + host: str, + port: int, + started: asyncio.Event | None = None, +) -> None: + """Run an application using a development server""" + loop = asyncio.get_event_loop() + stopped = asyncio.Event() - @app.before_first_request - def server_did_start() -> None: - self._did_start.set() + server: pywsgi.WSGIServer - def run(self, host: str, port: int, *args: Any, **kwargs: Any) -> None: - if IDOM_DEBUG_MODE.current: - logging.basicConfig(level=logging.DEBUG) # pragma: no cover - logger.info(f"Running at http://{host}:{port}") - self._wsgi_server = _StartCallbackWSGIServer( - self._did_start.set, + def run_server() -> None: # pragma: no cover + # we don't cover this function because coverage doesn't work right in threads + nonlocal server + server = pywsgi.WSGIServer( (host, port), - self.app, - *args, + app, handler_class=WebSocketHandler, - **kwargs, ) - self._wsgi_server.serve_forever() + server.start() + if started: + loop.call_soon_threadsafe(started.set) + try: + server.serve_forever() + finally: + loop.call_soon_threadsafe(stopped.set) - run_in_thread = threaded(run) + thread = Thread(target=run_server, daemon=True) + thread.start() - def wait_until_started(self, timeout: Optional[float] = 3.0) -> None: - wait_on_event(f"start {self.app}", self._did_start, timeout) + if started: + await started.wait() - def stop(self, timeout: Optional[float] = 3.0) -> None: - try: - server = self._wsgi_server - except AttributeError: # pragma: no cover - raise RuntimeError( - f"Application is not running or was not started by {self}" - ) - else: - server.stop(timeout) - - -def _setup_config_and_app( - config: Optional[Config], app: Optional[Flask] -) -> Tuple[Config, Flask]: - return ( - { - "url_prefix": "", - "cors": False, - "serve_static_files": True, - "redirect_root_to_index": True, - **(config or {}), # type: ignore - }, - app or Flask(__name__), - ) - - -def _setup_common_routes(blueprint: Blueprint, config: Config) -> None: - cors_config = config["cors"] - if cors_config: # pragma: no cover - cors_params = cors_config if isinstance(cors_config, dict) else {} + try: + await stopped.wait() + finally: + # we may have exitted because this task was cancelled + server.stop(3) + # the thread should eventually join + thread.join(timeout=3) + # just double check it happened + if thread.is_alive(): # pragma: no cover + raise RuntimeError("Failed to shutdown server.") + + +def use_request() -> Request: + """Get the current ``Request``""" + request = use_context(RequestContext) + if request is None: + raise RuntimeError( # pragma: no cover + "No request. Are you running with a Flask server?" + ) + return request + + +def use_scope() -> dict[str, Any]: + """Get the current WSGI environment""" + return use_request().environ + + +@dataclass +class Options: + """Render server config for :class:`FlaskRenderServer`""" + + cors: Union[bool, Dict[str, Any]] = False + """Enable or configure Cross Origin Resource Sharing (CORS) + + For more information see docs for ``flask_cors.CORS`` + """ + + redirect_root: bool = True + """Whether to redirect the root URL (with prefix) to ``index.html``""" + + serve_static_files: bool = True + """Whether or not to serve static files (i.e. web modules)""" + + url_prefix: str = "" + """The URL prefix where IDOM resources will be served from""" + + +def _setup_common_routes(blueprint: Blueprint, options: Options) -> None: + cors_options = options.cors + if cors_options: # pragma: no cover + cors_params = cors_options if isinstance(cors_options, dict) else {} CORS(blueprint, **cors_params) - if config["serve_static_files"]: + if options.serve_static_files: @blueprint.route("/client/") def send_client_dir(path: str) -> Any: @@ -154,7 +162,7 @@ def send_client_dir(path: str) -> Any: def send_modules_dir(path: str) -> Any: return send_from_directory(str(IDOM_WEB_MODULES_DIR.current), path) - if config["redirect_root_to_index"]: + if options.redirect_root: @blueprint.route("/") def redirect_to_index() -> Any: @@ -168,11 +176,11 @@ def redirect_to_index() -> Any: def _setup_single_view_dispatcher_route( - app: Flask, config: Config, constructor: ComponentConstructor + app: Flask, options: Options, constructor: RootComponentConstructor ) -> None: sockets = Sockets(app) - @sockets.route(_join_url_paths(config["url_prefix"], "/stream")) # type: ignore + @sockets.route(_join_url_paths(options.url_prefix, "/stream")) # type: ignore def model_stream(ws: WebSocket) -> None: def send(value: Any) -> None: ws.send(json.dumps(value)) @@ -184,17 +192,10 @@ def recv() -> Optional[LayoutEvent]: else: return None - dispatch_single_view_in_thread(constructor(**_get_query_params(ws)), send, recv) - + dispatch_in_thread(constructor(), send, recv) -def _get_query_params(ws: WebSocket) -> Dict[str, Any]: - return { - k: v if len(v) > 1 else v[0] - for k, v in parse_query_string(ws.environ["QUERY_STRING"]).items() - } - -def dispatch_single_view_in_thread( +def dispatch_in_thread( component: ComponentType, send: Callable[[Any], None], recv: Callable[[], Optional[LayoutEvent]], @@ -202,6 +203,7 @@ def dispatch_single_view_in_thread( dispatch_thread_info_created = ThreadEvent() dispatch_thread_info_ref: idom.Ref[Optional[_DispatcherThreadInfo]] = idom.Ref(None) + @copy_current_request_context def run_dispatcher() -> None: loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) @@ -216,7 +218,11 @@ async def recv_coro() -> Any: return await async_recv_queue.get() async def main() -> None: - await dispatch_single_view(idom.Layout(component), send_coro, recv_coro) + await serve_json_patch( + idom.Layout(RequestContext(component, value=request)), + send_coro, + recv_coro, + ) main_future = asyncio.ensure_future(main()) @@ -270,25 +276,6 @@ class _DispatcherThreadInfo(NamedTuple): async_recv_queue: "AsyncQueue[LayoutEvent]" -class _StartCallbackWSGIServer(pywsgi.WSGIServer): # type: ignore - def __init__( - self, before_first_request: Callable[[], None], *args: Any, **kwargs: Any - ) -> None: - self._before_first_request_callback = before_first_request - super().__init__(*args, **kwargs) - - def update_environ(self) -> None: - """ - Called before the first request is handled to fill in WSGI environment values. - - This includes getting the correct server name and port. - """ - super().update_environ() - # BUG: https://github.com/nedbat/coveragepy/issues/1012 - # Coverage isn't able to support concurrency coverage for both threading and gevent - self._before_first_request_callback() # pragma: no cover - - def _join_url_paths(*args: str) -> str: # urllib.parse.urljoin performs more logic than is needed. Thus we need a util func # to join paths as if they were POSIX paths. diff --git a/src/idom/server/prefab.py b/src/idom/server/prefab.py deleted file mode 100644 index f264ce9ca..000000000 --- a/src/idom/server/prefab.py +++ /dev/null @@ -1,151 +0,0 @@ -import logging -from typing import Any, Dict, Optional, Tuple, TypeVar - -from idom.core.types import ComponentConstructor -from idom.widgets import MountFunc, MultiViewMount, hotswap, multiview - -from .types import ServerFactory, ServerType -from .utils import find_available_port, find_builtin_server_type - - -logger = logging.getLogger(__name__) - -_App = TypeVar("_App") -_Config = TypeVar("_Config") - - -def run( - component: ComponentConstructor, - server_type: Optional[ServerFactory[_App, _Config]] = None, - host: str = "127.0.0.1", - port: Optional[int] = None, - server_config: Optional[Any] = None, - run_kwargs: Optional[Dict[str, Any]] = None, - app: Optional[Any] = None, - daemon: bool = False, -) -> ServerType[_App]: - """A utility for quickly running a render server with minimal boilerplate - - Parameters: - component: - The root of the view. - server_type: - What server to run. Defaults to a builtin implementation if available. - host: - The host string. - port: - The port number. Defaults to a dynamically discovered available port. - server_config: - Options passed to configure the server. - run_kwargs: - Keyword arguments passed to the :meth:`~idom.server.proto.Server.run` - or :meth:`~idom.server.proto.Server.run_in_thread` methods of the server - depending on whether ``daemon`` is set or not. - app: - Register the server to an existing application and run that. - daemon: - Whether the server should be run in a daemon thread. - - Returns: - The server instance. This isn't really useful unless the server is spawned - as a daemon. Otherwise this function blocks until the server has stopped. - """ - if server_type is None: - server_type = find_builtin_server_type("PerClientStateServer") - if port is None: # pragma: no cover - port = find_available_port(host) - - server = server_type(component, server_config, app) - logger.info(f"Using {type(server).__name__}") - - run_server = server.run if not daemon else server.run_in_thread - run_server(host, port, **(run_kwargs or {})) - server.wait_until_started() - - return server - - -def multiview_server( - server_type: Optional[ServerFactory[_App, _Config]] = None, - host: str = "127.0.0.1", - port: Optional[int] = None, - server_config: Optional[_Config] = None, - run_kwargs: Optional[Dict[str, Any]] = None, - app: Optional[Any] = None, -) -> Tuple[MultiViewMount, ServerType[_App]]: - """Set up a server where views can be dynamically added. - - In other words this allows the user to work with IDOM in an imperative manner. Under - the hood this uses the :func:`idom.widgets.multiview` function to add the views on - the fly. - - Parameters: - server: The server type to start up as a daemon - host: The server hostname - port: The server port number - server_config: Value passed to :meth:`~idom.server.proto.ServerFactory` - run_kwargs: Keyword args passed to :meth:`~idom.server.proto.Server.run_in_thread` - app: Optionally provide a prexisting application to register to - - Returns: - The server instance and a function for adding views. See - :func:`idom.widgets.multiview` for details. - """ - mount, component = multiview() - - server = run( - component, - server_type, - host, - port, - server_config=server_config, - run_kwargs=run_kwargs, - daemon=True, - app=app, - ) - - return mount, server - - -def hotswap_server( - server_type: Optional[ServerFactory[_App, _Config]] = None, - host: str = "127.0.0.1", - port: Optional[int] = None, - server_config: Optional[_Config] = None, - run_kwargs: Optional[Dict[str, Any]] = None, - app: Optional[Any] = None, - sync_views: bool = False, -) -> Tuple[MountFunc, ServerType[_App]]: - """Set up a server where views can be dynamically swapped out. - - In other words this allows the user to work with IDOM in an imperative manner. Under - the hood this uses the :func:`idom.widgets.hotswap` function to swap the views on - the fly. - - Parameters: - server: The server type to start up as a daemon - host: The server hostname - port: The server port number - server_config: Value passed to :meth:`~idom.server.proto.ServerFactory` - run_kwargs: Keyword args passed to :meth:`~idom.server.proto.Server.run_in_thread` - app: Optionally provide a prexisting application to register to - sync_views: Whether to update all displays with newly mounted components - - Returns: - The server instance and a function for swapping views. See - :func:`idom.widgets.hotswap` for details. - """ - mount, component = hotswap(update_on_change=sync_views) - - server = run( - component, - server_type, - host, - port, - server_config=server_config, - run_kwargs=run_kwargs, - daemon=True, - app=app, - ) - - return mount, server diff --git a/src/idom/server/sanic.py b/src/idom/server/sanic.py index 4845f1f6a..3c47250a6 100644 --- a/src/idom/server/sanic.py +++ b/src/idom/server/sanic.py @@ -3,192 +3,115 @@ import asyncio import json import logging -from asyncio import Future -from asyncio.events import AbstractEventLoop -from threading import Event -from typing import Any, Dict, Optional, Tuple, Union +from dataclasses import dataclass +from typing import Any, Dict, Tuple, Union +from uuid import uuid4 -from mypy_extensions import TypedDict from sanic import Blueprint, Sanic, request, response +from sanic.config import Config +from sanic.models.asgi import ASGIScope from sanic_cors import CORS -from websockets import WebSocketCommonProtocol +from websockets.legacy.protocol import WebSocketCommonProtocol from idom.config import IDOM_WEB_MODULES_DIR -from idom.core.dispatcher import ( +from idom.core.hooks import Context, create_context, use_context +from idom.core.layout import Layout, LayoutEvent +from idom.core.serve import ( RecvCoroutine, SendCoroutine, - SharedViewDispatcher, VdomJsonPatch, - dispatch_single_view, - ensure_shared_view_dispatcher_future, + serve_json_patch, ) -from idom.core.layout import Layout, LayoutEvent -from idom.core.types import ComponentConstructor +from idom.core.types import RootComponentConstructor -from .utils import CLIENT_BUILD_DIR, threaded, wait_on_event +from ._asgi import serve_development_asgi +from .utils import CLIENT_BUILD_DIR logger = logging.getLogger(__name__) -_SERVER_COUNT = 0 - - -class Config(TypedDict, total=False): - """Config for :class:`SanicRenderServer`""" - - cors: Union[bool, Dict[str, Any]] - """Enable or configure Cross Origin Resource Sharing (CORS) +RequestContext: type[Context[request.Request | None]] = create_context( + None, "RequestContext" +) - For more information see docs for ``sanic_cors.CORS`` - """ - redirect_root_to_index: bool - """Whether to redirect the root URL (with prefix) to ``index.html``""" +def configure( + app: Sanic, component: RootComponentConstructor, options: Options | None = None +) -> None: + """Configure an application instance to display the given component""" + options = options or Options() + blueprint = Blueprint(f"idom_dispatcher_{id(app)}", url_prefix=options.url_prefix) + _setup_common_routes(blueprint, options) + _setup_single_view_dispatcher_route(blueprint, component) + app.blueprint(blueprint) - serve_static_files: bool - """Whether or not to serve static files (i.e. web modules)""" - url_prefix: str - """The URL prefix where IDOM resources will be served from""" +def create_development_app() -> Sanic: + """Return a :class:`Sanic` app instance in debug mode""" + return Sanic(f"idom_development_app_{uuid4().hex}", Config()) -def PerClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[Sanic] = None, -) -> SanicServer: - """Return a :class:`SanicServer` where each client has its own state. +async def serve_development_app( + app: Sanic, + host: str, + port: int, + started: asyncio.Event | None = None, +) -> None: + """Run a development server for :mod:`sanic`""" + await serve_development_asgi(app, host, port, started) - Implements the :class:`~idom.server.proto.ServerFactory` protocol - Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) - """ - config, app = _setup_config_and_app(config, app) - blueprint = Blueprint(f"idom_dispatcher_{id(app)}", url_prefix=config["url_prefix"]) - _setup_common_routes(blueprint, config) - _setup_single_view_dispatcher_route(blueprint, constructor) - app.blueprint(blueprint) - return SanicServer(app) +def use_request() -> request.Request: + """Get the current ``Request``""" + request = use_context(RequestContext) + if request is None: + raise RuntimeError( # pragma: no cover + "No request. Are you running with a Sanic server?" + ) + return request -def SharedClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[Sanic] = None, -) -> SanicServer: - """Return a :class:`SanicServer` where each client shares state. +def use_scope() -> ASGIScope: + """Get the current ASGI scope""" + app = use_request().app + try: + asgi_app = app._asgi_app + except AttributeError: # pragma: no cover + raise RuntimeError("No scope. Sanic may not be running with an ASGI server") + return asgi_app.transport.scope - Implements the :class:`~idom.server.proto.ServerFactory` protocol - Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) - """ - config, app = _setup_config_and_app(config, app) - blueprint = Blueprint(f"idom_dispatcher_{id(app)}", url_prefix=config["url_prefix"]) - _setup_common_routes(blueprint, config) - _setup_shared_view_dispatcher_route(app, blueprint, constructor) - app.blueprint(blueprint) - return SanicServer(app) +@dataclass +class Options: + """Options for :class:`SanicRenderServer`""" + cors: Union[bool, Dict[str, Any]] = False + """Enable or configure Cross Origin Resource Sharing (CORS) -class SanicServer: - """A thin wrapper for running a Sanic application - - See :class:`idom.server.proto.Server` for more info + For more information see docs for ``sanic_cors.CORS`` """ - _loop: AbstractEventLoop - - def __init__(self, app: Sanic) -> None: - self.app = app - self._did_start = Event() - self._did_stop = Event() - app.register_listener(self._server_did_start, "after_server_start") - app.register_listener(self._server_did_stop, "after_server_stop") + redirect_root: bool = True + """Whether to redirect the root URL (with prefix) to ``index.html``""" - def run(self, host: str, port: int, *args: Any, **kwargs: Any) -> None: - self.app.run(host, port, *args, **kwargs) # pragma: no cover + serve_static_files: bool = True + """Whether or not to serve static files (i.e. web modules)""" - @threaded - def run_in_thread(self, host: str, port: int, *args: Any, **kwargs: Any) -> None: - loop = asyncio.get_event_loop() + url_prefix: str = "" + """The URL prefix where IDOM resources will be served from""" - # what follows was copied from: - # https://github.com/sanic-org/sanic/blob/7028eae083b0da72d09111b9892ddcc00bce7df4/examples/run_async_advanced.py - serv_coro = self.app.create_server( - host, port, *args, **kwargs, return_asyncio_server=True - ) - serv_task = asyncio.ensure_future(serv_coro, loop=loop) - server = loop.run_until_complete(serv_task) - server.after_start() - try: - loop.run_forever() - except KeyboardInterrupt: # pragma: no cover - loop.stop() - finally: - server.before_stop() - - # Wait for server to close - close_task = server.close() - loop.run_until_complete(close_task) - - # Complete all tasks on the loop - for connection in server.connections: - connection.close_if_idle() - server.after_stop() - - def wait_until_started(self, timeout: Optional[float] = 3.0) -> None: - wait_on_event(f"start {self.app}", self._did_start, timeout) - - def stop(self, timeout: Optional[float] = 3.0) -> None: - self._loop.call_soon_threadsafe(self.app.stop) - wait_on_event(f"stop {self.app}", self._did_stop, timeout) - - async def _server_did_start(self, app: Sanic, loop: AbstractEventLoop) -> None: - self._loop = loop - self._did_start.set() - - async def _server_did_stop(self, app: Sanic, loop: AbstractEventLoop) -> None: - self._did_stop.set() - - -def _setup_config_and_app( - config: Optional[Config], - app: Optional[Sanic], -) -> Tuple[Config, Sanic]: - if app is None: - global _SERVER_COUNT - _SERVER_COUNT += 1 - app = Sanic(f"{__name__}[{_SERVER_COUNT}]") - return ( - { - "cors": False, - "url_prefix": "", - "serve_static_files": True, - "redirect_root_to_index": True, - **(config or {}), # type: ignore - }, - app, - ) - - -def _setup_common_routes(blueprint: Blueprint, config: Config) -> None: - cors_config = config["cors"] - if cors_config: # pragma: no cover - cors_params = cors_config if isinstance(cors_config, dict) else {} +def _setup_common_routes(blueprint: Blueprint, options: Options) -> None: + cors_options = options.cors + if cors_options: # pragma: no cover + cors_params = cors_options if isinstance(cors_options, dict) else {} CORS(blueprint, **cors_params) - if config["serve_static_files"]: + if options.serve_static_files: blueprint.static("/client", str(CLIENT_BUILD_DIR)) blueprint.static("/modules", str(IDOM_WEB_MODULES_DIR.current)) - if config["redirect_root_to_index"]: + if options.redirect_root: @blueprint.route("/") # type: ignore def redirect_to_index( @@ -200,49 +123,19 @@ def redirect_to_index( def _setup_single_view_dispatcher_route( - blueprint: Blueprint, constructor: ComponentConstructor + blueprint: Blueprint, constructor: RootComponentConstructor ) -> None: @blueprint.websocket("/stream") # type: ignore async def model_stream( request: request.Request, socket: WebSocketCommonProtocol ) -> None: send, recv = _make_send_recv_callbacks(socket) - component_params = {k: request.args.get(k) for k in request.args} - await dispatch_single_view(Layout(constructor(**component_params)), send, recv) - - -def _setup_shared_view_dispatcher_route( - app: Sanic, blueprint: Blueprint, constructor: ComponentConstructor -) -> None: - dispatcher_future: Future[None] - dispatch_coroutine: SharedViewDispatcher - - async def activate_dispatcher(app: Sanic, loop: AbstractEventLoop) -> None: - nonlocal dispatcher_future - nonlocal dispatch_coroutine - dispatcher_future, dispatch_coroutine = ensure_shared_view_dispatcher_future( - Layout(constructor()) + await serve_json_patch( + Layout(RequestContext(constructor(), value=request)), + send, + recv, ) - async def deactivate_dispatcher(app: Sanic, loop: AbstractEventLoop) -> None: - logger.debug("Stopping dispatcher - server is shutting down") - dispatcher_future.cancel() - await asyncio.wait([dispatcher_future]) - - app.register_listener(activate_dispatcher, "before_server_start") - app.register_listener(deactivate_dispatcher, "before_server_stop") - - @blueprint.websocket("/stream") # type: ignore - async def model_stream( - request: request.Request, socket: WebSocketCommonProtocol - ) -> None: - if request.args: - raise ValueError( - "SharedClientState server does not support per-client view parameters" - ) - send, recv = _make_send_recv_callbacks(socket) - await dispatch_coroutine(send, recv) - def _make_send_recv_callbacks( socket: WebSocketCommonProtocol, diff --git a/src/idom/server/starlette.py b/src/idom/server/starlette.py index fe6c27f87..6e483241f 100644 --- a/src/idom/server/starlette.py +++ b/src/idom/server/starlette.py @@ -3,202 +3,120 @@ import asyncio import json import logging -import sys -from asyncio import Future -from threading import Event, Thread, current_thread -from typing import Any, Dict, Optional, Tuple, TypeVar, Union +from dataclasses import dataclass +from typing import Any, Dict, Tuple, Union -from mypy_extensions import TypedDict from starlette.applications import Starlette from starlette.middleware.cors import CORSMiddleware from starlette.requests import Request from starlette.responses import RedirectResponse from starlette.staticfiles import StaticFiles +from starlette.types import Scope from starlette.websockets import WebSocket, WebSocketDisconnect -from uvicorn.config import Config as UvicornConfig -from uvicorn.server import Server as UvicornServer -from uvicorn.supervisors.multiprocess import Multiprocess -from uvicorn.supervisors.statreload import StatReload as ChangeReload -from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR -from idom.core.dispatcher import ( +from idom.config import IDOM_WEB_MODULES_DIR +from idom.core.hooks import Context, create_context, use_context +from idom.core.layout import Layout, LayoutEvent +from idom.core.serve import ( RecvCoroutine, SendCoroutine, - SharedViewDispatcher, VdomJsonPatch, - dispatch_single_view, - ensure_shared_view_dispatcher_future, + serve_json_patch, ) -from idom.core.layout import Layout, LayoutEvent -from idom.core.types import ComponentConstructor +from idom.core.types import RootComponentConstructor -from .utils import CLIENT_BUILD_DIR, poll, threaded +from ._asgi import serve_development_asgi +from .utils import CLIENT_BUILD_DIR logger = logging.getLogger(__name__) -_StarletteType = TypeVar("_StarletteType", bound=Starlette) +WebSocketContext: type[Context[WebSocket | None]] = create_context( + None, "WebSocketContext" +) -class Config(TypedDict, total=False): - """Config for :class:`StarletteRenderServer`""" +def configure( + app: Starlette, + constructor: RootComponentConstructor, + options: Options | None = None, +) -> None: + """Return a :class:`StarletteServer` where each client has its own state. - cors: Union[bool, Dict[str, Any]] - """Enable or configure Cross Origin Resource Sharing (CORS) + Implements the :class:`~idom.server.proto.ServerFactory` protocol - For more information see docs for ``starlette.middleware.cors.CORSMiddleware`` + Parameters: + app: An application instance + constructor: A component constructor + options: Options for configuring server behavior """ + options = options or Options() + _setup_common_routes(options, app) + _setup_single_view_dispatcher_route(options.url_prefix, app, constructor) - redirect_root_to_index: bool - """Whether to redirect the root URL (with prefix) to ``index.html``""" - serve_static_files: bool - """Whether or not to serve static files (i.e. web modules)""" - - url_prefix: str - """The URL prefix where IDOM resources will be served from""" +def create_development_app() -> Starlette: + """Return a :class:`Starlette` app instance in debug mode""" + return Starlette(debug=True) -def PerClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[Starlette] = None, -) -> StarletteServer: - """Return a :class:`StarletteServer` where each client has its own state. - - Implements the :class:`~idom.server.proto.ServerFactory` protocol +async def serve_development_app( + app: Starlette, + host: str, + port: int, + started: asyncio.Event | None = None, +) -> None: + """Run a development server for starlette""" + await serve_development_asgi(app, host, port, started) - Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) - """ - config, app = _setup_config_and_app(config, app, Starlette) - _setup_common_routes(config, app) - _setup_single_view_dispatcher_route(config["url_prefix"], app, constructor) - return StarletteServer(app) +def use_websocket() -> WebSocket: + """Get the current WebSocket object""" + websocket = use_context(WebSocketContext) + if websocket is None: + raise RuntimeError( # pragma: no cover + "No websocket. Are you running with a Starllette server?" + ) + return websocket -def SharedClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[Starlette] = None, -) -> StarletteServer: - """Return a :class:`StarletteServer` where each client shares state. - Implements the :class:`~idom.server.proto.ServerFactory` protocol +def use_scope() -> Scope: + """Get the current ASGI scope dictionary""" + return use_websocket().scope - Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) - """ - config, app = _setup_config_and_app(config, app, Starlette) - _setup_common_routes(config, app) - _setup_shared_view_dispatcher_route(config["url_prefix"], app, constructor) - return StarletteServer(app) +@dataclass +class Options: + """Optionsuration options for :class:`StarletteRenderServer`""" -class StarletteServer: - """A thin wrapper for running a Starlette application + cors: Union[bool, Dict[str, Any]] = False + """Enable or configure Cross Origin Resource Sharing (CORS) - See :class:`idom.server.proto.Server` for more info + For more information see docs for ``starlette.middleware.cors.CORSMiddleware`` """ - _server: UvicornServer - _current_thread: Thread + redirect_root: bool = True + """Whether to redirect the root URL (with prefix) to ``index.html``""" - def __init__(self, app: Starlette) -> None: - self.app = app - self._did_stop = Event() - app.on_event("shutdown")(self._server_did_stop) + serve_static_files: bool = True + """Whether or not to serve static files (i.e. web modules)""" - def run(self, host: str, port: int, *args: Any, **kwargs: Any) -> None: - self._current_thread = current_thread() + url_prefix: str = "" + """The URL prefix where IDOM resources will be served from""" - self._server = server = UvicornServer( - UvicornConfig( - self.app, host=host, port=port, loop="asyncio", *args, **kwargs - ) - ) - # The following was copied from the uvicorn source with minimal modification. We - # shouldn't need to do this, but unfortunately there's no easy way to gain access to - # the server instance so you can stop it. - # BUG: https://github.com/encode/uvicorn/issues/742 - config = server.config - - if (config.reload or config.workers > 1) and not isinstance( - server.config.app, str - ): # pragma: no cover - logger = logging.getLogger("uvicorn.error") - logger.warning( - "You must pass the application as an import string to enable 'reload' or " - "'workers'." - ) - sys.exit(1) - - if config.should_reload: # pragma: no cover - sock = config.bind_socket() - supervisor = ChangeReload(config, target=server.run, sockets=[sock]) - supervisor.run() - elif config.workers > 1: # pragma: no cover - sock = config.bind_socket() - supervisor = Multiprocess(config, target=server.run, sockets=[sock]) - supervisor.run() - else: - import asyncio - - asyncio.set_event_loop(asyncio.new_event_loop()) - server.run() - - run_in_thread = threaded(run) - - def wait_until_started(self, timeout: Optional[float] = 3.0) -> None: - poll( - f"start {self.app}", - 0.01, - timeout, - lambda: hasattr(self, "_server") and self._server.started, - ) - - def stop(self, timeout: Optional[float] = 3.0) -> None: - self._server.should_exit = True - self._did_stop.wait(timeout) - - async def _server_did_stop(self) -> None: - self._did_stop.set() - - -def _setup_config_and_app( - config: Optional[Config], - app: Optional[_StarletteType], - app_type: type[_StarletteType], -) -> Tuple[Config, _StarletteType]: - return ( - { - "cors": False, - "url_prefix": "", - "serve_static_files": True, - "redirect_root_to_index": True, - **(config or {}), # type: ignore - }, - app or app_type(debug=IDOM_DEBUG_MODE.current), - ) - - -def _setup_common_routes(config: Config, app: Starlette) -> None: - cors_config = config["cors"] - if cors_config: # pragma: no cover +def _setup_common_routes(options: Options, app: Starlette) -> None: + cors_options = options.cors + if cors_options: # pragma: no cover cors_params = ( - cors_config if isinstance(cors_config, dict) else {"allow_origins": ["*"]} + cors_options if isinstance(cors_options, dict) else {"allow_origins": ["*"]} ) app.add_middleware(CORSMiddleware, **cors_params) # This really should be added to the APIRouter, but there's a bug in Starlette # BUG: https://github.com/tiangolo/fastapi/issues/1469 - url_prefix = config["url_prefix"] - if config["serve_static_files"]: + url_prefix = options.url_prefix + if options.serve_static_files: app.mount( f"{url_prefix}/client", StaticFiles( @@ -218,7 +136,7 @@ def _setup_common_routes(config: Config, app: Starlette) -> None: name="idom_web_module_files", ) - if config["redirect_root_to_index"]: + if options.redirect_root: @app.route(f"{url_prefix}/") def redirect_to_index(request: Request) -> RedirectResponse: @@ -228,53 +146,18 @@ def redirect_to_index(request: Request) -> RedirectResponse: def _setup_single_view_dispatcher_route( - url_prefix: str, app: Starlette, constructor: ComponentConstructor + url_prefix: str, app: Starlette, constructor: RootComponentConstructor ) -> None: @app.websocket_route(f"{url_prefix}/stream") async def model_stream(socket: WebSocket) -> None: await socket.accept() send, recv = _make_send_recv_callbacks(socket) try: - await dispatch_single_view( - Layout(constructor(**dict(socket.query_params))), send, recv - ) - except WebSocketDisconnect as error: - logger.info(f"WebSocket disconnect: {error.code}") - - -def _setup_shared_view_dispatcher_route( - url_prefix: str, app: Starlette, constructor: ComponentConstructor -) -> None: - dispatcher_future: Future[None] - dispatch_coroutine: SharedViewDispatcher - - @app.on_event("startup") - async def activate_dispatcher() -> None: - nonlocal dispatcher_future - nonlocal dispatch_coroutine - dispatcher_future, dispatch_coroutine = ensure_shared_view_dispatcher_future( - Layout(constructor()) - ) - - @app.on_event("shutdown") - async def deactivate_dispatcher() -> None: - logger.debug("Stopping dispatcher - server is shutting down") - dispatcher_future.cancel() - await asyncio.wait([dispatcher_future]) - - @app.websocket_route(f"{url_prefix}/stream") - async def model_stream(socket: WebSocket) -> None: - await socket.accept() - - if socket.query_params: - raise ValueError( - "SharedClientState server does not support per-client view parameters" + await serve_json_patch( + Layout(WebSocketContext(constructor(), value=socket)), + send, + recv, ) - - send, recv = _make_send_recv_callbacks(socket) - - try: - await dispatch_coroutine(send, recv) except WebSocketDisconnect as error: logger.info(f"WebSocket disconnect: {error.code}") diff --git a/src/idom/server/tornado.py b/src/idom/server/tornado.py index c1f8ae569..d1d708c42 100644 --- a/src/idom/server/tornado.py +++ b/src/idom/server/tornado.py @@ -4,124 +4,121 @@ import json from asyncio import Queue as AsyncQueue from asyncio.futures import Future -from threading import Event as ThreadEvent -from typing import Any, List, Optional, Tuple, Type, Union +from dataclasses import dataclass +from typing import Any, List, Tuple, Type, Union from urllib.parse import urljoin +from tornado.httpserver import HTTPServer +from tornado.httputil import HTTPServerRequest +from tornado.log import enable_pretty_logging from tornado.platform.asyncio import AsyncIOMainLoop from tornado.web import Application, RedirectHandler, RequestHandler, StaticFileHandler from tornado.websocket import WebSocketHandler -from typing_extensions import TypedDict +from tornado.wsgi import WSGIContainer from idom.config import IDOM_WEB_MODULES_DIR -from idom.core.dispatcher import VdomJsonPatch, dispatch_single_view +from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent +from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.core.types import ComponentConstructor -from .utils import CLIENT_BUILD_DIR, threaded, wait_on_event +from .utils import CLIENT_BUILD_DIR -_RouteHandlerSpecs = List[Tuple[str, Type[RequestHandler], Any]] - - -class Config(TypedDict, total=False): - """Render server config for :class:`TornadoRenderServer` subclasses""" +RequestContext: type[Context[HTTPServerRequest | None]] = create_context( + None, "RequestContext" +) - redirect_root_to_index: bool - """Whether to redirect the root URL (with prefix) to ``index.html``""" - - serve_static_files: bool - """Whether or not to serve static files (i.e. web modules)""" - url_prefix: str - """The URL prefix where IDOM resources will be served from""" - - -def PerClientStateServer( - constructor: ComponentConstructor, - config: Optional[Config] = None, - app: Optional[Application] = None, -) -> TornadoServer: +def configure( + app: Application, + component: ComponentConstructor, + options: Options | None = None, +) -> None: """Return a :class:`TornadoServer` where each client has its own state. Implements the :class:`~idom.server.proto.ServerFactory` protocol Parameters: - constructor: A component constructor - config: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) + app: A tornado ``Application`` instance. + component: A root component constructor + options: Options for configuring how the component is mounted to the server. """ - config, app = _setup_config_and_app(config, app) + options = options or Options() _add_handler( app, - config, - _setup_common_routes(config) + _setup_single_view_dispatcher_route(constructor), + options, + _setup_common_routes(options) + _setup_single_view_dispatcher_route(component), ) - return TornadoServer(app) -class TornadoServer: - """A thin wrapper for running a Tornado application +def create_development_app() -> Application: + return Application(debug=True) - See :class:`idom.server.proto.Server` for more info - """ - - _loop: asyncio.AbstractEventLoop - def __init__(self, app: Application) -> None: - self.app = app - self._did_start = ThreadEvent() +async def serve_development_app( + app: Application, + host: str, + port: int, + started: asyncio.Event | None = None, +) -> None: + enable_pretty_logging() + + # setup up tornado to use asyncio + AsyncIOMainLoop().install() + + server = HTTPServer(app) + server.listen(port, host) + + if started: + # at this point the server is accepting connection + started.set() + + try: + # block forever - tornado has already set up its own background tasks + await asyncio.get_event_loop().create_future() + finally: + # stop accepting new connections + server.stop() + # wait for existing connections to complete + await server.close_all_connections() + + +def use_request() -> HTTPServerRequest: + """Get the current ``HTTPServerRequest``""" + request = use_context(RequestContext) + if request is None: + raise RuntimeError( # pragma: no cover + "No request. Are you running with a Tornado server?" + ) + return request - def run(self, host: str, port: int, *args: Any, **kwargs: Any) -> None: - self._loop = asyncio.get_event_loop() - AsyncIOMainLoop().install() - self.app.listen(port, host, *args, **kwargs) - self._did_start.set() - asyncio.get_event_loop().run_forever() - @threaded - def run_in_thread(self, host: str, port: int, *args: Any, **kwargs: Any) -> None: - self.run(host, port, *args, **kwargs) +def use_scope() -> dict[str, Any]: + """Get the current WSGI environment dictionary""" + return WSGIContainer.environ(use_request()) - def wait_until_started(self, timeout: Optional[float] = 3.0) -> None: - self._did_start.wait(timeout) - def stop(self, timeout: Optional[float] = 3.0) -> None: - try: - loop = self._loop - except AttributeError: # pragma: no cover - raise RuntimeError( - f"Application is not running or was not started by {self}" - ) - else: - did_stop = ThreadEvent() +@dataclass +class Options: + """Render server options for :class:`TornadoRenderServer` subclasses""" - def stop() -> None: - loop.stop() - did_stop.set() + redirect_root: bool = True + """Whether to redirect the root URL (with prefix) to ``index.html``""" - loop.call_soon_threadsafe(stop) + serve_static_files: bool = True + """Whether or not to serve static files (i.e. web modules)""" - wait_on_event(f"stop {self.app}", did_stop, timeout) + url_prefix: str = "" + """The URL prefix where IDOM resources will be served from""" -def _setup_config_and_app( - config: Optional[Config], app: Optional[Application] -) -> Tuple[Config, Application]: - return ( - { - "url_prefix": "", - "serve_static_files": True, - "redirect_root_to_index": True, - **(config or {}), # type: ignore - }, - app or Application(), - ) +_RouteHandlerSpecs = List[Tuple[str, Type[RequestHandler], Any]] -def _setup_common_routes(config: Config) -> _RouteHandlerSpecs: +def _setup_common_routes(options: Options) -> _RouteHandlerSpecs: handlers: _RouteHandlerSpecs = [] - if config["serve_static_files"]: + if options.serve_static_files: handlers.append( ( r"/client/(.*)", @@ -136,16 +133,22 @@ def _setup_common_routes(config: Config) -> _RouteHandlerSpecs: {"path": str(IDOM_WEB_MODULES_DIR.current)}, ) ) - if config["redirect_root_to_index"]: - handlers.append(("/", RedirectHandler, {"url": "./client/index.html"})) + if options.redirect_root: + handlers.append( + ( + urljoin("/", options.url_prefix), + RedirectHandler, + {"url": "./client/index.html"}, + ) + ) return handlers def _add_handler( - app: Application, config: Config, handlers: _RouteHandlerSpecs + app: Application, options: Options, handlers: _RouteHandlerSpecs ) -> None: prefixed_handlers: List[Any] = [ - (urljoin(config["url_prefix"], route_pattern),) + tuple(handler_info) + (urljoin(options.url_prefix, route_pattern),) + tuple(handler_info) for route_pattern, *handler_info in handlers ] app.add_handlers(r".*", prefixed_handlers) @@ -157,13 +160,13 @@ def _setup_single_view_dispatcher_route( return [ ( "/stream", - PerClientStateModelStreamHandler, + ModelStreamHandler, {"component_constructor": constructor}, ) ] -class PerClientStateModelStreamHandler(WebSocketHandler): +class ModelStreamHandler(WebSocketHandler): """A web-socket handler that serves up a new model stream to each new client""" _dispatch_future: Future[None] @@ -174,7 +177,6 @@ def initialize(self, component_constructor: ComponentConstructor) -> None: async def open(self, *args: str, **kwargs: str) -> None: message_queue: "AsyncQueue[str]" = AsyncQueue() - query_params = {k: v[0].decode() for k, v in self.request.arguments.items()} async def send(value: VdomJsonPatch) -> None: await self.write_message(json.dumps(value)) @@ -184,8 +186,10 @@ async def recv() -> LayoutEvent: self._message_queue = message_queue self._dispatch_future = asyncio.ensure_future( - dispatch_single_view( - Layout(self._component_constructor(**query_params)), + serve_json_patch( + Layout( + RequestContext(self._component_constructor(), value=self.request) + ), send, recv, ) diff --git a/src/idom/server/types.py b/src/idom/server/types.py index d17495664..73b34f1b1 100644 --- a/src/idom/server/types.py +++ b/src/idom/server/types.py @@ -1,43 +1,39 @@ from __future__ import annotations -from threading import Thread -from typing import Optional, TypeVar +import asyncio +from typing import Any, MutableMapping, TypeVar -from typing_extensions import Protocol +from typing_extensions import Protocol, runtime_checkable -from idom.core.types import ComponentConstructor +from idom.types import RootComponentConstructor _App = TypeVar("_App") -_Config = TypeVar("_Config", contravariant=True) -class ServerFactory(Protocol[_App, _Config]): - """Setup a :class:`Server`""" +@runtime_checkable +class ServerImplementation(Protocol[_App]): + """Common interface for IDOM's builti-in server implementations""" - def __call__( + def configure( self, - constructor: ComponentConstructor, - config: Optional[_Config] = None, - app: Optional[_App] = None, - ) -> ServerType[_App]: - ... + app: _App, + component: RootComponentConstructor, + options: Any | None = None, + ) -> None: + """Configure the given app instance to display the given component""" + def create_development_app(self) -> _App: + """Create an application instance for development purposes""" -class ServerType(Protocol[_App]): - """A thin wrapper around a web server that provides a common operational interface""" - - app: _App - """The server's underlying application""" - - def run(self, host: str, port: int) -> None: - """Start running the server""" - - def run_in_thread(self, host: str, port: int) -> Thread: - """Run the server in a thread""" - - def wait_until_started(self, timeout: Optional[float] = None) -> None: - """Block until the server is able to receive requests""" - - def stop(self, timeout: Optional[float] = None) -> None: - """Stop the running server""" + async def serve_development_app( + self, + app: _App, + host: str, + port: int, + started: asyncio.Event | None = None, + ) -> None: + """Run an application using a development server""" + + def use_scope(self) -> MutableMapping[str, Any]: + """Get an ASGI scope or WSGI environment dictionary""" diff --git a/src/idom/server/utils.py b/src/idom/server/utils.py index cb2c88a7c..d84ad34e4 100644 --- a/src/idom/server/utils.py +++ b/src/idom/server/utils.py @@ -1,99 +1,56 @@ +from __future__ import annotations + import asyncio +import logging import socket -import time from contextlib import closing -from functools import wraps from importlib import import_module from pathlib import Path -from threading import Event, Thread -from typing import Any, Callable, List, Optional - -from typing_extensions import ParamSpec +from typing import Any, Iterator import idom +from idom.types import RootComponentConstructor -from .types import ServerFactory +from .types import ServerImplementation +logger = logging.getLogger(__name__) CLIENT_BUILD_DIR = Path(idom.__file__).parent / "client" -_SUPPORTED_PACKAGES = [ - "sanic", +SUPPORTED_PACKAGES = ( + "starlette", "fastapi", - "flask", + "sanic", "tornado", - "starlette", -] - - -_FuncParams = ParamSpec("_FuncParams") - - -def threaded(function: Callable[_FuncParams, None]) -> Callable[_FuncParams, Thread]: - @wraps(function) - def wrapper(*args: Any, **kwargs: Any) -> Thread: - def target() -> None: - asyncio.set_event_loop(asyncio.new_event_loop()) - function(*args, **kwargs) + "flask", +) - thread = Thread(target=target, daemon=True) - thread.start() - return thread +def run( + component: RootComponentConstructor, + host: str = "127.0.0.1", + port: int | None = None, + implementation: ServerImplementation[Any] | None = None, +) -> None: + """Run a component with a development server""" + logger.warn( + "You are running a development server. " + "Change this before deploying in production!" + ) - return wrapper + implementation = implementation or import_module("idom.server.default") + app = implementation.create_development_app() + implementation.configure(app, component) -def wait_on_event(description: str, event: Event, timeout: Optional[float]) -> None: - if not event.wait(timeout): - raise TimeoutError(f"Did not {description} within {timeout} seconds") + host = host + port = port or find_available_port(host) + logger.info(f"Running with {type(app).__name__!r} at http://{host}:{port}") -def poll( - description: str, - frequency: float, - timeout: Optional[float], - function: Callable[[], bool], -) -> None: - if timeout is not None: - expiry = time.time() + timeout - while not function(): - if time.time() > expiry: - raise TimeoutError(f"Did not {description} within {timeout} seconds") - time.sleep(frequency) - else: - while not function(): - time.sleep(frequency) - - -def find_builtin_server_type(type_name: str) -> ServerFactory[Any, Any]: - """Find first installed server implementation - - Raises: - :class:`RuntimeError` if one cannot be found - """ - installed_builtins: List[str] = [] - for name in _SUPPORTED_PACKAGES: - try: - import_module(name) - except ImportError: # pragma: no cover - continue - else: - builtin_module = import_module(f"idom.server.{name}") - installed_builtins.append(builtin_module.__name__) - try: - return getattr(builtin_module, type_name) # type: ignore - except AttributeError: # pragma: no cover - pass - else: # pragma: no cover - if not installed_builtins: - raise RuntimeError( - f"Found none of the following builtin server implementations {_SUPPORTED_PACKAGES}" - ) - else: - raise ImportError( - f"No server type {type_name!r} found in installed implementations {installed_builtins}" - ) + asyncio.get_event_loop().run_until_complete( + implementation.serve_development_app(app, host, port) + ) def find_available_port( @@ -121,3 +78,19 @@ def find_available_port( raise RuntimeError( f"Host {host!r} has no available port in range {port_max}-{port_max}" ) + + +def all_implementations() -> Iterator[ServerImplementation[Any]]: + """Yield all available server implementations""" + for name in SUPPORTED_PACKAGES: + try: + module = import_module(f"idom.server.{name}") + except ImportError: # pragma: no cover + continue + + if not isinstance(module, ServerImplementation): + raise TypeError( # pragma: no cover + f"{module.__name__!r} is an invalid implementation" + ) + + yield module diff --git a/src/idom/testing.py b/src/idom/testing.py deleted file mode 100644 index e32086af1..000000000 --- a/src/idom/testing.py +++ /dev/null @@ -1,439 +0,0 @@ -from __future__ import annotations - -import logging -import re -import shutil -from contextlib import contextmanager -from functools import wraps -from traceback import format_exception -from types import TracebackType -from typing import ( - Any, - Callable, - Dict, - Generic, - Iterator, - List, - NoReturn, - Optional, - Tuple, - Type, - TypeVar, - Union, -) -from urllib.parse import urlencode, urlunparse -from uuid import uuid4 -from weakref import ref - -from selenium.webdriver.chrome.options import Options as ChromeOptions -from selenium.webdriver.chrome.webdriver import WebDriver as Chrome -from selenium.webdriver.common.options import BaseOptions -from selenium.webdriver.remote.webdriver import WebDriver - -from idom.config import IDOM_WEB_MODULES_DIR -from idom.core.events import EventHandler, to_event_handler_function -from idom.core.hooks import LifeCycleHook, current_hook -from idom.server.prefab import hotswap_server -from idom.server.types import ServerFactory, ServerType -from idom.server.utils import find_available_port - -from .log import ROOT_LOGGER - - -__all__ = [ - "find_available_port", - "create_simple_selenium_web_driver", - "ServerMountPoint", -] - - -def create_simple_selenium_web_driver( - driver_type: Type[WebDriver] = Chrome, - driver_options: BaseOptions = ChromeOptions(), - implicit_wait_timeout: float = 10.0, - page_load_timeout: float = 5.0, - window_size: Tuple[int, int] = (1080, 800), -) -> WebDriver: - driver = driver_type(options=driver_options) - - driver.set_window_size(*window_size) - driver.set_page_load_timeout(page_load_timeout) - driver.implicitly_wait(implicit_wait_timeout) - - return driver - - -_Self = TypeVar("_Self", bound="ServerMountPoint[Any, Any]") -_Mount = TypeVar("_Mount") -_Server = TypeVar("_Server", bound=ServerType[Any]) -_App = TypeVar("_App") -_Config = TypeVar("_Config") - - -class ServerMountPoint(Generic[_Mount, _Server]): - """A context manager for imperatively mounting views to a render server when testing""" - - mount: _Mount - server: _Server - - _log_handler: "_LogRecordCaptor" - - def __init__( - self, - server_type: Optional[ServerFactory[_App, _Config]] = None, - host: str = "127.0.0.1", - port: Optional[int] = None, - server_config: Optional[_Config] = None, - run_kwargs: Optional[Dict[str, Any]] = None, - mount_and_server_constructor: "Callable[..., Tuple[_Mount, _Server]]" = hotswap_server, # type: ignore - app: Optional[_App] = None, - **other_options: Any, - ) -> None: - self.host = host - self.port = port or find_available_port(host, allow_reuse_waiting_ports=False) - self._mount_and_server_constructor: "Callable[[], Tuple[_Mount, _Server]]" = ( - lambda: mount_and_server_constructor( - server_type, - self.host, - self.port, - server_config, - run_kwargs, - app, - **other_options, - ) - ) - - @property - def log_records(self) -> List[logging.LogRecord]: - """A list of captured log records""" - return self._log_handler.records - - def url(self, path: str = "", query: Optional[Any] = None) -> str: - """Return a URL string pointing to the host and point of the server - - Args: - path: the path to a resource on the server - query: a dictionary or list of query parameters - """ - return urlunparse( - [ - "http", - f"{self.host}:{self.port}", - path, - "", - urlencode(query or ()), - "", - ] - ) - - def list_logged_exceptions( - self, - pattern: str = "", - types: Union[Type[Any], Tuple[Type[Any], ...]] = Exception, - log_level: int = logging.ERROR, - del_log_records: bool = True, - ) -> List[BaseException]: - """Return a list of logged exception matching the given criteria - - Args: - log_level: The level of log to check - exclude_exc_types: Any exception types to ignore - del_log_records: Whether to delete the log records for yielded exceptions - """ - found: List[BaseException] = [] - compiled_pattern = re.compile(pattern) - for index, record in enumerate(self.log_records): - if record.levelno >= log_level and record.exc_info: - error = record.exc_info[1] - if ( - error is not None - and isinstance(error, types) - and compiled_pattern.search(str(error)) - ): - if del_log_records: - del self.log_records[index - len(found)] - found.append(error) - return found - - def __enter__(self: _Self) -> _Self: - self._log_handler = _LogRecordCaptor() - logging.getLogger().addHandler(self._log_handler) - self.mount, self.server = self._mount_and_server_constructor() - return self - - def __exit__( - self, - exc_type: Optional[Type[BaseException]], - exc_value: Optional[BaseException], - traceback: Optional[TracebackType], - ) -> None: - self.server.stop() - logging.getLogger().removeHandler(self._log_handler) - del self.mount, self.server - logged_errors = self.list_logged_exceptions(del_log_records=False) - if logged_errors: # pragma: no cover - raise logged_errors[0] - return None - - -class LogAssertionError(AssertionError): - """An assertion error raised in relation to log messages.""" - - -@contextmanager -def assert_idom_logged( - match_message: str = "", - error_type: type[Exception] | None = None, - match_error: str = "", - clear_matched_records: bool = False, -) -> Iterator[None]: - """Assert that IDOM produced a log matching the described message or error. - - Args: - match_message: Must match a logged message. - error_type: Checks the type of logged exceptions. - match_error: Must match an error message. - clear_matched_records: Whether to remove logged records that match. - """ - message_pattern = re.compile(match_message) - error_pattern = re.compile(match_error) - - try: - with capture_idom_logs(yield_existing=clear_matched_records) as log_records: - yield None - except Exception: - raise - else: - found = False - for record in list(log_records): - if ( - # record message matches - message_pattern.findall(record.getMessage()) - # error type matches - and ( - error_type is None - or ( - record.exc_info is not None - and record.exc_info[0] is not None - and issubclass(record.exc_info[0], error_type) - ) - ) - # error message pattern matches - and ( - not match_error - or ( - record.exc_info is not None - and error_pattern.findall( - "".join(format_exception(*record.exc_info)) - ) - ) - ) - ): - found = True - if clear_matched_records: - log_records.remove(record) - - if not found: # pragma: no cover - _raise_log_message_error( - "Could not find a log record matching the given", - match_message, - error_type, - match_error, - ) - - -@contextmanager -def assert_idom_did_not_log( - match_message: str = "", - error_type: type[Exception] | None = None, - match_error: str = "", - clear_matched_records: bool = False, -) -> Iterator[None]: - """Assert the inverse of :func:`assert_idom_logged`""" - try: - with assert_idom_logged( - match_message, error_type, match_error, clear_matched_records - ): - yield None - except LogAssertionError: - pass - else: - _raise_log_message_error( - "Did find a log record matching the given", - match_message, - error_type, - match_error, - ) - - -def _raise_log_message_error( - prefix: str, - match_message: str = "", - error_type: type[Exception] | None = None, - match_error: str = "", -) -> NoReturn: - conditions = [] - if match_message: - conditions.append(f"log message pattern {match_message!r}") - if error_type: - conditions.append(f"exception type {error_type}") - if match_error: - conditions.append(f"error message pattern {match_error!r}") - raise LogAssertionError(prefix + " " + " and ".join(conditions)) - - -@contextmanager -def capture_idom_logs( - yield_existing: bool = False, -) -> Iterator[list[logging.LogRecord]]: - """Capture logs from IDOM - - Parameters: - yield_existing: - If already inside an existing capture context yield the same list of logs. - This is useful if you need to mutate the list of logs to affect behavior in - the outer context. - """ - if yield_existing: - for handler in reversed(ROOT_LOGGER.handlers): - if isinstance(handler, _LogRecordCaptor): - yield handler.records - return None - - handler = _LogRecordCaptor() - original_level = ROOT_LOGGER.level - - ROOT_LOGGER.setLevel(logging.DEBUG) - ROOT_LOGGER.addHandler(handler) - try: - yield handler.records - finally: - ROOT_LOGGER.removeHandler(handler) - ROOT_LOGGER.setLevel(original_level) - - -class _LogRecordCaptor(logging.NullHandler): - def __init__(self) -> None: - self.records: List[logging.LogRecord] = [] - super().__init__() - - def handle(self, record: logging.LogRecord) -> bool: - self.records.append(record) - return True - - -class HookCatcher: - """Utility for capturing a LifeCycleHook from a component - - Example: - .. code-block:: - - hooks = HookCatcher(index_by_kwarg="thing") - - @idom.component - @hooks.capture - def MyComponent(thing): - ... - - ... # render the component - - # grab the last render of where MyComponent(thing='something') - hooks.index["something"] - # or grab the hook from the component's last render - hooks.latest - - After the first render of ``MyComponent`` the ``HookCatcher`` will have - captured the component's ``LifeCycleHook``. - """ - - latest: LifeCycleHook - - def __init__(self, index_by_kwarg: Optional[str] = None): - self.index_by_kwarg = index_by_kwarg - self.index: Dict[Any, LifeCycleHook] = {} - - def capture(self, render_function: Callable[..., Any]) -> Callable[..., Any]: - """Decorator for capturing a ``LifeCycleHook`` on each render of a component""" - - # The render function holds a reference to `self` and, via the `LifeCycleHook`, - # the component. Some tests check whether components are garbage collected, thus - # we must use a `ref` here to ensure these checks pass once the catcher itself - # has been collected. - self_ref = ref(self) - - @wraps(render_function) - def wrapper(*args: Any, **kwargs: Any) -> Any: - self = self_ref() - assert self is not None, "Hook catcher has been garbage collected" - - hook = current_hook() - if self.index_by_kwarg is not None: - self.index[kwargs[self.index_by_kwarg]] = hook - self.latest = hook - return render_function(*args, **kwargs) - - return wrapper - - -class StaticEventHandler: - """Utility for capturing the target of one event handler - - Example: - .. code-block:: - - static_handler = StaticEventHandler() - - @idom.component - def MyComponent(): - state, set_state = idom.hooks.use_state(0) - handler = static_handler.use(lambda event: set_state(state + 1)) - return idom.html.button({"onClick": handler}, "Click me!") - - # gives the target ID for onClick where from the last render of MyComponent - static_handlers.target - - If you need to capture event handlers from different instances of a component - the you should create multiple ``StaticEventHandler`` instances. - - .. code-block:: - - static_handlers_by_key = { - "first": StaticEventHandler(), - "second": StaticEventHandler(), - } - - @idom.component - def Parent(): - return idom.html.div(Child(key="first"), Child(key="second")) - - @idom.component - def Child(key): - state, set_state = idom.hooks.use_state(0) - handler = static_handlers_by_key[key].use(lambda event: set_state(state + 1)) - return idom.html.button({"onClick": handler}, "Click me!") - - # grab the individual targets for each instance above - first_target = static_handlers_by_key["first"].target - second_target = static_handlers_by_key["second"].target - """ - - def __init__(self) -> None: - self.target = uuid4().hex - - def use( - self, - function: Callable[..., Any], - stop_propagation: bool = False, - prevent_default: bool = False, - ) -> EventHandler: - return EventHandler( - to_event_handler_function(function), - stop_propagation, - prevent_default, - self.target, - ) - - -def clear_idom_web_modules_dir() -> None: - for path in IDOM_WEB_MODULES_DIR.current.iterdir(): - shutil.rmtree(path) if path.is_dir() else path.unlink() diff --git a/src/idom/testing/__init__.py b/src/idom/testing/__init__.py new file mode 100644 index 000000000..62c80adcb --- /dev/null +++ b/src/idom/testing/__init__.py @@ -0,0 +1,23 @@ +from .common import HookCatcher, StaticEventHandler, clear_idom_web_modules_dir, poll +from .display import DisplayFixture +from .logs import ( + LogAssertionError, + assert_idom_did_not_log, + assert_idom_logged, + capture_idom_logs, +) +from .server import ServerFixture + + +__all__ = [ + "assert_idom_did_not_log", + "assert_idom_logged", + "capture_idom_logs", + "clear_idom_web_modules_dir", + "DisplayFixture", + "HookCatcher", + "LogAssertionError", + "poll", + "ServerFixture", + "StaticEventHandler", +] diff --git a/src/idom/testing/common.py b/src/idom/testing/common.py new file mode 100644 index 000000000..3e7ccbd0d --- /dev/null +++ b/src/idom/testing/common.py @@ -0,0 +1,205 @@ +from __future__ import annotations + +import shutil +import time +from functools import wraps +from inspect import iscoroutinefunction +from typing import Any, Awaitable, Callable, Generic, Optional, TypeVar, cast +from uuid import uuid4 +from weakref import ref + +from typing_extensions import ParamSpec, Protocol + +from idom.config import IDOM_WEB_MODULES_DIR +from idom.core.events import EventHandler, to_event_handler_function +from idom.core.hooks import LifeCycleHook, current_hook + + +def clear_idom_web_modules_dir() -> None: + """Clear the directory where IDOM stores registered web modules""" + for path in IDOM_WEB_MODULES_DIR.current.iterdir(): + shutil.rmtree(path) if path.is_dir() else path.unlink() + + +_P = ParamSpec("_P") +_R = TypeVar("_R") +_RC = TypeVar("_RC", covariant=True) +_DEFAULT_TIMEOUT = 3.0 + + +class _UntilFunc(Protocol[_RC]): + def __call__( + self, condition: Callable[[_RC], bool], timeout: float = _DEFAULT_TIMEOUT + ) -> Any: + ... + + +class poll(Generic[_R]): # noqa: N801 + """Wait until the result of an sync or async function meets some condition""" + + def __init__( + self, + function: Callable[_P, Awaitable[_R] | _R], + *args: _P.args, + **kwargs: _P.kwargs, + ) -> None: + self.until: _UntilFunc[_R] + """Check that the coroutines result meets a condition within the timeout""" + + if iscoroutinefunction(function): + coro_function = cast(Callable[_P, Awaitable[_R]], function) + + async def coro_until( + condition: Callable[[_R], bool], timeout: float = _DEFAULT_TIMEOUT + ) -> None: + started_at = time.time() + while True: + result = await coro_function(*args, **kwargs) + if condition(result): + break + elif (time.time() - started_at) > timeout: # pragma: no cover + raise TimeoutError( + f"Condition not met within {timeout} " + f"seconds - last value was {result!r}" + ) + + self.until = coro_until + else: + sync_function = cast(Callable[_P, _R], function) + + def sync_until( + condition: Callable[[_R], bool] | Any, timeout: float = _DEFAULT_TIMEOUT + ) -> None: + started_at = time.time() + while True: + result = sync_function(*args, **kwargs) + if condition(result): + break + elif (time.time() - started_at) > timeout: # pragma: no cover + raise TimeoutError( + f"Condition not met within {timeout} " + f"seconds - last value was {result!r}" + ) + + self.until = sync_until + + def until_is(self, right: Any, timeout: float = _DEFAULT_TIMEOUT) -> Any: + """Wait until the result is identical to the given value""" + return self.until(lambda left: left is right, timeout) + + def until_equals(self, right: Any, timeout: float = _DEFAULT_TIMEOUT) -> Any: + """Wait until the result is equal to the given value""" + # not really sure why I need a type ignore comment here + return self.until(lambda left: left == right, timeout) # type: ignore + + +class HookCatcher: + """Utility for capturing a LifeCycleHook from a component + + Example: + .. code-block:: + + hooks = HookCatcher(index_by_kwarg="thing") + + @idom.component + @hooks.capture + def MyComponent(thing): + ... + + ... # render the component + + # grab the last render of where MyComponent(thing='something') + hooks.index["something"] + # or grab the hook from the component's last render + hooks.latest + + After the first render of ``MyComponent`` the ``HookCatcher`` will have + captured the component's ``LifeCycleHook``. + """ + + latest: LifeCycleHook + + def __init__(self, index_by_kwarg: Optional[str] = None): + self.index_by_kwarg = index_by_kwarg + self.index: dict[Any, LifeCycleHook] = {} + + def capture(self, render_function: Callable[..., Any]) -> Callable[..., Any]: + """Decorator for capturing a ``LifeCycleHook`` on each render of a component""" + + # The render function holds a reference to `self` and, via the `LifeCycleHook`, + # the component. Some tests check whether components are garbage collected, thus + # we must use a `ref` here to ensure these checks pass once the catcher itself + # has been collected. + self_ref = ref(self) + + @wraps(render_function) + def wrapper(*args: Any, **kwargs: Any) -> Any: + self = self_ref() + assert self is not None, "Hook catcher has been garbage collected" + + hook = current_hook() + if self.index_by_kwarg is not None: + self.index[kwargs[self.index_by_kwarg]] = hook + self.latest = hook + return render_function(*args, **kwargs) + + return wrapper + + +class StaticEventHandler: + """Utility for capturing the target of one event handler + + Example: + .. code-block:: + + static_handler = StaticEventHandler() + + @idom.component + def MyComponent(): + state, set_state = idom.hooks.use_state(0) + handler = static_handler.use(lambda event: set_state(state + 1)) + return idom.html.button({"onClick": handler}, "Click me!") + + # gives the target ID for onClick where from the last render of MyComponent + static_handlers.target + + If you need to capture event handlers from different instances of a component + the you should create multiple ``StaticEventHandler`` instances. + + .. code-block:: + + static_handlers_by_key = { + "first": StaticEventHandler(), + "second": StaticEventHandler(), + } + + @idom.component + def Parent(): + return idom.html.div(Child(key="first"), Child(key="second")) + + @idom.component + def Child(key): + state, set_state = idom.hooks.use_state(0) + handler = static_handlers_by_key[key].use(lambda event: set_state(state + 1)) + return idom.html.button({"onClick": handler}, "Click me!") + + # grab the individual targets for each instance above + first_target = static_handlers_by_key["first"].target + second_target = static_handlers_by_key["second"].target + """ + + def __init__(self) -> None: + self.target = uuid4().hex + + def use( + self, + function: Callable[..., Any], + stop_propagation: bool = False, + prevent_default: bool = False, + ) -> EventHandler: + return EventHandler( + to_event_handler_function(function), + stop_propagation, + prevent_default, + self.target, + ) diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py new file mode 100644 index 000000000..b89aa92ca --- /dev/null +++ b/src/idom/testing/display.py @@ -0,0 +1,71 @@ +from __future__ import annotations + +from contextlib import AsyncExitStack +from types import TracebackType +from typing import Any + +from playwright.async_api import Browser, BrowserContext, Page, async_playwright + +from idom import html +from idom.types import RootComponentConstructor + +from .server import ServerFixture + + +class DisplayFixture: + """A fixture for running web-based tests using ``playwright``""" + + _exit_stack: AsyncExitStack + + def __init__( + self, + server: ServerFixture | None = None, + driver: Browser | BrowserContext | Page | None = None, + ) -> None: + if server is not None: + self.server = server + if driver is not None: + if isinstance(driver, Page): + self.page = driver + else: + self._browser = driver + self._next_view_id = 0 + + async def show( + self, + component: RootComponentConstructor, + query: dict[str, Any] | None = None, + ) -> None: + self._next_view_id += 1 + view_id = f"display-{self._next_view_id}" + self.server.mount(lambda: html.div({"id": view_id}, component())) + + await self.page.goto(self.server.url(query=query)) + await self.page.wait_for_selector(f"#{view_id}", state="attached") + + async def __aenter__(self) -> DisplayFixture: + es = self._exit_stack = AsyncExitStack() + + browser: Browser | BrowserContext + if not hasattr(self, "page"): + if not hasattr(self, "_browser"): + pw = await es.enter_async_context(async_playwright()) + browser = await pw.chromium.launch() + else: + browser = self._browser + self.page = await browser.new_page() + + if not hasattr(self, "server"): + self.server = ServerFixture() + await es.enter_async_context(self.server) + + return self + + async def __aexit__( + self, + exc_type: type[BaseException] | None, + exc_value: BaseException | None, + traceback: TracebackType | None, + ) -> None: + self.server.mount(None) + await self._exit_stack.aclose() diff --git a/src/idom/testing/logs.py b/src/idom/testing/logs.py new file mode 100644 index 000000000..f0639bb40 --- /dev/null +++ b/src/idom/testing/logs.py @@ -0,0 +1,177 @@ +from __future__ import annotations + +import logging +import re +from contextlib import contextmanager +from traceback import format_exception +from typing import Any, Iterator, NoReturn + +from idom.logging import ROOT_LOGGER + + +class LogAssertionError(AssertionError): + """An assertion error raised in relation to log messages.""" + + +@contextmanager +def assert_idom_logged( + match_message: str = "", + error_type: type[Exception] | None = None, + match_error: str = "", +) -> Iterator[None]: + """Assert that IDOM produced a log matching the described message or error. + + Args: + match_message: Must match a logged message. + error_type: Checks the type of logged exceptions. + match_error: Must match an error message. + """ + message_pattern = re.compile(match_message) + error_pattern = re.compile(match_error) + + with capture_idom_logs() as log_records: + try: + yield None + except Exception: + raise + else: + for record in list(log_records): + if ( + # record message matches + message_pattern.findall(record.getMessage()) + # error type matches + and ( + error_type is None + or ( + record.exc_info is not None + and record.exc_info[0] is not None + and issubclass(record.exc_info[0], error_type) + ) + ) + # error message pattern matches + and ( + not match_error + or ( + record.exc_info is not None + and error_pattern.findall( + "".join(format_exception(*record.exc_info)) + ) + ) + ) + ): + break + else: # pragma: no cover + _raise_log_message_error( + "Could not find a log record matching the given", + match_message, + error_type, + match_error, + ) + + +@contextmanager +def assert_idom_did_not_log( + match_message: str = "", + error_type: type[Exception] | None = None, + match_error: str = "", +) -> Iterator[None]: + """Assert the inverse of :func:`assert_idom_logged`""" + try: + with assert_idom_logged(match_message, error_type, match_error): + yield None + except LogAssertionError: + pass + else: + _raise_log_message_error( + "Did find a log record matching the given", + match_message, + error_type, + match_error, + ) + + +def list_logged_exceptions( + log_records: list[logging.LogRecord], + pattern: str = "", + types: type[Any] | tuple[type[Any], ...] = Exception, + log_level: int = logging.ERROR, + del_log_records: bool = True, +) -> list[BaseException]: + """Return a list of logged exception matching the given criteria + + Args: + log_level: The level of log to check + exclude_exc_types: Any exception types to ignore + del_log_records: Whether to delete the log records for yielded exceptions + """ + found: list[BaseException] = [] + compiled_pattern = re.compile(pattern) + for index, record in enumerate(log_records): + if record.levelno >= log_level and record.exc_info: + error = record.exc_info[1] + if ( + error is not None + and isinstance(error, types) + and compiled_pattern.search(str(error)) + ): + if del_log_records: + del log_records[index - len(found)] + found.append(error) + return found + + +@contextmanager +def capture_idom_logs() -> Iterator[list[logging.LogRecord]]: + """Capture logs from IDOM + + Any logs produced in this context are cleared afterwards + """ + original_level = ROOT_LOGGER.level + ROOT_LOGGER.setLevel(logging.DEBUG) + try: + if _LOG_RECORD_CAPTOR in ROOT_LOGGER.handlers: + start_index = len(_LOG_RECORD_CAPTOR.records) + try: + yield _LOG_RECORD_CAPTOR.records + finally: + end_index = len(_LOG_RECORD_CAPTOR.records) + _LOG_RECORD_CAPTOR.records[start_index:end_index] = [] + return None + + ROOT_LOGGER.addHandler(_LOG_RECORD_CAPTOR) + try: + yield _LOG_RECORD_CAPTOR.records + finally: + ROOT_LOGGER.removeHandler(_LOG_RECORD_CAPTOR) + _LOG_RECORD_CAPTOR.records.clear() + finally: + ROOT_LOGGER.setLevel(original_level) + + +class _LogRecordCaptor(logging.NullHandler): + def __init__(self) -> None: + self.records: list[logging.LogRecord] = [] + super().__init__() + + def handle(self, record: logging.LogRecord) -> bool: + self.records.append(record) + return True + + +_LOG_RECORD_CAPTOR = _LogRecordCaptor() + + +def _raise_log_message_error( + prefix: str, + match_message: str = "", + error_type: type[Exception] | None = None, + match_error: str = "", +) -> NoReturn: + conditions = [] + if match_message: + conditions.append(f"log message pattern {match_message!r}") + if error_type: + conditions.append(f"exception type {error_type}") + if match_error: + conditions.append(f"error message pattern {match_error!r}") + raise LogAssertionError(prefix + " " + " and ".join(conditions)) diff --git a/src/idom/testing/server.py b/src/idom/testing/server.py new file mode 100644 index 000000000..862d50a7d --- /dev/null +++ b/src/idom/testing/server.py @@ -0,0 +1,148 @@ +from __future__ import annotations + +import asyncio +import logging +from contextlib import AsyncExitStack +from types import TracebackType +from typing import Any, Optional, Tuple, Type, Union +from urllib.parse import urlencode, urlunparse + +from idom.server import default as default_server +from idom.server.types import ServerImplementation +from idom.server.utils import find_available_port +from idom.widgets import hotswap + +from .logs import LogAssertionError, capture_idom_logs, list_logged_exceptions + + +class ServerFixture: + """A test fixture for running a server and imperatively displaying views + + This fixture is typically used alongside async web drivers like ``playwight``. + + Example: + .. code-block:: + + async with ServerFixture() as server: + server.mount(MyComponent) + """ + + _records: list[logging.LogRecord] + _server_future: asyncio.Task[Any] + _exit_stack = AsyncExitStack() + + def __init__( + self, + host: str = "127.0.0.1", + port: Optional[int] = None, + app: Any | None = None, + implementation: ServerImplementation[Any] | None = None, + options: Any | None = None, + ) -> None: + self.host = host + self.port = port or find_available_port(host, allow_reuse_waiting_ports=False) + self.mount, self._root_component = hotswap() + + if app is not None: + if implementation is None: + raise ValueError( + "If an application instance its corresponding " + "server implementation must be provided too." + ) + + self._app = app + self.implementation = implementation or default_server + self._options = options + + @property + def log_records(self) -> list[logging.LogRecord]: + """A list of captured log records""" + return self._records + + def url(self, path: str = "", query: Optional[Any] = None) -> str: + """Return a URL string pointing to the host and point of the server + + Args: + path: the path to a resource on the server + query: a dictionary or list of query parameters + """ + return urlunparse( + [ + "http", + f"{self.host}:{self.port}", + path, + "", + urlencode(query or ()), + "", + ] + ) + + def list_logged_exceptions( + self, + pattern: str = "", + types: Union[Type[Any], Tuple[Type[Any], ...]] = Exception, + log_level: int = logging.ERROR, + del_log_records: bool = True, + ) -> list[BaseException]: + """Return a list of logged exception matching the given criteria + + Args: + log_level: The level of log to check + exclude_exc_types: Any exception types to ignore + del_log_records: Whether to delete the log records for yielded exceptions + """ + return list_logged_exceptions( + self.log_records, + pattern, + types, + log_level, + del_log_records, + ) + + async def __aenter__(self) -> ServerFixture: + self._exit_stack = AsyncExitStack() + self._records = self._exit_stack.enter_context(capture_idom_logs()) + + app = self._app or self.implementation.create_development_app() + self.implementation.configure(app, self._root_component, self._options) + + started = asyncio.Event() + server_future = asyncio.create_task( + self.implementation.serve_development_app( + app, self.host, self.port, started + ) + ) + + async def stop_server() -> None: + server_future.cancel() + try: + await asyncio.wait_for(server_future, timeout=3) + except asyncio.CancelledError: + pass + + self._exit_stack.push_async_callback(stop_server) + + try: + await asyncio.wait_for(started.wait(), timeout=3) + except Exception: # pragma: no cover + # see if we can await the future for a more helpful error + await asyncio.wait_for(server_future, timeout=3) + raise + + return self + + async def __aexit__( + self, + exc_type: Optional[Type[BaseException]], + exc_value: Optional[BaseException], + traceback: Optional[TracebackType], + ) -> None: + await self._exit_stack.aclose() + + self.mount(None) # reset the view + + logged_errors = self.list_logged_exceptions(del_log_records=False) + if logged_errors: # pragma: no cover + raise LogAssertionError("Unexpected logged exception") from logged_errors[0] + + return None diff --git a/src/idom/types.py b/src/idom/types.py index e979ec8a0..084c38883 100644 --- a/src/idom/types.py +++ b/src/idom/types.py @@ -4,6 +4,7 @@ - :mod:`idom.server.types` """ +from .core.hooks import Context from .core.types import ( ComponentConstructor, ComponentType, @@ -14,6 +15,7 @@ ImportSourceDict, Key, LayoutType, + RootComponentConstructor, VdomAttributes, VdomAttributesAndChildren, VdomChild, @@ -21,12 +23,13 @@ VdomDict, VdomJson, ) -from .server.types import ServerFactory, ServerType +from .server.types import ServerImplementation __all__ = [ "ComponentConstructor", "ComponentType", + "Context", "EventHandlerDict", "EventHandlerFunc", "EventHandlerMapping", @@ -34,12 +37,12 @@ "ImportSourceDict", "Key", "LayoutType", + "RootComponentConstructor", "VdomAttributes", "VdomAttributesAndChildren", "VdomChild", "VdomChildren", "VdomDict", "VdomJson", - "ServerFactory", - "ServerType", + "ServerImplementation", ] diff --git a/src/idom/widgets.py b/src/idom/widgets.py index 167f84696..a089b9d21 100644 --- a/src/idom/widgets.py +++ b/src/idom/widgets.py @@ -107,7 +107,7 @@ def __call__(self, value: str) -> _CastTo: ... -MountFunc = Callable[[ComponentConstructor], None] +MountFunc = Callable[["Callable[[], Any] | None"], None] def hotswap(update_on_change: bool = False) -> Tuple[MountFunc, ComponentConstructor]: @@ -144,7 +144,7 @@ def DivTwo(self): # displaying the output now will show DivTwo """ - constructor_ref: Ref[Callable[[], Any]] = Ref(lambda: {"tagName": "div"}) + constructor_ref: Ref[Callable[[], Any]] = Ref(lambda: None) if update_on_change: set_constructor_callbacks: Set[Callable[[Callable[[], Any]], None]] = set() @@ -162,8 +162,8 @@ def add_callback() -> Callable[[], None]: return constructor() - def swap(constructor: Callable[[], Any]) -> None: - constructor_ref.current = constructor + def swap(constructor: Callable[[], Any] | None) -> None: + constructor = constructor_ref.current = constructor or (lambda: None) for set_constructor in set_constructor_callbacks: set_constructor(constructor) @@ -176,8 +176,8 @@ def swap(constructor: Callable[[], Any]) -> None: def HotSwap() -> Any: return constructor_ref.current() - def swap(constructor: Callable[[], Any]) -> None: - constructor_ref.current = constructor + def swap(constructor: Callable[[], Any] | None) -> None: + constructor_ref.current = constructor or (lambda: None) return None return swap, HotSwap @@ -189,92 +189,3 @@ def swap(constructor: Callable[[], Any]) -> None: def _use_callable(initial_func: _Func) -> Tuple[_Func, Callable[[_Func], None]]: state = hooks.use_state(lambda: initial_func) return state[0], lambda new: state[1](lambda old: new) - - -def multiview() -> Tuple[MultiViewMount, ComponentConstructor]: - """Dynamically add components to a layout on the fly - - Since you can't change the component functions used to create a layout - in an imperative manner, you can use ``multiview`` to do this so - long as you set things up ahead of time. - - Examples: - - .. code-block:: - - import idom - - mount, multiview = idom.widgets.multiview() - - @idom.component - def Hello(): - return idom.html.h1(["hello"]) - - # auto static view ID - mount.add("hello", Hello) - # use the view ID to create the associate component instance - hello_component_instance = multiview("hello") - - @idom.component - def World(): - return idom.html.h1(["world"]) - - generated_view_id = mount.add(None, World) - world_component_instance = multiview(generated_view_id) - - Displaying ``root`` with the parameter ``view_id=hello_world_view_id`` will show - the message 'hello world'. Usually though this is achieved by connecting to the - socket serving up the VDOM with a query parameter for view ID. This allow many - views to be added and then displayed dynamically in, for example, a Jupyter - Notebook where one might want multiple active views which can all be interacted - with at the same time. - - See :func:`idom.server.prefab.multiview_server` for a reference usage. - """ - views: Dict[str, ComponentConstructor] = {} - - @component - def MultiView(view_id: str) -> Any: - try: - return views[view_id]() - except KeyError: - raise ValueError(f"Unknown view {view_id!r}") - - return MultiViewMount(views), MultiView - - -class MultiViewMount: - """Mount point for :func:`multiview`""" - - __slots__ = "_next_auto_id", "_views" - - def __init__(self, views: Dict[str, ComponentConstructor]): - self._next_auto_id = 0 - self._views = views - - def add(self, view_id: Optional[str], constructor: ComponentConstructor) -> str: - """Add a component constructor - - Parameters: - view_id: - The view ID the constructor will be associated with. If ``None`` then - a view ID will be automatically generated. - constructor: - The component constructor to be mounted. It must accept no arguments. - - Returns: - The view ID that was assocaited with the component - most useful for - auto-generated view IDs - """ - if view_id is None: - self._next_auto_id += 1 - view_id = str(self._next_auto_id) - self._views[view_id] = constructor - return view_id - - def remove(self, view_id: str) -> None: - """Remove a mounted component constructor given its view ID""" - del self._views[view_id] - - def __repr__(self) -> str: - return f"{type(self).__name__}({self._views})" diff --git a/tests/conftest.py b/tests/conftest.py index f8281182a..a6cae2a2d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,132 +1,78 @@ from __future__ import annotations -import inspect import os -from typing import Any, List import pytest from _pytest.config import Config from _pytest.config.argparsing import Parser -from selenium.webdriver import Chrome, ChromeOptions -from selenium.webdriver.support.ui import WebDriverWait +from playwright.async_api import async_playwright -import idom from idom.testing import ( - ServerMountPoint, + DisplayFixture, + ServerFixture, + capture_idom_logs, clear_idom_web_modules_dir, - create_simple_selenium_web_driver, ) - - -def pytest_collection_modifyitems( - session: pytest.Session, config: pytest.config.Config, items: List[pytest.Item] -) -> None: - _mark_coros_as_async_tests(items) - _skip_web_driver_tests_on_windows(items) +from tests.tooling.loop import open_event_loop def pytest_addoption(parser: Parser) -> None: parser.addoption( - "--headless", - dest="headless", + "--headed", + dest="headed", action="store_true", - help="Whether to run browser tests in headless mode.", + help="Open a browser window when runnging web-based tests", ) - parser.addoption( - "--no-restore", - dest="restore_client", - action="store_false", - help="Whether to restore the client build before testing.", - ) - - -@pytest.fixture -def display(driver, server_mount_point): - display_id = idom.Ref(0) - - def mount_and_display(component_constructor, query=None, check_mount=True): - component_id = f"display-{display_id.set_current(display_id.current + 1)}" - server_mount_point.mount( - lambda: idom.html.div({"id": component_id}, component_constructor()) - ) - driver.get(server_mount_point.url(query=query)) - if check_mount: - driver.find_element("id", component_id) - return component_id - - yield mount_and_display - - -@pytest.fixture -def driver_get(driver, server_mount_point): - return lambda query=None: driver.get(server_mount_point.url(query=query)) @pytest.fixture -def server_mount_point(): - """An IDOM layout mount function and server as a tuple - - The ``mount`` and ``server`` fixtures use this. - """ - with ServerMountPoint() as mount_point: - yield mount_point - - -@pytest.fixture(scope="module") -def driver_wait(driver): - return WebDriverWait(driver, 3) +async def display(server, page): + async with DisplayFixture(server, page) as display: + yield display -@pytest.fixture(scope="module") -def driver(create_driver) -> Chrome: - """A Selenium web driver""" - return create_driver() - +@pytest.fixture(scope="session") +async def server(): + async with ServerFixture() as server: + yield server -@pytest.fixture(scope="module") -def create_driver(driver_is_headless): - """A Selenium web driver""" - drivers = [] - def create(**kwargs: Any): - options = ChromeOptions() - options.headless = driver_is_headless - driver = create_simple_selenium_web_driver(driver_options=options, **kwargs) - drivers.append(driver) - return driver +@pytest.fixture(scope="session") +async def page(browser): + pg = await browser.new_page() + pg.set_default_timeout(5000) + try: + yield pg + finally: + await pg.close() - yield create - for d in drivers: - d.quit() +@pytest.fixture(scope="session") +async def browser(pytestconfig: Config): + if os.name == "nt": # pragma: no cover + pytest.skip("Browser tests not supported on Windows") + async with async_playwright() as pw: + yield await pw.chromium.launch(headless=not bool(pytestconfig.option.headed)) @pytest.fixture(scope="session") -def driver_is_headless(pytestconfig: Config): - return bool(pytestconfig.option.headless) +def event_loop(): + with open_event_loop() as loop: + yield loop @pytest.fixture(autouse=True) -def _clear_web_modules_dir_after_test(): +def clear_web_modules_dir_after_test(): clear_idom_web_modules_dir() -def _mark_coros_as_async_tests(items: List[pytest.Item]) -> None: - for item in items: - if isinstance(item, pytest.Function): - if inspect.iscoroutinefunction(item.function): - item.add_marker(pytest.mark.asyncio) - - -def _skip_web_driver_tests_on_windows(items: List[pytest.Item]) -> None: - if os.name == "nt": - for item in items: - if isinstance(item, pytest.Function): - if {"display", "driver", "create_driver"}.intersection( - item.fixturenames - ): - item.add_marker( - pytest.mark.skip( - reason="WebDriver tests are not working on Windows", - ) - ) +@pytest.fixture(autouse=True) +def assert_no_logged_exceptions(): + with capture_idom_logs() as records: + yield + try: + for r in records: + if r.exc_info is not None: + raise r.exc_info[1] + finally: + records.clear() diff --git a/tests/driver_utils.py b/tests/driver_utils.py deleted file mode 100644 index 93032486a..000000000 --- a/tests/driver_utils.py +++ /dev/null @@ -1,19 +0,0 @@ -from typing import Any - -from selenium.common.exceptions import NoSuchElementException -from selenium.webdriver.remote.webdriver import WebDriver -from selenium.webdriver.remote.webelement import WebElement - - -def send_keys(element: WebElement, keys: Any) -> None: - for char in keys: - element.send_keys(char) - - -def no_such_element(driver: WebDriver, method: str, param: Any) -> bool: - try: - driver.find_element(method, param) - except NoSuchElementException: - return True - else: - return False diff --git a/tests/test_client.py b/tests/test_client.py index ab0cd7413..b17d690cc 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1,33 +1,39 @@ import asyncio -import time +from contextlib import AsyncExitStack from pathlib import Path +from playwright.async_api import Browser + import idom -from idom.testing import ServerMountPoint -from tests.driver_utils import send_keys +from idom.testing import DisplayFixture, ServerFixture JS_DIR = Path(__file__).parent / "js" -def test_automatic_reconnect(create_driver): - # we need to wait longer here because the automatic reconnect is not instance - driver = create_driver(implicit_wait_timeout=10, page_load_timeout=10) +async def test_automatic_reconnect(browser: Browser): + page = await browser.new_page() + + # we need to wait longer here because the automatic reconnect is not instant + page.set_default_timeout(10000) @idom.component def OldComponent(): return idom.html.p({"id": "old-component"}, "old") - mount_point = ServerMountPoint() + async with AsyncExitStack() as exit_stack: + server = await exit_stack.enter_async_context(ServerFixture(port=8000)) + display = await exit_stack.enter_async_context( + DisplayFixture(server, driver=page) + ) + + await display.show(OldComponent) - with mount_point: - mount_point.mount(OldComponent) - driver.get(mount_point.url()) # ensure the element is displayed before stopping the server - driver.find_element("id", "old-component") + await page.wait_for_selector("#old-component") # the server is disconnected but the last view state is still shown - driver.find_element("id", "old-component") + await page.wait_for_selector("#old-component") set_state = idom.Ref(None) @@ -36,19 +42,24 @@ def NewComponent(): state, set_state.current = idom.hooks.use_state(0) return idom.html.p({"id": f"new-component-{state}"}, f"new-{state}") - with mount_point: - mount_point.mount(NewComponent) + async with AsyncExitStack() as exit_stack: + server = await exit_stack.enter_async_context(ServerFixture(port=8000)) + display = await exit_stack.enter_async_context( + DisplayFixture(server, driver=page) + ) + + await display.show(NewComponent) # Note the lack of a page refresh before looking up this new component. The # client should attempt to reconnect and display the new view automatically. - driver.find_element("id", "new-component-0") + await page.wait_for_selector("#new-component-0") # check that we can resume normal operation set_state.current(1) - driver.find_element("id", "new-component-1") + await page.wait_for_selector("#new-component-1") -def test_style_can_be_changed(display, driver, driver_wait): +async def test_style_can_be_changed(display: DisplayFixture): """This test was introduced to verify the client does not mutate the model A bug was introduced where the client-side model was mutated and React was relying @@ -70,24 +81,24 @@ def ButtonWithChangingColor(): f"color: {color}", ) - display(ButtonWithChangingColor) + await display.show(ButtonWithChangingColor) - button = driver.find_element("id", "my-button") + button = await display.page.wait_for_selector("#my-button") - assert _get_style(button)["background-color"] == "red" + assert (await _get_style(button))["background-color"] == "red" for color in ["blue", "red"] * 2: - button.click() - driver_wait.until(lambda _: _get_style(button)["background-color"] == color) + await button.click() + assert (await _get_style(button))["background-color"] == color -def _get_style(element): - items = element.get_attribute("style").split(";") +async def _get_style(element): + items = (await element.get_attribute("style")).split(";") pairs = [item.split(":", 1) for item in map(str.strip, items) if item] return {key.strip(): value.strip() for key, value in pairs} -def test_slow_server_response_on_input_change(display, driver, driver_wait): +async def test_slow_server_response_on_input_change(display: DisplayFixture): """A delay server-side could cause input values to be overwritten. For more info see: https://github.com/idom-team/idom/issues/684 @@ -105,13 +116,9 @@ async def handle_change(event): return idom.html.input({"onChange": handle_change, "id": "test-input"}) - display(SomeComponent) - - inp = driver.find_element("id", "test-input") - - text = "hello" - send_keys(inp, text) + await display.show(SomeComponent) - time.sleep(delay * len(text) * 1.1) + inp = await display.page.wait_for_selector("#test-input") + await inp.type("hello") - driver_wait.until(lambda _: inp.get_attribute("value") == "hello") + assert (await inp.evaluate("node => node.value")) == "hello" diff --git a/tests/test_core/test_component.py b/tests/test_core/test_component.py index 6880d9270..28c8b00f2 100644 --- a/tests/test_core/test_component.py +++ b/tests/test_core/test_component.py @@ -1,4 +1,5 @@ import idom +from idom.testing import DisplayFixture def test_component_repr(): @@ -43,17 +44,17 @@ def ComponentWithVarArgsAndKwargs(*args, **kwargs): } -def test_display_simple_hello_world(driver, display): +async def test_display_simple_hello_world(display: DisplayFixture): @idom.component def Hello(): return idom.html.p({"id": "hello"}, ["Hello World"]) - display(Hello) + await display.show(Hello) - assert driver.find_element("id", "hello") + await display.page.wait_for_selector("#hello") -def test_pre_tags_are_rendered_correctly(driver, display): +async def test_pre_tags_are_rendered_correctly(display: DisplayFixture): @idom.component def PreFormated(): return idom.html.pre( @@ -63,11 +64,10 @@ def PreFormated(): " text", ) - display(PreFormated) + await display.show(PreFormated) - pre = driver.find_element("id", "pre-form-test") + pre = await display.page.wait_for_selector("#pre-form-test") assert ( - pre.get_attribute("innerHTML") - == "thisissomepre-formated text" - ) + await pre.evaluate("node => node.innerHTML") + ) == "thisissomepre-formated text" diff --git a/tests/test_core/test_dispatcher.py b/tests/test_core/test_dispatcher.py index 4f0cf34b0..8e3f05ded 100644 --- a/tests/test_core/test_dispatcher.py +++ b/tests/test_core/test_dispatcher.py @@ -1,18 +1,9 @@ import asyncio -import sys from typing import Any, Sequence -import pytest - import idom -from idom.core.dispatcher import ( - VdomJsonPatch, - _create_shared_view_dispatcher, - create_shared_view_dispatcher, - dispatch_single_view, - ensure_shared_view_dispatcher_future, -) from idom.core.layout import Layout, LayoutEvent, LayoutUpdate +from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.testing import StaticEventHandler @@ -95,94 +86,13 @@ def Counter(): return idom.html.div({EVENT_NAME: handler, "count": count}) -async def test_dispatch_single_view(): +async def test_dispatch(): events, expected_model = make_events_and_expected_model() changes, send, recv = make_send_recv_callbacks(events) - await asyncio.wait_for(dispatch_single_view(Layout(Counter()), send, recv), 1) + await asyncio.wait_for(serve_json_patch(Layout(Counter()), send, recv), 1) assert_changes_produce_expected_model(changes, expected_model) -async def test_create_shared_state_dispatcher(): - events, model = make_events_and_expected_model() - changes_1, send_1, recv_1 = make_send_recv_callbacks(events) - changes_2, send_2, recv_2 = make_send_recv_callbacks(events) - - async with create_shared_view_dispatcher(Layout(Counter())) as dispatcher: - dispatcher(send_1, recv_1) - dispatcher(send_2, recv_2) - - assert_changes_produce_expected_model(changes_1, model) - assert_changes_produce_expected_model(changes_2, model) - - -async def test_ensure_shared_view_dispatcher_future(): - events, model = make_events_and_expected_model() - changes_1, send_1, recv_1 = make_send_recv_callbacks(events) - changes_2, send_2, recv_2 = make_send_recv_callbacks(events) - - dispatch_future, dispatch = ensure_shared_view_dispatcher_future(Layout(Counter())) - - await asyncio.gather( - dispatch(send_1, recv_1), - dispatch(send_2, recv_2), - return_exceptions=True, - ) - - # the dispatch future should run forever, until cancelled - with pytest.raises(asyncio.TimeoutError): - await asyncio.wait_for(dispatch_future, timeout=1) - - dispatch_future.cancel() - await asyncio.gather(dispatch_future, return_exceptions=True) - - assert_changes_produce_expected_model(changes_1, model) - assert_changes_produce_expected_model(changes_2, model) - - -async def test_private_create_shared_view_dispatcher_cleans_up_patch_queues(): - """Report an issue if this test breaks - - Some internals of idom.core.dispatcher may need to be changed in order to make some - internal state easier to introspect. - - Ideally we would just check if patch queues are getting cleaned up more directly, - but without having access to that, we use some side effects to try and infer whether - it happens. - """ - - @idom.component - def SomeComponent(): - return idom.html.div() - - async def send(patch): - raise idom.Stop() - - async def recv(): - return LayoutEvent("something", []) - - with idom.Layout(SomeComponent()) as layout: - dispatch_shared_view, push_patch = await _create_shared_view_dispatcher(layout) - - # Dispatch a view that should exit. After exiting its patch queue should be - # cleaned up and removed. Since we only dispatched one view there should be - # no patch queues. - await dispatch_shared_view(send, recv) # this should stop immediately - - # We create a patch and check its ref count. We will check this after attempting - # to push out the change. - patch = VdomJsonPatch("anything", []) - patch_ref_count = sys.getrefcount(patch) - - # We push out this change. - push_patch(patch) - - # Because there should be no patch queues, we expect that the ref count remains - # the same. If the ref count had increased, then we would know that the patch - # queue has not been cleaned up and that the patch we just pushed was added to - # it. - assert not sys.getrefcount(patch) > patch_ref_count - - async def test_dispatcher_handles_more_than_one_event_at_a_time(): block_and_never_set = asyncio.Event() will_block = asyncio.Event() @@ -211,7 +121,7 @@ async def handle_event(): recv_queue = asyncio.Queue() asyncio.ensure_future( - dispatch_single_view( + serve_json_patch( idom.Layout(ComponentWithTwoEventHandlers()), send_queue.put, recv_queue.get, diff --git a/tests/test_core/test_events.py b/tests/test_core/test_events.py index 9be849f4c..29210d19b 100644 --- a/tests/test_core/test_events.py +++ b/tests/test_core/test_events.py @@ -7,6 +7,7 @@ merge_event_handlers, to_event_handler_function, ) +from idom.testing import DisplayFixture, poll def test_event_handler_repr(): @@ -142,7 +143,7 @@ async def some_other_func(data): assert calls == ["some_func", "some_other_func"] -def test_can_prevent_event_default_operation(driver, display): +async def test_can_prevent_event_default_operation(display: DisplayFixture): @idom.component def Input(): @idom.event(prevent_default=True) @@ -151,15 +152,15 @@ async def on_key_down(value): return idom.html.input({"onKeyDown": on_key_down, "id": "input"}) - display(Input) + await display.show(Input) - inp = driver.find_element("id", "input") - inp.send_keys("hello") + inp = await display.page.wait_for_selector("#input") + await inp.type("hello") # the default action of updating the element's value did not take place - assert inp.get_attribute("value") == "" + assert (await inp.evaluate("node => node.value")) == "" -def test_simple_click_event(driver, display): +async def test_simple_click_event(display: DisplayFixture): @idom.component def Button(): clicked, set_clicked = idom.hooks.use_state(False) @@ -172,14 +173,14 @@ async def on_click(event): else: return idom.html.p({"id": "complete"}, ["Complete"]) - display(Button) + await display.show(Button) - button = driver.find_element("id", "click") - button.click() - driver.find_element("id", "complete") + button = await display.page.wait_for_selector("#click") + await button.click() + await display.page.wait_for_selector("#complete") -def test_can_stop_event_propogation(driver, driver_wait, display): +async def test_can_stop_event_propogation(display: DisplayFixture): clicked = idom.Ref(False) @idom.component @@ -215,9 +216,9 @@ def outer_click_is_not_triggered(event): ) return outer - display(DivInDiv) + await display.show(DivInDiv) - inner = driver.find_element("id", "inner") - inner.click() + inner = await display.page.wait_for_selector("#inner") + await inner.click() - driver_wait.until(lambda _: clicked.current) + poll(lambda: clicked.current).until_is(True) diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index a95724856..744d21a12 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -5,12 +5,12 @@ import idom from idom import html -from idom.core.dispatcher import render_json_patch from idom.core.hooks import COMPONENT_DID_RENDER_EFFECT, LifeCycleHook, current_hook from idom.core.layout import Layout -from idom.testing import HookCatcher, assert_idom_logged +from idom.core.serve import render_json_patch +from idom.testing import DisplayFixture, HookCatcher, assert_idom_logged, poll from idom.utils import Ref -from tests.assert_utils import assert_same_items +from tests.tooling.asserts import assert_same_items async def test_must_be_rendering_in_layout_to_use_hooks(): @@ -150,7 +150,7 @@ def Counter(): await layout.render() -def test_set_state_checks_identity_not_equality(driver, display, driver_wait): +async def test_set_state_checks_identity_not_equality(display: DisplayFixture): r_1 = idom.Ref("value") r_2 = idom.Ref("value") @@ -191,31 +191,34 @@ def TestComponent(): f"Last state: {'r_1' if state is r_1 else 'r_2'}", ) - display(TestComponent) + await display.show(TestComponent) - client_r_1_button = driver.find_element("id", "r_1") - client_r_2_button = driver.find_element("id", "r_2") + client_r_1_button = await display.page.wait_for_selector("#r_1") + client_r_2_button = await display.page.wait_for_selector("#r_2") + + poll_event_count = poll(lambda: event_count.current) + poll_render_count = poll(lambda: render_count.current) assert render_count.current == 1 assert event_count.current == 0 - client_r_1_button.click() + await client_r_1_button.click() - driver_wait.until(lambda d: event_count.current == 1) - driver_wait.until(lambda d: render_count.current == 1) + poll_event_count.until_equals(1) + poll_render_count.until_equals(1) - client_r_2_button.click() + await client_r_2_button.click() - driver_wait.until(lambda d: event_count.current == 2) - driver_wait.until(lambda d: render_count.current == 2) + poll_event_count.until_equals(2) + poll_render_count.until_equals(2) - client_r_2_button.click() + await client_r_2_button.click() - driver_wait.until(lambda d: event_count.current == 3) - driver_wait.until(lambda d: render_count.current == 2) + poll_event_count.until_equals(3) + poll_render_count.until_equals(2) -def test_simple_input_with_use_state(driver, display): +async def test_simple_input_with_use_state(display: DisplayFixture): message_ref = idom.Ref(None) @idom.component @@ -232,16 +235,16 @@ async def on_change(event): else: return idom.html.p({"id": "complete"}, ["Complete"]) - display(Input) + await display.show(Input) - button = driver.find_element("id", "input") - button.send_keys("this is a test") - driver.find_element("id", "complete") + button = await display.page.wait_for_selector("#input") + await button.type("this is a test") + await display.page.wait_for_selector("#complete") assert message_ref.current == "this is a test" -def test_double_set_state(driver, driver_wait, display): +async def test_double_set_state(display: DisplayFixture): @idom.component def SomeComponent(): state_1, set_state_1 = idom.hooks.use_state(0) @@ -252,29 +255,33 @@ def double_set_state(event): set_state_2(state_2 + 1) return idom.html.div( - idom.html.div({"id": "first", "value": state_1}, f"value is: {state_1}"), - idom.html.div({"id": "second", "value": state_2}, f"value is: {state_2}"), + idom.html.div( + {"id": "first", "data-value": state_1}, f"value is: {state_1}" + ), + idom.html.div( + {"id": "second", "data-value": state_2}, f"value is: {state_2}" + ), idom.html.button({"id": "button", "onClick": double_set_state}, "click me"), ) - display(SomeComponent) + await display.show(SomeComponent) - button = driver.find_element("id", "button") - first = driver.find_element("id", "first") - second = driver.find_element("id", "second") + button = await display.page.wait_for_selector("#button") + first = await display.page.wait_for_selector("#first") + second = await display.page.wait_for_selector("#second") - assert first.get_attribute("value") == "0" - assert second.get_attribute("value") == "0" + assert (await first.get_attribute("data-value")) == "0" + assert (await second.get_attribute("data-value")) == "0" - button.click() + await button.click() - assert driver_wait.until(lambda _: first.get_attribute("value") == "1") - assert driver_wait.until(lambda _: second.get_attribute("value") == "1") + assert (await first.get_attribute("data-value")) == "1" + assert (await second.get_attribute("data-value")) == "1" - button.click() + await button.click() - assert driver_wait.until(lambda _: first.get_attribute("value") == "2") - assert driver_wait.until(lambda _: second.get_attribute("value") == "2") + assert (await first.get_attribute("data-value")) == "2" + assert (await second.get_attribute("data-value")) == "2" async def test_use_effect_callback_occurs_after_full_render_is_complete(): @@ -832,16 +839,14 @@ def ComponentWithRef(): assert len(used_refs) == 2 -def test_bad_schedule_render_callback(caplog): +def test_bad_schedule_render_callback(): def bad_callback(): raise ValueError("something went wrong") - hook = LifeCycleHook(bad_callback) - - hook.schedule_render() - - first_log_line = next(iter(caplog.records)).msg.split("\n", 1)[0] - assert re.match(f"Failed to schedule render via {bad_callback}", first_log_line) + with assert_idom_logged( + match_message=f"Failed to schedule render via {bad_callback}" + ): + LifeCycleHook(bad_callback).schedule_render() async def test_use_effect_automatically_infers_closure_values(): diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index f0dbbb4d5..ddeb9f4ae 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -11,9 +11,9 @@ from idom import html from idom.config import IDOM_DEBUG_MODE from idom.core.component import component -from idom.core.dispatcher import render_json_patch from idom.core.hooks import use_effect, use_state from idom.core.layout import Layout, LayoutEvent +from idom.core.serve import render_json_patch from idom.testing import ( HookCatcher, StaticEventHandler, @@ -21,7 +21,7 @@ capture_idom_logs, ) from idom.utils import Ref -from tests.assert_utils import assert_same_items +from tests.tooling.asserts import assert_same_items @pytest.fixture(autouse=True) @@ -181,10 +181,7 @@ def OkChild(): def BadChild(): raise ValueError("error from bad child") - with assert_idom_logged( - match_error="error from bad child", - clear_matched_records=True, - ): + with assert_idom_logged(match_error="error from bad child"): with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) @@ -240,10 +237,7 @@ def OkChild(): def BadChild(): raise ValueError("error from bad child") - with assert_idom_logged( - match_error="error from bad child", - clear_matched_records=True, - ): + with assert_idom_logged(match_error="error from bad child"): with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) @@ -743,7 +737,6 @@ def ComponentReturnsDuplicateKeys(): with assert_idom_logged( error_type=ValueError, match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", - clear_matched_records=True, ): await layout.render() @@ -757,7 +750,6 @@ def ComponentReturnsDuplicateKeys(): with assert_idom_logged( error_type=ValueError, match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", - clear_matched_records=True, ): await layout.render() @@ -796,10 +788,7 @@ def raise_error(): return idom.html.button({"onClick": raise_error}) - with assert_idom_logged( - match_error="bad event handler", - clear_matched_records=True, - ): + with assert_idom_logged(match_error="bad event handler"): with idom.Layout(ComponentWithBadEventHandler()) as layout: await layout.render() @@ -807,7 +796,7 @@ def raise_error(): await layout.deliver(event) -async def test_schedule_render_from_unmounted_hook(caplog): +async def test_schedule_render_from_unmounted_hook(): parent_set_state = idom.Ref() @idom.component @@ -1233,7 +1222,6 @@ def bad_should_render(new): match_message=r".* component failed to check if .* should be rendered", error_type=ValueError, match_error="The error message", - clear_matched_records=True, ): with idom.Layout(Root()) as layout: await layout.render() diff --git a/tests/test_html.py b/tests/test_html.py index cc6521efa..c4d74d86b 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -1,11 +1,12 @@ import pytest from idom import component, config, html, use_state +from idom.testing import DisplayFixture, poll from idom.utils import Ref -def use_toggle(): - state, set_state = use_state(True) +def use_toggle(initial=True): + state, set_state = use_state(initial) return state, lambda: set_state(not state) @@ -14,20 +15,15 @@ def use_counter(initial_value): return state, lambda: set_state(state + 1) -def test_script_mount_unmount(driver, driver_wait, display): +async def test_script_mount_unmount(display: DisplayFixture): toggle_is_mounted = Ref() @component def Root(): is_mounted, toggle_is_mounted.current = use_toggle() - if is_mounted: - el = HasScript() - else: - el = html.div() - return html.div( html.div({"id": "mount-state", "data-value": False}), - el, + HasScript() if is_mounted else html.div(), ) @component @@ -43,22 +39,23 @@ def HasScript(): }""" ) - display(Root) + await display.show(Root) - mount_state = driver.find_element("id", "mount-state") + mount_state = await display.page.wait_for_selector("#mount-state", state="attached") + poll_mount_state = poll(mount_state.get_attribute, "data-value") - driver_wait.until(lambda d: mount_state.get_attribute("data-value") == "true") + await poll_mount_state.until_equals("true") toggle_is_mounted.current() - driver_wait.until(lambda d: mount_state.get_attribute("data-value") == "false") + await poll_mount_state.until_equals("false") toggle_is_mounted.current() - driver_wait.until(lambda d: mount_state.get_attribute("data-value") == "true") + await poll_mount_state.until_equals("true") -def test_script_re_run_on_content_change(driver, driver_wait, display): +async def test_script_re_run_on_content_change(display: DisplayFixture): incr_count = Ref() @component @@ -77,26 +74,31 @@ def HasScript(): ), ) - display(HasScript) + await display.show(HasScript) - mount_count = driver.find_element("id", "mount-count") - unmount_count = driver.find_element("id", "unmount-count") + mount_count = await display.page.wait_for_selector("#mount-count", state="attached") + poll_mount_count = poll(mount_count.get_attribute, "data-value") - driver_wait.until(lambda d: mount_count.get_attribute("data-value") == "1") - driver_wait.until(lambda d: unmount_count.get_attribute("data-value") == "0") + unmount_count = await display.page.wait_for_selector( + "#unmount-count", state="attached" + ) + poll_unmount_count = poll(unmount_count.get_attribute, "data-value") + + await poll_mount_count.until_equals("1") + await poll_unmount_count.until_equals("0") incr_count.current() - driver_wait.until(lambda d: mount_count.get_attribute("data-value") == "2") - driver_wait.until(lambda d: unmount_count.get_attribute("data-value") == "1") + await poll_mount_count.until_equals("2") + await poll_unmount_count.until_equals("1") incr_count.current() - driver_wait.until(lambda d: mount_count.get_attribute("data-value") == "3") - driver_wait.until(lambda d: unmount_count.get_attribute("data-value") == "2") + await poll_mount_count.until_equals("3") + await poll_unmount_count.until_equals("2") -def test_script_from_src(driver, driver_wait, display): +async def test_script_from_src(display: DisplayFixture): incr_src_id = Ref() file_name_template = "__some_js_script_{src_id}__.js" @@ -114,7 +116,7 @@ def HasScript(): ), ) - display(HasScript) + await display.show(HasScript) for i in range(1, 4): script_file = config.IDOM_WEB_MODULES_DIR.current / file_name_template.format( @@ -129,9 +131,9 @@ def HasScript(): incr_src_id.current() - run_count = driver.find_element("id", "run-count") - - driver_wait.until(lambda d: (run_count.get_attribute("data-value") == "1")) + run_count = await display.page.wait_for_selector("#run-count", state="attached") + poll_run_count = poll(run_count.get_attribute, "data-value") + await poll_run_count.until_equals("1") def test_script_may_only_have_one_child(): diff --git a/tests/test_sample.py b/tests/test_sample.py index be9135820..cc9f86dd1 100644 --- a/tests/test_sample.py +++ b/tests/test_sample.py @@ -1,15 +1,9 @@ -from idom.sample import run_sample_app -from idom.server.utils import find_available_port +from idom.sample import SampleApp +from idom.testing import DisplayFixture -def test_sample_app(driver): - host = "127.0.0.1" - port = find_available_port(host, allow_reuse_waiting_ports=False) +async def test_sample_app(display: DisplayFixture): + await display.show(SampleApp) - run_sample_app(host=host, port=port, run_in_thread=True) - - driver.get(f"http://{host}:{port}") - - h1 = driver.find_element("tag name", "h1") - - assert h1.get_attribute("innerHTML") == "Sample Application" + h1 = await display.page.wait_for_selector("h1") + assert (await h1.text_content()) == "Sample Application" diff --git a/tests/test_server/test_common.py b/tests/test_server/test_common.py new file mode 100644 index 000000000..ea0850ce9 --- /dev/null +++ b/tests/test_server/test_common.py @@ -0,0 +1,77 @@ +from typing import MutableMapping + +import pytest + +import idom +from idom import html +from idom.server import default as default_implementation +from idom.server.utils import all_implementations +from idom.testing import DisplayFixture, ServerFixture, poll + + +@pytest.fixture( + params=list(all_implementations()) + [default_implementation], + ids=lambda imp: imp.__name__, + scope="module", +) +async def display(page, request): + async with ServerFixture(implementation=request.param) as server: + async with DisplayFixture(server=server, driver=page) as display: + yield display + + +async def test_display_simple_hello_world(display: DisplayFixture): + @idom.component + def Hello(): + return idom.html.p({"id": "hello"}, ["Hello World"]) + + await display.show(Hello) + + await display.page.wait_for_selector("#hello") + + # test that we can reconnect succefully + await display.page.reload() + + await display.page.wait_for_selector("#hello") + + +async def test_display_simple_click_counter(display: DisplayFixture): + @idom.component + def Counter(): + count, set_count = idom.hooks.use_state(0) + return idom.html.button( + { + "id": "counter", + "onClick": lambda event: set_count(lambda old_count: old_count + 1), + }, + f"Count: {count}", + ) + + await display.show(Counter) + + counter = await display.page.wait_for_selector("#counter") + + for i in range(5): + await poll(counter.text_content).until_equals(f"Count: {i}") + await counter.click() + + +async def test_module_from_template(display: DisplayFixture): + victory = idom.web.module_from_template("react", "victory-bar@35.4.0") + VictoryBar = idom.web.export(victory, "VictoryBar") + await display.show(VictoryBar) + await display.page.wait_for_selector(".VictoryContainer") + + +async def test_use_scope(display: DisplayFixture): + scope = idom.Ref() + + @idom.component + def ShowScope(): + scope.current = display.server.implementation.use_scope() + return html.pre({"id": "scope"}, str(scope.current)) + + await display.show(ShowScope) + + await display.page.wait_for_selector("#scope") + assert isinstance(scope.current, MutableMapping) diff --git a/tests/test_server/test_common/test_multiview.py b/tests/test_server/test_common/test_multiview.py deleted file mode 100644 index 56c2deaf8..000000000 --- a/tests/test_server/test_common/test_multiview.py +++ /dev/null @@ -1,58 +0,0 @@ -import pytest - -import idom -from idom.server import fastapi as idom_fastapi -from idom.server import flask as idom_flask -from idom.server import sanic as idom_sanic -from idom.server import starlette as idom_starlette -from idom.server import tornado as idom_tornado -from idom.server.prefab import multiview_server -from idom.testing import ServerMountPoint -from tests.driver_utils import no_such_element - - -@pytest.fixture( - params=[ - # add new PerClientStateServer implementations here to - # run a suite of tests which check basic functionality - idom_fastapi.PerClientStateServer, - idom_flask.PerClientStateServer, - idom_sanic.PerClientStateServer, - idom_starlette.PerClientStateServer, - idom_tornado.PerClientStateServer, - ], - ids=lambda cls: f"{cls.__module__}.{cls.__name__}", -) -def server_mount_point(request): - with ServerMountPoint( - request.param, - mount_and_server_constructor=multiview_server, - ) as mount_point: - yield mount_point - - -def test_multiview_server(driver_get, driver, server_mount_point): - manual_id = server_mount_point.mount.add( - "manually_set_id", - lambda: idom.html.h1({"id": "e1"}, ["e1"]), - ) - auto_view_id = server_mount_point.mount.add( - None, - lambda: idom.html.h1({"id": "e2"}, ["e2"]), - ) - - driver_get({"view_id": manual_id}) - driver.find_element("id", "e1") - - driver_get({"view_id": auto_view_id}) - driver.find_element("id", "e2") - - server_mount_point.mount.remove(auto_view_id) - server_mount_point.mount.remove(manual_id) - - driver.refresh() - - assert no_such_element(driver, "id", "e1") - assert no_such_element(driver, "id", "e2") - - server_mount_point.log_records.clear() diff --git a/tests/test_server/test_common/test_per_client_state.py b/tests/test_server/test_common/test_per_client_state.py deleted file mode 100644 index 29bd2f26f..000000000 --- a/tests/test_server/test_common/test_per_client_state.py +++ /dev/null @@ -1,74 +0,0 @@ -import pytest - -import idom -from idom.server import fastapi as idom_fastapi -from idom.server import flask as idom_flask -from idom.server import sanic as idom_sanic -from idom.server import starlette as idom_starlette -from idom.server import tornado as idom_tornado -from idom.testing import ServerMountPoint - - -@pytest.fixture( - params=[ - # add new PerClientStateServer implementations here to - # run a suite of tests which check basic functionality - idom_fastapi.PerClientStateServer, - idom_flask.PerClientStateServer, - idom_sanic.PerClientStateServer, - idom_starlette.PerClientStateServer, - idom_tornado.PerClientStateServer, - ], - ids=lambda cls: f"{cls.__module__}.{cls.__name__}", -) -def server_mount_point(request): - with ServerMountPoint(request.param) as mount_point: - yield mount_point - - -def test_display_simple_hello_world(driver, display): - @idom.component - def Hello(): - return idom.html.p({"id": "hello"}, ["Hello World"]) - - display(Hello) - - assert driver.find_element("id", "hello") - - # test that we can reconnect succefully - driver.refresh() - - assert driver.find_element("id", "hello") - - -def test_display_simple_click_counter(driver, driver_wait, display): - def increment(count): - return count + 1 - - @idom.component - def Counter(): - count, set_count = idom.hooks.use_state(0) - return idom.html.button( - { - "id": "counter", - "onClick": lambda event: set_count(increment), - }, - f"Count: {count}", - ) - - display(Counter) - - client_counter = driver.find_element("id", "counter") - - for i in range(3): - driver_wait.until( - lambda driver: client_counter.get_attribute("innerHTML") == f"Count: {i}" - ) - client_counter.click() - - -def test_module_from_template(driver, display): - victory = idom.web.module_from_template("react", "victory-bar@35.4.0") - VictoryBar = idom.web.export(victory, "VictoryBar") - display(VictoryBar) - driver.find_element_by_class_name("VictoryContainer") diff --git a/tests/test_server/test_common/test_shared_state_client.py b/tests/test_server/test_common/test_shared_state_client.py deleted file mode 100644 index 440e73d07..000000000 --- a/tests/test_server/test_common/test_shared_state_client.py +++ /dev/null @@ -1,125 +0,0 @@ -from threading import Event -from weakref import finalize - -import pytest - -import idom -from idom.server import fastapi as idom_fastapi -from idom.server import sanic as idom_sanic -from idom.server import starlette as idom_starlette -from idom.testing import ServerMountPoint - - -@pytest.fixture( - params=[ - # add new SharedClientStateServer implementations here to - # run a suite of tests which check basic functionality - idom_sanic.SharedClientStateServer, - idom_fastapi.SharedClientStateServer, - idom_starlette.SharedClientStateServer, - ], - ids=lambda cls: f"{cls.__module__}.{cls.__name__}", -) -def server_mount_point(request): - with ServerMountPoint(request.param, sync_views=True) as mount_point: - yield mount_point - - -def test_shared_client_state(create_driver, server_mount_point): - was_garbage_collected = Event() - - @idom.component - def IncrCounter(): - count, set_count = idom.hooks.use_state(0) - - def incr_on_click(event): - set_count(count + 1) - - button = idom.html.button( - {"onClick": incr_on_click, "id": "incr-button"}, "click to increment" - ) - - counter = Counter(count) - finalize(counter, was_garbage_collected.set) - - return idom.html.div(button, counter) - - @idom.component - def Counter(count): - return idom.html.div({"id": f"count-is-{count}"}, count) - - server_mount_point.mount(IncrCounter) - - driver_1 = create_driver() - driver_2 = create_driver() - - driver_1.get(server_mount_point.url()) - driver_2.get(server_mount_point.url()) - - client_1_button = driver_1.find_element("id", "incr-button") - client_2_button = driver_2.find_element("id", "incr-button") - - driver_1.find_element("id", "count-is-0") - driver_2.find_element("id", "count-is-0") - - client_1_button.click() - - driver_1.find_element("id", "count-is-1") - driver_2.find_element("id", "count-is-1") - - client_2_button.click() - - driver_1.find_element("id", "count-is-2") - driver_2.find_element("id", "count-is-2") - - assert was_garbage_collected.wait(1) - was_garbage_collected.clear() - - # Ensure this continues working after a refresh. In the past dispatchers failed to - # exit when the connections closed. This was due to an expected error that is raised - # when the web socket closes. - driver_1.refresh() - driver_2.refresh() - - client_1_button = driver_1.find_element("id", "incr-button") - client_2_button = driver_2.find_element("id", "incr-button") - - client_1_button.click() - - driver_1.find_element("id", "count-is-3") - driver_2.find_element("id", "count-is-3") - - client_1_button.click() - - driver_1.find_element("id", "count-is-4") - driver_2.find_element("id", "count-is-4") - - client_2_button.click() - - assert was_garbage_collected.wait(1) - - -def test_shared_client_state_server_does_not_support_per_client_parameters( - driver_get, - driver_wait, - server_mount_point, -): - driver_get( - { - "per_client_param": 1, - # we need to stop reconnect attempts to prevent the error from happening - # more than once - "noReconnect": True, - } - ) - - driver_wait.until( - lambda driver: ( - len( - server_mount_point.list_logged_exceptions( - "does not support per-client view parameters", ValueError - ) - ) - == 1 - ) - ) diff --git a/tests/test_server/test_utils.py b/tests/test_server/test_utils.py index 11e5da089..a24d607af 100644 --- a/tests/test_server/test_utils.py +++ b/tests/test_server/test_utils.py @@ -1,22 +1,22 @@ -from threading import Event +import asyncio +import threading +import time +from contextlib import ExitStack import pytest +from playwright.async_api import Page -from idom.server.utils import find_available_port, poll, wait_on_event +from idom.sample import SampleApp as SampleApp +from idom.server import flask as flask_implementation +from idom.server.utils import find_available_port +from idom.server.utils import run as sync_run +from tests.tooling.loop import open_event_loop -def test_poll(): - with pytest.raises(TimeoutError, match="Did not do something within 0.1 seconds"): - poll("do something", 0.01, 0.1, lambda: False) - poll("do something", 0.01, None, [True, False, False].pop) - - -def test_wait_on_event(): - event = Event() - with pytest.raises(TimeoutError, match="Did not do something within 0.1 seconds"): - wait_on_event("do something", event, 0.1) - event.set() - wait_on_event("do something", event, None) +@pytest.fixture +def exit_stack(): + with ExitStack() as es: + yield es def test_find_available_port(): @@ -24,3 +24,28 @@ def test_find_available_port(): with pytest.raises(RuntimeError, match="no available port"): # check that if port range is exhausted we raise find_available_port("localhost", port_min=0, port_max=0) + + +async def test_run(page: Page, exit_stack: ExitStack): + loop = exit_stack.enter_context(open_event_loop(as_current=False)) + + host = "127.0.0.1" + port = find_available_port(host) + url = f"http://{host}:{port}" + + def run_in_thread(): + asyncio.set_event_loop(loop) + sync_run( + SampleApp, + host, + port, + implementation=flask_implementation, + ) + + threading.Thread(target=run_in_thread, daemon=True).start() + + # give the server a moment to start + time.sleep(0.5) + + await page.goto(url) + await page.wait_for_selector("#sample") diff --git a/tests/test_testing.py b/tests/test_testing.py index 8c7529bcd..abd738643 100644 --- a/tests/test_testing.py +++ b/tests/test_testing.py @@ -1,9 +1,12 @@ import logging +import os import pytest from idom import testing -from idom.log import ROOT_LOGGER +from idom.logging import ROOT_LOGGER +from idom.sample import SampleApp as SampleApp +from idom.server import starlette as starlette_implementation def test_assert_idom_logged_does_not_supress_errors(): @@ -123,3 +126,39 @@ def test_assert_idom_did_not_log(): raise Exception("something") except Exception: ROOT_LOGGER.exception("something") + + +async def test_simple_display_fixture(): + if os.name == "nt": + pytest.skip("Browser tests not supported on Windows") + async with testing.DisplayFixture() as display: + await display.show(SampleApp) + await display.page.wait_for_selector("#sample") + + +def test_if_app_is_given_implementation_must_be_too(): + with pytest.raises( + ValueError, + match=r"If an application instance its corresponding server implementation must be provided too", + ): + testing.ServerFixture(app=starlette_implementation.create_development_app()) + + testing.ServerFixture( + app=starlette_implementation.create_development_app(), + implementation=starlette_implementation, + ) + + +def test_list_logged_excptions(): + the_error = None + with testing.capture_idom_logs() as records: + ROOT_LOGGER.info("A non-error log message") + + try: + raise ValueError("An error for testing") + except Exception as error: + ROOT_LOGGER.exception("Log the error") + the_error = error + + logged_errors = testing.logs.list_logged_exceptions(records) + assert logged_errors == [the_error] diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 1e31f5d0a..3f192cf11 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -2,20 +2,23 @@ import pytest from sanic import Sanic -from selenium.webdriver.common.by import By -from selenium.webdriver.support import expected_conditions -from selenium.webdriver.support.ui import WebDriverWait import idom -from idom.server.sanic import PerClientStateServer -from idom.testing import ServerMountPoint, assert_idom_did_not_log, assert_idom_logged +from idom.server import sanic as sanic_implementation +from idom.testing import ( + DisplayFixture, + ServerFixture, + assert_idom_did_not_log, + assert_idom_logged, + poll, +) from idom.web.module import NAME_SOURCE, WebModule JS_FIXTURES_DIR = Path(__file__).parent / "js_fixtures" -def test_that_js_module_unmount_is_called(driver, display): +async def test_that_js_module_unmount_is_called(display: DisplayFixture): SomeComponent = idom.web.export( idom.web.module_from_file( "set-flag-when-unmount-is-called", @@ -33,23 +36,23 @@ def ShowCurrentComponent(): ) return current_component - display(ShowCurrentComponent) + await display.show(ShowCurrentComponent) - driver.find_element("id", "some-component") + await display.page.wait_for_selector("#some-component", state="attached") set_current_component.current( idom.html.h1({"id": "some-other-component"}, "some other component") ) # the new component has been displayed - driver.find_element("id", "some-other-component") + await display.page.wait_for_selector("#some-other-component", state="attached") # the unmount callback for the old component was called - driver.find_element("id", "unmount-flag") + await display.page.wait_for_selector("#unmount-flag", state="attached") -def test_module_from_url(driver): - app = Sanic(__name__) +async def test_module_from_url(browser): + app = Sanic("test_module_from_url") # instead of directing the URL to a CDN, we just point it to this static file app.static( @@ -67,10 +70,11 @@ def test_module_from_url(driver): def ShowSimpleButton(): return SimpleButton({"id": "my-button"}) - with ServerMountPoint(PerClientStateServer, app=app) as mount_point: - mount_point.mount(ShowSimpleButton) - driver.get(mount_point.url()) - driver.find_element("id", "my-button") + async with ServerFixture(app=app, implementation=sanic_implementation) as server: + async with DisplayFixture(server, browser) as display: + await display.show(ShowSimpleButton) + + await display.page.wait_for_selector("#my-button") def test_module_from_template_where_template_does_not_exist(): @@ -78,19 +82,15 @@ def test_module_from_template_where_template_does_not_exist(): idom.web.module_from_template("does-not-exist", "something.js") -def test_module_from_template(driver, display): +async def test_module_from_template(display: DisplayFixture): victory = idom.web.module_from_template("react", "victory-bar@35.4.0") VictoryBar = idom.web.export(victory, "VictoryBar") - display(VictoryBar) - wait = WebDriverWait(driver, 10) - wait.until( - expected_conditions.visibility_of_element_located( - (By.CLASS_NAME, "VictoryContainer") - ) - ) + await display.show(VictoryBar) + + await display.page.wait_for_selector(".VictoryContainer") -def test_module_from_file(driver, driver_wait, display): +async def test_module_from_file(display: DisplayFixture): SimpleButton = idom.web.export( idom.web.module_from_file( "simple-button", JS_FIXTURES_DIR / "simple-button.js" @@ -106,11 +106,11 @@ def ShowSimpleButton(): {"id": "my-button", "onClick": lambda event: is_clicked.set_current(True)} ) - display(ShowSimpleButton) + await display.show(ShowSimpleButton) - button = driver.find_element("id", "my-button") - button.click() - driver_wait.until(lambda d: is_clicked.current) + button = await display.page.wait_for_selector("#my-button") + await button.click() + poll(lambda: is_clicked.current).until_is(True) def test_module_from_file_source_conflict(tmp_path): @@ -188,7 +188,7 @@ def test_module_missing_exports(): idom.web.export(module, ["x", "y"]) -def test_module_exports_multiple_components(driver, display): +async def test_module_exports_multiple_components(display: DisplayFixture): Header1, Header2 = idom.web.export( idom.web.module_from_file( "exports-two-components", JS_FIXTURES_DIR / "exports-two-components.js" @@ -196,22 +196,22 @@ def test_module_exports_multiple_components(driver, display): ["Header1", "Header2"], ) - display(lambda: Header1({"id": "my-h1"}, "My Header 1")) + await display.show(lambda: Header1({"id": "my-h1"}, "My Header 1")) - driver.find_element("id", "my-h1") + await display.page.wait_for_selector("#my-h1", state="attached") - display(lambda: Header2({"id": "my-h2"}, "My Header 2")) + await display.show(lambda: Header2({"id": "my-h2"}, "My Header 2")) - driver.find_element("id", "my-h2") + await display.page.wait_for_selector("#my-h2", state="attached") -def test_imported_components_can_render_children(driver, display): +async def test_imported_components_can_render_children(display: DisplayFixture): module = idom.web.module_from_file( "component-can-have-child", JS_FIXTURES_DIR / "component-can-have-child.js" ) Parent, Child = idom.web.export(module, ["Parent", "Child"]) - display( + await display.show( lambda: Parent( Child({"index": 1}), Child({"index": 2}), @@ -219,13 +219,13 @@ def test_imported_components_can_render_children(driver, display): ) ) - parent = driver.find_element("id", "the-parent") - children = parent.find_elements("tag name", "li") + parent = await display.page.wait_for_selector("#the-parent", state="attached") + children = await parent.query_selector_all("li") assert len(children) == 3 for index, child in enumerate(children): - assert child.get_attribute("id") == f"child-{index + 1}" + assert (await child.get_attribute("id")) == f"child-{index + 1}" def test_module_from_string(): diff --git a/tests/test_web/test_utils.py b/tests/test_web/test_utils.py index ce6badf2b..5286db53d 100644 --- a/tests/test_web/test_utils.py +++ b/tests/test_web/test_utils.py @@ -3,6 +3,7 @@ import pytest import responses +from idom.testing import assert_idom_logged from idom.web.utils import ( module_name_suffix, resolve_module_exports_from_file, @@ -145,9 +146,8 @@ def test_resolve_module_exports_from_source(): ) and references == {"https://source1.com", "https://source2.com"} -def test_log_on_unknown_export_type(caplog): - assert resolve_module_exports_from_source( - "export something unknown;", exclude_default=False - ) == (set(), set()) - assert len(caplog.records) == 1 - assert caplog.records[0].message.startswith("Unknown export type ") +def test_log_on_unknown_export_type(): + with assert_idom_logged(match_message="Unknown export type "): + assert resolve_module_exports_from_source( + "export something unknown;", exclude_default=False + ) == (set(), set()) diff --git a/tests/test_widgets.py b/tests/test_widgets.py index 269dec0ef..ab8d99f99 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -1,20 +1,14 @@ from base64 import b64encode from pathlib import Path -from selenium.webdriver.common.keys import Keys - import idom -from tests.driver_utils import send_keys +from idom.testing import DisplayFixture, poll HERE = Path(__file__).parent -def test_multiview_repr(): - assert str(idom.widgets.MultiViewMount({})) == "MultiViewMount({})" - - -def test_hostwap_update_on_change(driver, display): +async def test_hostwap_update_on_change(display: DisplayFixture): """Ensure shared hotswapping works This basically means that previously rendered views of a hotswap component get updated @@ -48,15 +42,15 @@ async def on_click(event): return idom.html.div(incr, hotswap_view) - display(ButtonSwapsDivs) + await display.show(ButtonSwapsDivs) - client_incr_button = driver.find_element("id", "incr-button") + client_incr_button = await display.page.wait_for_selector("#incr-button") - driver.find_element("id", "hotswap-1") - client_incr_button.click() - driver.find_element("id", "hotswap-2") - client_incr_button.click() - driver.find_element("id", "hotswap-3") + await display.page.wait_for_selector("#hotswap-1") + await client_incr_button.click() + await display.page.wait_for_selector("#hotswap-2") + await client_incr_button.click() + await display.page.wait_for_selector("#hotswap-3") IMAGE_SRC_BYTES = b""" @@ -67,43 +61,44 @@ async def on_click(event): BASE64_IMAGE_SRC = b64encode(IMAGE_SRC_BYTES).decode() -def test_image_from_string(driver, display): +async def test_image_from_string(display: DisplayFixture): src = IMAGE_SRC_BYTES.decode() - display(lambda: idom.widgets.image("svg", src, {"id": "a-circle-1"})) - client_img = driver.find_element("id", "a-circle-1") - assert BASE64_IMAGE_SRC in client_img.get_attribute("src") + await display.show(lambda: idom.widgets.image("svg", src, {"id": "a-circle-1"})) + client_img = await display.page.wait_for_selector("#a-circle-1") + assert BASE64_IMAGE_SRC in (await client_img.get_attribute("src")) -def test_image_from_bytes(driver, display): +async def test_image_from_bytes(display: DisplayFixture): src = IMAGE_SRC_BYTES - display(lambda: idom.widgets.image("svg", src, {"id": "a-circle-1"})) - client_img = driver.find_element("id", "a-circle-1") - assert BASE64_IMAGE_SRC in client_img.get_attribute("src") + await display.show(lambda: idom.widgets.image("svg", src, {"id": "a-circle-1"})) + client_img = await display.page.wait_for_selector("#a-circle-1") + assert BASE64_IMAGE_SRC in (await client_img.get_attribute("src")) -def test_use_linked_inputs(driver, driver_wait, display): +async def test_use_linked_inputs(display: DisplayFixture): @idom.component def SomeComponent(): i_1, i_2 = idom.widgets.use_linked_inputs([{"id": "i_1"}, {"id": "i_2"}]) return idom.html.div(i_1, i_2) - display(SomeComponent) + await display.show(SomeComponent) - input_1 = driver.find_element("id", "i_1") - input_2 = driver.find_element("id", "i_2") + input_1 = await display.page.wait_for_selector("#i_1") + input_2 = await display.page.wait_for_selector("#i_2") - send_keys(input_1, "hello") + await input_1.type("hello", delay=20) - driver_wait.until(lambda d: input_1.get_attribute("value") == "hello") - driver_wait.until(lambda d: input_2.get_attribute("value") == "hello") + assert (await input_1.evaluate("e => e.value")) == "hello" + assert (await input_2.evaluate("e => e.value")) == "hello" - send_keys(input_2, " world") + await input_2.focus() + await input_2.type(" world", delay=20) - driver_wait.until(lambda d: input_1.get_attribute("value") == "hello world") - driver_wait.until(lambda d: input_2.get_attribute("value") == "hello world") + assert (await input_1.evaluate("e => e.value")) == "hello world" + assert (await input_2.evaluate("e => e.value")) == "hello world" -def test_use_linked_inputs_on_change(driver, driver_wait, display): +async def test_use_linked_inputs_on_change(display: DisplayFixture): value = idom.Ref(None) @idom.component @@ -114,21 +109,24 @@ def SomeComponent(): ) return idom.html.div(i_1, i_2) - display(SomeComponent) + await display.show(SomeComponent) - input_1 = driver.find_element("id", "i_1") - input_2 = driver.find_element("id", "i_2") + input_1 = await display.page.wait_for_selector("#i_1") + input_2 = await display.page.wait_for_selector("#i_2") - send_keys(input_1, "hello") + await input_1.type("hello", delay=20) - driver_wait.until(lambda d: value.current == "hello") + poll_value = poll(lambda: value.current) - send_keys(input_2, " world") + poll_value.until_equals("hello") - driver_wait.until(lambda d: value.current == "hello world") + await input_2.focus() + await input_2.type(" world", delay=20) + poll_value.until_equals("hello world") -def test_use_linked_inputs_on_change_with_cast(driver, driver_wait, display): + +async def test_use_linked_inputs_on_change_with_cast(display: DisplayFixture): value = idom.Ref(None) @idom.component @@ -138,21 +136,24 @@ def SomeComponent(): ) return idom.html.div(i_1, i_2) - display(SomeComponent) + await display.show(SomeComponent) + + input_1 = await display.page.wait_for_selector("#i_1") + input_2 = await display.page.wait_for_selector("#i_2") - input_1 = driver.find_element("id", "i_1") - input_2 = driver.find_element("id", "i_2") + await input_1.type("1") - send_keys(input_1, "1") + poll_value = poll(lambda: value.current) - driver_wait.until(lambda d: value.current == 1) + poll_value.until_equals(1) - send_keys(input_2, "2") + await input_2.focus() + await input_2.type("2") - driver_wait.until(lambda d: value.current == 12) + poll_value.until_equals(12) -def test_use_linked_inputs_ignore_empty(driver, driver_wait, display): +async def test_use_linked_inputs_ignore_empty(display: DisplayFixture): value = idom.Ref(None) @idom.component @@ -164,19 +165,22 @@ def SomeComponent(): ) return idom.html.div(i_1, i_2) - display(SomeComponent) + await display.show(SomeComponent) + + input_1 = await display.page.wait_for_selector("#i_1") + input_2 = await display.page.wait_for_selector("#i_2") - input_1 = driver.find_element("id", "i_1") - input_2 = driver.find_element("id", "i_2") + await input_1.type("1") - send_keys(input_1, "1") + poll_value = poll(lambda: value.current) - driver_wait.until(lambda d: value.current == "1") + poll_value.until_equals("1") - send_keys(input_2, Keys.BACKSPACE) + await input_2.focus() + await input_2.press("Backspace") - assert value.current == "1" + poll_value.until_equals("1") - send_keys(input_1, "2") + await input_1.type("2") - driver_wait.until(lambda d: value.current == "2") + poll_value.until_equals("2") diff --git a/tests/test_server/test_common/__init__.py b/tests/tooling/__init__.py similarity index 100% rename from tests/test_server/test_common/__init__.py rename to tests/tooling/__init__.py diff --git a/tests/assert_utils.py b/tests/tooling/asserts.py similarity index 100% rename from tests/assert_utils.py rename to tests/tooling/asserts.py diff --git a/tests/tooling/loop.py b/tests/tooling/loop.py new file mode 100644 index 000000000..9b872f1fa --- /dev/null +++ b/tests/tooling/loop.py @@ -0,0 +1,83 @@ +import asyncio +import sys +import threading +from asyncio import wait_for +from contextlib import contextmanager +from typing import Iterator + +from idom.testing import poll + + +TIMEOUT = 3 + + +@contextmanager +def open_event_loop(as_current: bool = True) -> Iterator[asyncio.AbstractEventLoop]: + """Open a new event loop and cleanly stop it + + Args: + as_current: whether to make this loop the current loop in this thread + """ + loop = asyncio.new_event_loop() + try: + if as_current: + asyncio.set_event_loop(loop) + loop.set_debug(True) + yield loop + finally: + try: + _cancel_all_tasks(loop, as_current) + if as_current: + loop.run_until_complete(wait_for(loop.shutdown_asyncgens(), TIMEOUT)) + if sys.version_info >= (3, 9): + # shutdown_default_executor only available in Python 3.9+ + loop.run_until_complete( + wait_for(loop.shutdown_default_executor(), TIMEOUT) + ) + finally: + if as_current: + asyncio.set_event_loop(None) + poll(loop.is_running).until_is(False) + loop.close() + + +def _cancel_all_tasks(loop: asyncio.AbstractEventLoop, is_current: bool) -> None: + to_cancel = asyncio.all_tasks(loop) + if not to_cancel: + return + + done = threading.Event() + count = len(to_cancel) + + def one_task_finished(future): + nonlocal count + count -= 1 + if count == 0: + done.set() + + for task in to_cancel: + loop.call_soon_threadsafe(task.cancel) + task.add_done_callback(one_task_finished) + + if is_current: + loop.run_until_complete( + wait_for( + asyncio.gather(*to_cancel, loop=loop, return_exceptions=True), TIMEOUT + ) + ) + else: + # user was responsible for cancelling all tasks + if not done.wait(timeout=3): + raise TimeoutError("Could not stop event loop in time") + + for task in to_cancel: + if task.cancelled(): + continue + if task.exception() is not None: + loop.call_exception_handler( + { + "message": "unhandled exception during event loop shutdown", + "exception": task.exception(), + "task": task, + } + ) From 6708394885f8dd8f288b6088330f4d1b2414128b Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 27 Mar 2022 17:48:03 -0700 Subject: [PATCH 053/253] version 0.38.0-a1 --- VERSION | 2 +- docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 6 ++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index 8570a3aeb..e75fdb24d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.37.2 +0.38.0-a1 diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 33bdecfcd..39d31346f 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.37.2", + "version": "0.38.0-a1", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index f4bbab94a..ef9052d0c 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,12 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +Nothing yet... + + +0.38.0-a1 +--------- + Changed: - How IDOM integrates with servers - :pull:`703` diff --git a/src/client/package-lock.json b/src/client/package-lock.json index fec0a5e33..4e57908b5 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.37.2", + "version": "0.38.0-a1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.37.2", + "version": "0.38.0-a1", "license": "MIT", "workspaces": [ "./packages/*" @@ -2632,7 +2632,7 @@ "dev": true }, "packages/idom-app-react": { - "version": "0.37.2", + "version": "0.38.0-a1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -2649,7 +2649,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.37.2", + "version": "0.38.0-a1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 1884d7ff2..b43811161 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.37.2", + "version": "0.38.0-a1", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 30ce8aa5c..d03873d95 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -21,5 +21,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.37.2" + "version": "0.38.0-a1" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index e4b08beff..342311647 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.37.2" + "version": "0.38.0-a1" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 336f3332f..8fd4da745 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -21,7 +21,7 @@ __author__ = "idom-team" -__version__ = "0.37.2" # DO NOT MODIFY +__version__ = "0.38.0-a1" # DO NOT MODIFY __all__ = [ "component", From 1d4d94204010b0964e352702cec98e3328bd1622 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 31 Mar 2022 13:38:18 -0700 Subject: [PATCH 054/253] sort main first in docs --- docs/source/_exts/idom_example.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/_exts/idom_example.py b/docs/source/_exts/idom_example.py index 686734392..ba89e1809 100644 --- a/docs/source/_exts/idom_example.py +++ b/docs/source/_exts/idom_example.py @@ -59,7 +59,9 @@ def run(self): ) ) else: - for path in sorted(ex_files, key=lambda p: p.name): + for path in sorted( + ex_files, key=lambda p: "" if p.name == "main.py" else p.name + ): labeled_tab_items.append( ( path.name, From e43bcc00fefb474d82b663e45e84b043f6827d0b Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 7 Apr 2022 19:54:10 -0700 Subject: [PATCH 055/253] Implement use_location (#721) * experiment with bundling * get starlette and tornado to work * get sanic and flask to work still need to rework how modules are accessed * refine routing + fix bugs * fix cov * add use_request back * remove unused imports * fix test, not sure why it broke * handle unsafe user provided paths * increase default testing timeout * ignore untyped func * rework as location object * fix tornado * upgrade snowpack * always poll async if we poll sync then the server might not ever get a hold of the event loop. this was causing a problem for the sanic server in a test * test traversal_safe_path * add comment about catch * remove unused imports * symlinks are ok in traversal_safe_path * fix docs * refine docstring --- docs/app.py | 10 +- docs/examples.py | 2 +- docs/source/about/changelog.rst | 29 +- .../_static/embed-idom-view/index.html | 35 +- .../guides/getting-started/running-idom.rst | 12 +- noxfile.py | 3 + requirements/pkg-deps.txt | 4 +- requirements/pkg-extras.txt | 4 +- src/client/package-lock.json | 5163 +++++++++++++++-- src/client/package.json | 2 +- .../packages/idom-app-react/package-lock.json | 65 + .../packages/idom-app-react/package.json | 3 +- .../packages/idom-app-react/src/index.js | 1 - .../packages/idom-client-react/src/server.js | 20 +- .../{ => public}/idom-logo-square-small.svg | 0 src/client/{ => public}/index.html | 4 +- src/client/snowpack.config.js | 6 + src/idom/config.py | 7 + src/idom/server/default.py | 8 +- src/idom/server/fastapi.py | 4 + src/idom/server/flask.py | 171 +- src/idom/server/sanic.py | 102 +- src/idom/server/starlette.py | 86 +- src/idom/server/tornado.py | 99 +- src/idom/server/types.py | 19 + src/idom/server/utils.py | 35 +- src/idom/testing/common.py | 100 +- src/idom/testing/display.py | 6 +- src/idom/types.py | 3 +- temp.py | 11 + tests/conftest.py | 3 +- tests/test_core/test_events.py | 2 +- tests/test_core/test_hooks.py | 12 +- tests/test_html.py | 2 +- tests/test_server/test_common.py | 30 + tests/test_server/test_utils.py | 14 + tests/test_web/test_module.py | 2 +- tests/test_widgets.py | 16 +- tests/tooling/loop.py | 12 +- 39 files changed, 5449 insertions(+), 658 deletions(-) create mode 100644 src/client/packages/idom-app-react/package-lock.json rename src/client/{ => public}/idom-logo-square-small.svg (100%) rename src/client/{ => public}/index.html (62%) create mode 100644 temp.py diff --git a/docs/app.py b/docs/app.py index c51095ee2..dfdf98040 100644 --- a/docs/app.py +++ b/docs/app.py @@ -8,7 +8,7 @@ from idom.core.types import ComponentConstructor from idom.server.sanic import Options, configure, use_request -from .examples import load_examples +from .examples import get_normalized_example_name, load_examples HERE = Path(__file__).parent @@ -26,10 +26,7 @@ def run(): configure( app, Example(), - Options( - redirect_root=False, - url_prefix=IDOM_MODEL_SERVER_URL_PREFIX, - ), + Options(url_prefix=IDOM_MODEL_SERVER_URL_PREFIX), ) app.run( @@ -42,7 +39,8 @@ def run(): @component def Example(): - view_id = use_request().get_args().get("view_id") + raw_view_id = use_request().get_args().get("view_id") + view_id = get_normalized_example_name(raw_view_id) return _get_examples()[view_id]() diff --git a/docs/examples.py b/docs/examples.py index b61e7295e..7b9a5160a 100644 --- a/docs/examples.py +++ b/docs/examples.py @@ -133,7 +133,7 @@ def _get_root_example_path_by_name(name: str, relative_to: str | Path | None) -> rel_path = rel_path.parent if rel_path.is_file() else rel_path else: rel_path = SOURCE_DIR - return rel_path.joinpath(*name.split("/")) + return rel_path.joinpath(*name.split("/")).resolve() class _PrintBuffer: diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index ef9052d0c..352178dc8 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,34 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -Nothing yet... +Added: + +- Implement ``use_location()`` hook - :pull:`721` + + Navigating to any route below the root of the application will be reflected in the + ``location.pathname``. This operates in concert with how IDOM's configured routes have + changed. This will ultimately work towards resolving :issue:`569`. + +Changed: + +- The routes IDOM configures on apps have changed - :pull:`721` + + .. code-block:: text + + prefix/_api/modules/* web modules + prefix/_api/stream websocket endpoint + prefix/* client react app + + This means that IDOM's client app is available at any route below the configured + ``url_prefix`` besides ``prefix/_api``. The ``_api`` route will likely remain a route + which is reserved by IDOM. The route navigated to below the ``prefix`` will be shown + in ``use_location``. + +- IDOM's client now uses Preact instead of React - :pull:`721` + +Removed: + +- ``redirect_root`` server option - :pull:`721` 0.38.0-a1 diff --git a/docs/source/guides/getting-started/_static/embed-idom-view/index.html b/docs/source/guides/getting-started/_static/embed-idom-view/index.html index 3080e1d5d..9488a91a3 100644 --- a/docs/source/guides/getting-started/_static/embed-idom-view/index.html +++ b/docs/source/guides/getting-started/_static/embed-idom-view/index.html @@ -9,31 +9,20 @@

This is an Example App

Just below is an embedded IDOM view...

diff --git a/docs/source/guides/getting-started/running-idom.rst b/docs/source/guides/getting-started/running-idom.rst index 0b913070b..0b5ea60e3 100644 --- a/docs/source/guides/getting-started/running-idom.rst +++ b/docs/source/guides/getting-started/running-idom.rst @@ -147,19 +147,15 @@ Server Configuration Options ---------------------------- IDOM's various server implementations come with ``Options`` that can be passed to their -respective ``configure()`` functions. Those which are common amongst the options are: - -- ``url_prefix`` - prefix all routes configured by IDOM -- ``redirect_root`` - whether to redirect the root of the application to the IDOM view -- ``serve_static_files`` - whether to server IDOM's static files from it's default route - -You'd then pass these options to ``configure()`` in the following way: +respective ``configure()`` functions in the following way: .. code-block:: + from idom.server. import configure, Options + configure(app, MyComponent, Options(...)) -To learn more read the description for your chosen server implementation: +To learn more read about the options for your chosen server ````: - :class:`idom.server.fastapi.Options` - :class:`idom.server.flask.Options` diff --git a/noxfile.py b/noxfile.py index b954df00d..72e060e8e 100644 --- a/noxfile.py +++ b/noxfile.py @@ -390,5 +390,8 @@ def get_idom_script_env() -> dict[str, str]: return { "PYTHONPATH": os.getcwd(), "IDOM_DEBUG_MODE": os.environ.get("IDOM_DEBUG_MODE", "1"), + "IDOM_TESTING_DEFAULT_TIMEOUT": os.environ.get( + "IDOM_TESTING_DEFAULT_TIMEOUT", "6.0" + ), "IDOM_CHECK_VDOM_SPEC": os.environ.get("IDOM_CHECK_VDOM_SPEC", "0"), } diff --git a/requirements/pkg-deps.txt b/requirements/pkg-deps.txt index 706e6fdcd..6e970f4c2 100644 --- a/requirements/pkg-deps.txt +++ b/requirements/pkg-deps.txt @@ -1,7 +1,7 @@ typing-extensions >=3.10 mypy-extensions >=0.4.3 -anyio >=3.0 +anyio >=3 jsonpatch >=1.32 fastjsonschema >=2.14.5 -requests >=2.0 +requests >=2 colorlog >=6 diff --git a/requirements/pkg-extras.txt b/requirements/pkg-extras.txt index 834885aa4..e7257ccd8 100644 --- a/requirements/pkg-extras.txt +++ b/requirements/pkg-extras.txt @@ -11,10 +11,10 @@ fastapi >=0.63.0 uvicorn[standard] >=0.13.4 # extra=flask -flask<2.0 +flask markupsafe<2.1 flask-cors -flask-sockets +flask-sock # extra=tornado tornado diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 4e57908b5..a04661cf2 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -11,13 +11,116 @@ "./packages/*" ], "devDependencies": { - "snowpack": "^3.5.2" + "snowpack": "^3.8.8" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "node_modules/@npmcli/arborist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", + "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" } }, "node_modules/@npmcli/git": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.9.tgz", - "integrity": "sha512-hTMbMryvOqGLwnmMBKs5usbPsJtyEsMsgXwJbmNrsEuQQh1LAIMDU77IoOrwkCg+NgQWl+ySlarJASwM3SutCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", "dev": true, "dependencies": { "@npmcli/promise-spawn": "^1.3.2", @@ -46,6 +149,32 @@ "node": ">= 10" } }, + "node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", + "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", + "dev": true, + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", + "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", + "dev": true, + "dependencies": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, "node_modules/@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", @@ -59,12 +188,27 @@ "node": ">=10" } }, + "node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, "node_modules/@npmcli/node-gyp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", - "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", "dev": true }, + "node_modules/@npmcli/package-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", + "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, "node_modules/@npmcli/promise-spawn": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", @@ -75,18 +219,144 @@ } }, "node_modules/@npmcli/run-script": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.5.tgz", - "integrity": "sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", "dev": true, "dependencies": { "@npmcli/node-gyp": "^1.0.2", "@npmcli/promise-spawn": "^1.3.2", - "infer-owner": "^1.0.4", "node-gyp": "^7.1.0", "read-package-json-fast": "^2.0.1" } }, + "node_modules/@rollup/plugin-commonjs": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", + "integrity": "sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^2.30.0" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", + "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "estree-walker": "^2.0.1", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.0.8" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", + "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -96,6 +366,69 @@ "node": ">= 6" } }, + "node_modules/@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -139,6 +472,15 @@ "node": ">=0.4.0" } }, + "node_modules/address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true, + "engines": { + "node": ">= 0.12.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -151,10 +493,33 @@ "node": ">= 6.0.0" } }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/agentkeepalive": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", - "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "dependencies": { "debug": "^4.1.0", @@ -165,6 +530,29 @@ "node": ">= 8.0.0" } }, + "node_modules/agentkeepalive/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agentkeepalive/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -195,12 +583,37 @@ } }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, "node_modules/aproba": { @@ -210,15 +623,21 @@ "dev": true }, "node_modules/are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "dev": true, "dependencies": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "node_modules/asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -228,6 +647,16 @@ "safer-buffer": "~2.1.0" } }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -281,6 +710,38 @@ "node": ">=0.6" } }, + "node_modules/bin-links": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", + "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "dev": true, + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "node_modules/bplist-parser": { "version": "0.1.1", "dev": true, @@ -299,11 +760,48 @@ "concat-map": "0.0.1" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/builtins": { "version": "1.0.3", @@ -312,11 +810,12 @@ "dev": true }, "node_modules/cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "dependencies": { + "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -339,12 +838,156 @@ "node": ">= 10" } }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cheerio/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -354,6 +997,12 @@ "node": ">=10" } }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, "node_modules/clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -374,6 +1023,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/cmd-shim": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", + "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "dev": true, + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -383,6 +1053,21 @@ "node": ">=0.10.0" } }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -395,6 +1080,30 @@ "node": ">= 0.8" } }, + "node_modules/common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -413,6 +1122,76 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -464,20 +1243,21 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "ms": "2.1.2" - }, + "ms": "2.0.0" + } + }, + "node_modules/debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "*" } }, "node_modules/decimal.js": { @@ -486,12 +1266,48 @@ "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", "dev": true }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/default-browser-id": { "version": "2.0.0", "dev": true, @@ -505,6 +1321,24 @@ "node": ">=4" } }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -538,6 +1372,33 @@ "node": ">=6" } }, + "node_modules/detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -547,6 +1408,32 @@ "node": ">=0.3.1" } }, + "node_modules/dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, "node_modules/domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -568,13 +1455,42 @@ "node": ">=8" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, "dependencies": { - "jsbn": "~0.1.0", + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, @@ -601,6 +1517,24 @@ "node": ">=0.10.0" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -616,6 +1550,21 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "0.3.26", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", + "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", + "dev": true + }, "node_modules/esbuild": { "version": "0.9.7", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", @@ -626,6 +1575,15 @@ "esbuild": "bin/esbuild" } }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/escodegen": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", @@ -648,6 +1606,50 @@ "source-map": "~0.6.1" } }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esinstall": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/esinstall/-/esinstall-1.1.7.tgz", + "integrity": "sha512-irDsrIF7fZ5BCQEAV5gmH+4nsK6JhnkI9C9VloXdmzJLbM1EcshPw8Ap95UUGc4ZJdzGeOrjV+jgKjQ/Z7Q3pg==", + "dev": true, + "dependencies": { + "@rollup/plugin-commonjs": "^16.0.0", + "@rollup/plugin-inject": "^4.0.2", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^10.0.0", + "@rollup/plugin-replace": "^2.4.2", + "builtin-modules": "^3.2.0", + "cjs-module-lexer": "^1.2.1", + "es-module-lexer": "^0.6.0", + "execa": "^5.1.1", + "is-valid-identifier": "^2.0.2", + "kleur": "^4.1.1", + "mkdirp": "^1.0.3", + "picomatch": "^2.3.0", + "resolve": "^1.20.0", + "rimraf": "^3.0.0", + "rollup": "~2.37.1", + "rollup-plugin-polyfill-node": "^0.6.2", + "slash": "~3.0.0", + "validate-npm-package-name": "^3.0.0", + "vm2": "^3.9.2" + } + }, + "node_modules/esinstall/node_modules/es-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", + "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", + "dev": true + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -670,6 +1672,12 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -679,6 +1687,44 @@ "node": ">=0.10.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -722,6 +1768,51 @@ "integrity": "sha512-IgTtZwL52tx2wqWeuGDzXYTnNsEjNLahZpJw30hCQDyVnoHXwY5acNDnjGImTTL1R0z1PCyLw20VAbE5qLic3Q==", "dev": true }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -798,6 +1889,48 @@ "wide-align": "^1.1.0" } }, + "node_modules/gauge/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "dev": true, + "dependencies": { + "loader-utils": "^3.2.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -808,9 +1941,9 @@ } }, "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -827,10 +1960,47 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/got": { + "version": "11.8.3", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", + "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "node_modules/har-schema": { @@ -867,6 +2037,15 @@ "node": ">= 0.4.0" } }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -874,9 +2053,9 @@ "dev": true }, "node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -902,6 +2081,25 @@ "node": ">=10" } }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, "node_modules/http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", @@ -922,6 +2120,29 @@ "node": ">= 6" } }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -937,6 +2158,28 @@ "npm": ">=1.3.7" } }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/httpie": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/httpie/-/httpie-1.1.2.tgz", + "integrity": "sha512-VQ82oXG95oY1fQw/XecHuvcFBA+lZQ9Vwj1RfLcO8a7HpDd4cc2ukwpJt+TUlFaLUAzZErylxWu6wclJ1rUhUQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -950,6 +2193,38 @@ "node": ">= 6" } }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -971,6 +2246,24 @@ "node": ">=0.10.0" } }, + "node_modules/icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/idom-app-react": { "resolved": "packages/idom-app-react", "link": true @@ -988,6 +2281,31 @@ "minimatch": "^3.0.4" } }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -1043,10 +2361,28 @@ "node": ">=4" } }, - "node_modules/is-core-module": { - "version": "2.2.0", - "dev": true, - "license": "MIT", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "dev": true, + "license": "MIT", "dependencies": { "has": "^1.0.3" }, @@ -1055,9 +2391,10 @@ } }, "node_modules/is-docker": { - "version": "2.1.1", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -1068,6 +2405,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -1080,28 +2426,95 @@ "node": ">=0.10.0" } }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "node_modules/is-valid-identifier": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-valid-identifier/-/is-valid-identifier-2.0.2.tgz", + "integrity": "sha512-mpS5EGqXOwzXtKAg6I44jIAqeBfntFLxpAth1rrKbxtKyI6LPktyDYpHBI+tHlduhhX/SF26mFXmxQu995QVqg==", + "dev": true, + "dependencies": { + "assert": "^1.4.1" + } + }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -1115,6 +2528,18 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -1182,6 +2607,12 @@ } } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -1200,6 +2631,15 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -1215,6 +2655,15 @@ "node >= 0.2.0" ] }, + "node_modules/jsonschema": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.11.tgz", + "integrity": "sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -1230,6 +2679,27 @@ "verror": "1.10.0" } }, + "node_modules/just-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", + "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", + "dev": true + }, + "node_modules/just-diff-apply": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", + "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz", + "integrity": "sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", @@ -1252,15 +2722,52 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, "node_modules/loose-envify": { "version": "1.4.0", "license": "MIT", + "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -1268,6 +2775,15 @@ "loose-envify": "cli.js" } }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -1280,14 +2796,47 @@ "node": ">=10" } }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "dependencies": { "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", + "cacache": "^15.2.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", @@ -1298,14 +2847,30 @@ "minipass-fetch": "^1.3.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", + "socks-proxy-agent": "^6.0.0", "ssri": "^8.0.0" }, "engines": { "node": ">= 10" } }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/meriyah": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-3.1.6.tgz", + "integrity": "sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg==", + "dev": true, + "engines": { + "node": ">=10.4.0" + } + }, "node_modules/mime-db": { "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", @@ -1327,10 +2892,28 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -1340,9 +2923,9 @@ } }, "node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "dependencies": { "yallist": "^4.0.0" @@ -1364,9 +2947,9 @@ } }, "node_modules/minipass-fetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", - "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, "dependencies": { "minipass": "^3.1.0", @@ -1451,6 +3034,20 @@ "node": ">=10" } }, + "node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/mri": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", @@ -1461,11 +3058,32 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "node_modules/nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/node-gyp": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", @@ -1490,6 +3108,17 @@ "node": ">= 10.12.0" } }, + "node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -1505,6 +3134,27 @@ "node": ">=6" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -1533,9 +3183,9 @@ "dev": true }, "node_modules/npm-package-arg": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.2.tgz", - "integrity": "sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, "dependencies": { "hosted-git-info": "^4.0.1", @@ -1577,13 +3227,12 @@ } }, "node_modules/npm-registry-fetch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-10.1.2.tgz", - "integrity": "sha512-KsM/TdPmntqgBFlfsbkOLkkE9ovZo7VpVcd+/eTdYszCrgy5zFl5JzWm+OxavFaEWlbkirpkou+ZYI00RmOBFA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", + "make-fetch-happen": "^9.0.1", "minipass": "^3.1.3", "minipass-fetch": "^1.3.0", "minipass-json-stream": "^1.0.1", @@ -1594,6 +3243,18 @@ "node": ">=10" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -1606,6 +3267,18 @@ "set-blocking": "~2.0.0" } }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -1643,141 +3316,536 @@ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "dependencies": { - "wrappy": "1" + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-conflict-json": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", + "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "dev": true + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/periscopic": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-2.0.3.tgz", + "integrity": "sha512-FuCZe61mWxQOJAQFEfmt9FjzebRlcpFz8sFPbyaCKtdusPkMEbA9ey0eARnRav5zAhmXznhaQkKGFAPn7X9NUw==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.2", + "is-reference": "^1.1.4" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/open": { - "version": "7.4.2", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/os-homedir": { - "version": "1.0.2", + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/pacote": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.3.tgz", - "integrity": "sha512-GQxBX+UcVZrrJRYMK2HoG+gPeSUX/rQhnbPkkGrCYa4n2F/bgClFPaMm0nsdnYrxnmUy85uMHoFXZ0jTD0drew==", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", "dev": true, "dependencies": { - "@npmcli/git": "^2.0.1", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^10.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - }, - "bin": { - "pacote": "lib/bin.js" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, "engines": { - "node": ">=8.6" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/pify": { - "version": "2.3.0", + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, - "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/preact": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", + "integrity": "sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" } }, "node_modules/prelude-ls": { @@ -1801,12 +3869,36 @@ "node": ">=10.13.0" } }, + "node_modules/proc-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", + "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==", + "dev": true + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -1829,6 +3921,7 @@ "node_modules/prop-types": { "version": "15.7.2", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -1841,6 +3934,16 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1859,9 +3962,22 @@ "node": ">=0.6" } }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/react": { "version": "16.14.0", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -1874,6 +3990,7 @@ "node_modules/react-dom": { "version": "16.14.0", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -1886,12 +4003,19 @@ }, "node_modules/react-is": { "version": "16.13.1", - "license": "MIT" + "license": "MIT", + "peer": true + }, + "node_modules/read-cmd-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", + "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", + "dev": true }, "node_modules/read-package-json-fast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", - "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "dependencies": { "json-parse-even-better-errors": "^2.3.0", @@ -1922,6 +4046,30 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -2025,6 +4173,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + } + }, "node_modules/retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -2064,6 +4236,15 @@ "fsevents": "~2.1.2" } }, + "node_modules/rollup-plugin-polyfill-node": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.6.2.tgz", + "integrity": "sha512-gMCVuR0zsKq0jdBn8pSXN1Ejsc458k2QsFFvQdbHoM0Pot5hEnck+pBP/FDwFS6uAi77pD3rDTytsaUStsOMlA==", + "dev": true, + "dependencies": { + "@rollup/plugin-inject": "^4.0.0" + } + }, "node_modules/rollup/node_modules/fsevents": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", @@ -2132,6 +4313,7 @@ "node_modules/scheduler": { "version": "0.19.1", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -2158,16 +4340,69 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/skypack": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/skypack/-/skypack-0.3.2.tgz", + "integrity": "sha512-je1pix0QYER6iHuUGbgcafRJT5TI+EGUIBfzBLMqo3Wi22I2SzB9TVHQqwKCw8pzJMuHqhVTFEHc3Ey+ra25Sw==", + "dev": true, + "dependencies": { + "cacache": "^15.0.0", + "cachedir": "^2.3.0", + "esinstall": "^1.0.0", + "etag": "^1.8.1", + "find-up": "^5.0.0", + "got": "^11.1.4", + "kleur": "^4.1.0", + "mkdirp": "^1.0.3", + "p-queue": "^6.2.1", + "rimraf": "^3.0.0", + "rollup": "^2.23.0", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "engines": { "node": ">= 6.0.0", @@ -2175,20 +4410,62 @@ } }, "node_modules/snowpack": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.5.2.tgz", - "integrity": "sha512-TQQT5PXxeDr4gaMbp6nQrTDLX+Y8G5qI2wLqQdHLrpQEnq7W+gysn94+0xbOhnx0pFoVlSoFPjdQ83sETWl/9A==", + "version": "3.8.8", + "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.8.8.tgz", + "integrity": "sha512-Y/4V8FdzzYpwmJU2TgXRRFytz+GFSliWULK9J5O6C72KyK60w20JKqCdRtVs1S6BuobCedF5vSBD1Gvtm+gsJg==", "dev": true, "dependencies": { + "@npmcli/arborist": "^2.6.4", + "bufferutil": "^4.0.2", + "cachedir": "^2.3.0", + "cheerio": "1.0.0-rc.10", + "chokidar": "^3.4.0", "cli-spinners": "^2.5.0", + "compressible": "^2.0.18", + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", "default-browser-id": "^2.0.0", - "esbuild": "^0.9.3", + "detect-port": "^1.3.0", + "es-module-lexer": "^0.3.24", + "esbuild": "~0.9.0", + "esinstall": "^1.1.7", + "estree-walker": "^2.0.2", + "etag": "^1.8.1", + "execa": "^5.1.1", "fdir": "^5.0.0", - "open": "^7.0.4", - "pacote": "^11.3.1", - "picomatch": "^2.2.2", + "find-cache-dir": "^3.3.1", + "find-up": "^5.0.0", + "glob": "^7.1.7", + "httpie": "^1.1.2", + "is-plain-object": "^5.0.0", + "is-reference": "^1.2.1", + "isbinaryfile": "^4.0.6", + "jsonschema": "~1.2.5", + "kleur": "^4.1.1", + "magic-string": "^0.25.7", + "meriyah": "^3.1.6", + "mime-types": "^2.1.26", + "mkdirp": "^1.0.3", + "npm-run-path": "^4.0.1", + "open": "^8.2.1", + "pacote": "^11.3.4", + "periscopic": "^2.0.3", + "picomatch": "^2.3.0", + "postcss": "^8.3.5", + "postcss-modules": "^4.0.0", "resolve": "^1.20.0", - "rollup": "~2.37.1" + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "rollup": "~2.37.1", + "signal-exit": "^3.0.3", + "skypack": "^0.3.2", + "slash": "~3.0.0", + "source-map": "^0.7.3", + "strip-ansi": "^6.0.0", + "strip-comments": "^2.0.1", + "utf-8-validate": "^5.0.3", + "ws": "^7.3.0", + "yargs-parser": "^20.0.0" }, "bin": { "snowpack": "index.bin.js", @@ -2198,17 +4475,17 @@ "node": ">=10.19.0" }, "optionalDependencies": { - "fsevents": "^2.2.0" + "fsevents": "^2.3.2" } }, "node_modules/socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "dependencies": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.13.0", @@ -2216,19 +4493,66 @@ } }, "node_modules/socks-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", - "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4", - "socks": "^2.3.3" + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/socks-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socks-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -2285,6 +4609,12 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, "node_modules/string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -2299,7 +4629,16 @@ "node": ">=0.10.0" } }, - "node_modules/strip-ansi": { + "node_modules/string-width/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", @@ -2311,6 +4650,48 @@ "node": ">=0.10.0" } }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -2318,9 +4699,9 @@ "dev": true }, "node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "dependencies": { "chownr": "^2.0.0", @@ -2334,6 +4715,18 @@ "node": ">= 10" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/totalist": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz", @@ -2369,6 +4762,18 @@ "node": ">=8" } }, + "node_modules/treeverse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", + "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -2399,6 +4804,15 @@ "node": ">= 0.8.0" } }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -2437,12 +4851,40 @@ "punycode": "^2.1.0" } }, + "node_modules/utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -2494,6 +4936,43 @@ "extsprintf": "^1.2.0" } }, + "node_modules/vm2": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz", + "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==", + "dev": true, + "dependencies": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "bin": { + "vm2": "bin/vm2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/vm2/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/vm2/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -2515,6 +4994,12 @@ "node": ">=10" } }, + "node_modules/walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -2569,12 +5054,12 @@ } }, "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "dependencies": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/word-wrap": { @@ -2592,10 +5077,22 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "node_modules/ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "dev": true, "engines": { "node": ">=8.3.0" @@ -2631,13 +5128,42 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "packages/idom-app-react": { "version": "0.38.0-a1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", - "react": "^16.13.1", - "react-dom": "^16.13.1" + "preact": "^10.7.0" }, "devDependencies": { "prettier": "^2.5.1" @@ -2668,10 +5194,98 @@ } }, "dependencies": { + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.16.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", + "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", + "dev": true + }, + "@npmcli/arborist": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", + "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", + "dev": true, + "requires": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, "@npmcli/git": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.0.9.tgz", - "integrity": "sha512-hTMbMryvOqGLwnmMBKs5usbPsJtyEsMsgXwJbmNrsEuQQh1LAIMDU77IoOrwkCg+NgQWl+ySlarJASwM3SutCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", + "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", "dev": true, "requires": { "@npmcli/promise-spawn": "^1.3.2", @@ -2694,6 +5308,29 @@ "npm-normalize-package-bin": "^1.0.1" } }, + "@npmcli/map-workspaces": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", + "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", + "dev": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", + "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, "@npmcli/move-file": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", @@ -2704,12 +5341,27 @@ "rimraf": "^3.0.2" } }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", + "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", + "dev": true + }, "@npmcli/node-gyp": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz", - "integrity": "sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", + "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", "dev": true }, + "@npmcli/package-json": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", + "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1" + } + }, "@npmcli/promise-spawn": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", @@ -2720,24 +5372,179 @@ } }, "@npmcli/run-script": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.5.tgz", - "integrity": "sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", + "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@rollup/plugin-commonjs": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", + "integrity": "sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-inject": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", + "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "estree-walker": "^2.0.1", + "magic-string": "^0.25.7" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", + "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true + }, + "@types/cacheable-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", + "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "17.0.23", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", + "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", "dev": true, "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "infer-owner": "^1.0.4", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" + "@types/node": "*" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", @@ -2772,6 +5579,12 @@ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, "agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -2779,17 +5592,51 @@ "dev": true, "requires": { "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "agentkeepalive": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.1.4.tgz", - "integrity": "sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", "dev": true, "requires": { "debug": "^4.1.0", "depd": "^1.1.2", "humanize-ms": "^1.2.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "aggregate-error": { @@ -2815,11 +5662,30 @@ } }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -2827,15 +5693,21 @@ "dev": true }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "dev": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -2845,6 +5717,16 @@ "safer-buffer": "~2.1.0" } }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -2888,6 +5770,32 @@ "version": "1.6.48", "dev": true }, + "bin-links": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", + "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "dev": true, + "requires": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, "bplist-parser": { "version": "0.1.1", "dev": true, @@ -2905,12 +5813,36 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", "dev": true }, + "bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "dev": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -2918,11 +5850,12 @@ "dev": true }, "cacache": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz", - "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, "requires": { + "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -2942,18 +5875,131 @@ "unique-filename": "^1.1.1" } }, + "cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true + }, + "cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "cachedir": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", + "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "dev": true + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dev": true, + "requires": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dev": true, + "requires": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, "chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, "clean-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", @@ -2964,12 +6010,45 @@ "version": "2.5.0", "dev": true }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "cmd-shim": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", + "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", + "dev": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -2979,6 +6058,27 @@ "delayed-stream": "~1.0.0" } }, + "common-ancestor-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2997,6 +6097,55 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -3041,26 +6190,55 @@ } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "ms": "2.1.2" + "ms": "2.0.0" } }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, "decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", "dev": true }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "default-browser-id": { "version": "2.0.0", "dev": true, @@ -3070,6 +6248,18 @@ "untildify": "^2.0.0" } }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3094,12 +6284,49 @@ "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", "dev": true }, + "detect-port": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", + "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + } + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true }, + "dom-serializer": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", + "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", + "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", + "dev": true + }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -3117,6 +6344,26 @@ } } }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -3149,6 +6396,21 @@ } } }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -3161,12 +6423,33 @@ "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-module-lexer": { + "version": "0.3.26", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", + "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", + "dev": true + }, "esbuild": { "version": "0.9.7", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", "dev": true }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, "escodegen": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", @@ -3178,6 +6461,51 @@ "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "esinstall": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/esinstall/-/esinstall-1.1.7.tgz", + "integrity": "sha512-irDsrIF7fZ5BCQEAV5gmH+4nsK6JhnkI9C9VloXdmzJLbM1EcshPw8Ap95UUGc4ZJdzGeOrjV+jgKjQ/Z7Q3pg==", + "dev": true, + "requires": { + "@rollup/plugin-commonjs": "^16.0.0", + "@rollup/plugin-inject": "^4.0.2", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^10.0.0", + "@rollup/plugin-replace": "^2.4.2", + "builtin-modules": "^3.2.0", + "cjs-module-lexer": "^1.2.1", + "es-module-lexer": "^0.6.0", + "execa": "^5.1.1", + "is-valid-identifier": "^2.0.2", + "kleur": "^4.1.1", + "mkdirp": "^1.0.3", + "picomatch": "^2.3.0", + "resolve": "^1.20.0", + "rimraf": "^3.0.0", + "rollup": "~2.37.1", + "rollup-plugin-polyfill-node": "^0.6.2", + "slash": "~3.0.0", + "validate-npm-package-name": "^3.0.0", + "vm2": "^3.9.2" + }, + "dependencies": { + "es-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", + "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", + "dev": true + } } }, "esprima": { @@ -3192,12 +6520,47 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3237,6 +6600,36 @@ "integrity": "sha512-IgTtZwL52tx2wqWeuGDzXYTnNsEjNLahZpJw30hCQDyVnoHXwY5acNDnjGImTTL1R0z1PCyLw20VAbE5qLic3Q==", "dev": true }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -3294,8 +6687,40 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "generic-names": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", + "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", + "dev": true, + "requires": { + "loader-utils": "^3.2.0" } }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -3306,9 +6731,9 @@ } }, "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -3319,10 +6744,38 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "got": { + "version": "11.8.3", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", + "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "dev": true, + "requires": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", + "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, "har-schema": { @@ -3348,6 +6801,12 @@ "function-bind": "^1.1.1" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -3355,9 +6814,9 @@ "dev": true }, "hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -3377,6 +6836,18 @@ "whatwg-encoding": "^1.0.5" } }, + "htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, "http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", @@ -3392,6 +6863,23 @@ "@tootallnate/once": "1", "agent-base": "6", "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, "http-signature": { @@ -3405,6 +6893,22 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, + "httpie": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/httpie/-/httpie-1.1.2.tgz", + "integrity": "sha512-VQ82oXG95oY1fQw/XecHuvcFBA+lZQ9Vwj1RfLcO8a7HpDd4cc2ukwpJt+TUlFaLUAzZErylxWu6wclJ1rUhUQ==", + "dev": true + }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -3413,8 +6917,31 @@ "requires": { "agent-base": "6", "debug": "4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -3433,13 +6960,25 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, "idom-app-react": { "version": "file:packages/idom-app-react", "requires": { "idom-client-react": "file:packages/idom-client-react", - "prettier": "^2.5.1", - "react": "^16.13.1", - "react-dom": "^16.13.1" + "preact": "^10.7.0", + "prettier": "^2.5.1" }, "dependencies": { "idom-client-react": { @@ -3467,6 +7006,24 @@ "minimatch": "^3.0.4" } }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3513,6 +7070,21 @@ "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", "dev": true }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-core-module": { "version": "2.2.0", "dev": true, @@ -3521,7 +7093,15 @@ } }, "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, "is-fullwidth-code-point": { @@ -3533,26 +7113,79 @@ "number-is-nan": "^1.0.0" } }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-valid-identifier": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-valid-identifier/-/is-valid-identifier-2.0.2.tgz", + "integrity": "sha512-mpS5EGqXOwzXtKAg6I44jIAqeBfntFLxpAth1rrKbxtKyI6LPktyDYpHBI+tHlduhhX/SF26mFXmxQu995QVqg==", + "dev": true, + "requires": { + "assert": "^1.4.1" + } + }, "is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "requires": { "is-docker": "^2.0.0" @@ -3564,6 +7197,12 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -3619,6 +7258,12 @@ "xml-name-validator": "^3.0.0" } }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -3637,6 +7282,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stringify-nice": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -3649,6 +7300,12 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, + "jsonschema": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.11.tgz", + "integrity": "sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ==", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -3661,6 +7318,27 @@ "verror": "1.10.0" } }, + "just-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", + "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", + "dev": true + }, + "just-diff-apply": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", + "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==", + "dev": true + }, + "keyv": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz", + "integrity": "sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, "kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", @@ -3677,18 +7355,52 @@ "type-check": "~0.3.2" } }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-utils": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", + "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, "loose-envify": { "version": "1.4.0", + "peer": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -3698,14 +7410,40 @@ "yallist": "^4.0.0" } }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, "requires": { "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", + "cacache": "^15.2.0", "http-cache-semantics": "^4.1.0", "http-proxy-agent": "^4.0.1", "https-proxy-agent": "^5.0.0", @@ -3716,11 +7454,24 @@ "minipass-fetch": "^1.3.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", + "socks-proxy-agent": "^6.0.0", "ssri": "^8.0.0" } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "meriyah": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-3.1.6.tgz", + "integrity": "sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg==", + "dev": true + }, "mime-db": { "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", @@ -3736,19 +7487,31 @@ "mime-db": "1.47.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", "dev": true, "requires": { "yallist": "^4.0.0" @@ -3764,9 +7527,9 @@ } }, "minipass-fetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", - "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, "requires": { "encoding": "^0.1.12", @@ -3828,6 +7591,17 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", + "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, "mri": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", @@ -3835,9 +7609,21 @@ "dev": true }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nanoid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", + "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, "node-gyp": { @@ -3858,6 +7644,12 @@ "which": "^2.0.2" } }, + "node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "dev": true + }, "nopt": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", @@ -3867,6 +7659,18 @@ "abbrev": "1" } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, "npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -3892,9 +7696,9 @@ "dev": true }, "npm-package-arg": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.2.tgz", - "integrity": "sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA==", + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", + "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", "dev": true, "requires": { "hosted-git-info": "^4.0.1", @@ -3927,13 +7731,12 @@ } }, "npm-registry-fetch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-10.1.2.tgz", - "integrity": "sha512-KsM/TdPmntqgBFlfsbkOLkkE9ovZo7VpVcd+/eTdYszCrgy5zFl5JzWm+OxavFaEWlbkirpkou+ZYI00RmOBFA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", + "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", "dev": true, "requires": { - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", + "make-fetch-happen": "^9.0.1", "minipass": "^3.1.3", "minipass-fetch": "^1.3.0", "minipass-json-stream": "^1.0.1", @@ -3941,6 +7744,15 @@ "npm-package-arg": "^8.0.0" } }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -3953,6 +7765,15 @@ "set-blocking": "~2.0.0" } }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -3983,12 +7804,24 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "open": { - "version": "7.4.2", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", "dev": true, "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" } }, "optionator": { @@ -4009,6 +7842,36 @@ "version": "1.0.2", "dev": true }, + "p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "p-map": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", @@ -4018,13 +7881,38 @@ "aggregate-error": "^3.0.0" } }, + "p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" + } + }, + "p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dev": true, + "requires": { + "p-finally": "^1.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, "pacote": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.3.tgz", - "integrity": "sha512-GQxBX+UcVZrrJRYMK2HoG+gPeSUX/rQhnbPkkGrCYa4n2F/bgClFPaMm0nsdnYrxnmUy85uMHoFXZ0jTD0drew==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", "dev": true, "requires": { - "@npmcli/git": "^2.0.1", + "@npmcli/git": "^2.1.0", "@npmcli/installed-package-contents": "^1.0.6", "@npmcli/promise-spawn": "^1.2.0", "@npmcli/run-script": "^1.8.2", @@ -4037,7 +7925,7 @@ "npm-package-arg": "^8.0.1", "npm-packlist": "^2.1.4", "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^10.0.0", + "npm-registry-fetch": "^11.0.0", "promise-retry": "^2.0.1", "read-package-json-fast": "^2.0.1", "rimraf": "^3.0.2", @@ -4045,28 +7933,111 @@ "tar": "^6.1.0" } }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-conflict-json": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", + "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, "parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", "dev": true }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + } + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.6", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "periscopic": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-2.0.3.tgz", + "integrity": "sha512-FuCZe61mWxQOJAQFEfmt9FjzebRlcpFz8sFPbyaCKtdusPkMEbA9ey0eARnRav5zAhmXznhaQkKGFAPn7X9NUw==", + "dev": true, + "requires": { + "estree-walker": "^2.0.2", + "is-reference": "^1.1.4" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", @@ -4077,6 +8048,138 @@ "version": "2.3.0", "dev": true }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-modules": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", + "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", + "dev": true, + "requires": { + "generic-names": "^4.0.0", + "icss-replace-symbols": "^1.1.0", + "lodash.camelcase": "^4.3.0", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "string-hash": "^1.1.1" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "preact": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", + "integrity": "sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ==" + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -4089,12 +8192,30 @@ "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", "dev": true }, + "proc-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", + "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "promise-all-reject-late": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", + "dev": true + }, + "promise-call-limit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", + "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", + "dev": true + }, "promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", @@ -4113,6 +8234,7 @@ }, "prop-types": { "version": "15.7.2", + "peer": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -4125,6 +8247,16 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4137,8 +8269,15 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, "react": { "version": "16.14.0", + "peer": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -4147,6 +8286,7 @@ }, "react-dom": { "version": "16.14.0", + "peer": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -4155,12 +8295,19 @@ } }, "react-is": { - "version": "16.13.1" + "version": "16.13.1", + "peer": true + }, + "read-cmd-shim": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", + "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", + "dev": true }, "read-package-json-fast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", - "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.0", @@ -4190,6 +8337,27 @@ } } }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -4270,6 +8438,27 @@ "path-parse": "^1.0.6" } }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + }, "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", @@ -4303,6 +8492,15 @@ } } }, + "rollup-plugin-polyfill-node": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.6.2.tgz", + "integrity": "sha512-gMCVuR0zsKq0jdBn8pSXN1Ejsc458k2QsFFvQdbHoM0Pot5hEnck+pBP/FDwFS6uAi77pD3rDTytsaUStsOMlA==", + "dev": true, + "requires": { + "@rollup/plugin-inject": "^4.0.0" + } + }, "sade": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", @@ -4335,6 +8533,7 @@ }, "scheduler": { "version": "0.19.1", + "peer": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -4355,57 +8554,175 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "skypack": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/skypack/-/skypack-0.3.2.tgz", + "integrity": "sha512-je1pix0QYER6iHuUGbgcafRJT5TI+EGUIBfzBLMqo3Wi22I2SzB9TVHQqwKCw8pzJMuHqhVTFEHc3Ey+ra25Sw==", + "dev": true, + "requires": { + "cacache": "^15.0.0", + "cachedir": "^2.3.0", + "esinstall": "^1.0.0", + "etag": "^1.8.1", + "find-up": "^5.0.0", + "got": "^11.1.4", + "kleur": "^4.1.0", + "mkdirp": "^1.0.3", + "p-queue": "^6.2.1", + "rimraf": "^3.0.0", + "rollup": "^2.23.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, "smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "snowpack": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.5.2.tgz", - "integrity": "sha512-TQQT5PXxeDr4gaMbp6nQrTDLX+Y8G5qI2wLqQdHLrpQEnq7W+gysn94+0xbOhnx0pFoVlSoFPjdQ83sETWl/9A==", + "version": "3.8.8", + "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.8.8.tgz", + "integrity": "sha512-Y/4V8FdzzYpwmJU2TgXRRFytz+GFSliWULK9J5O6C72KyK60w20JKqCdRtVs1S6BuobCedF5vSBD1Gvtm+gsJg==", "dev": true, "requires": { + "@npmcli/arborist": "^2.6.4", + "bufferutil": "^4.0.2", + "cachedir": "^2.3.0", + "cheerio": "1.0.0-rc.10", + "chokidar": "^3.4.0", "cli-spinners": "^2.5.0", + "compressible": "^2.0.18", + "cosmiconfig": "^7.0.0", + "deepmerge": "^4.2.2", "default-browser-id": "^2.0.0", - "esbuild": "^0.9.3", + "detect-port": "^1.3.0", + "es-module-lexer": "^0.3.24", + "esbuild": "~0.9.0", + "esinstall": "^1.1.7", + "estree-walker": "^2.0.2", + "etag": "^1.8.1", + "execa": "^5.1.1", "fdir": "^5.0.0", - "fsevents": "^2.2.0", - "open": "^7.0.4", - "pacote": "^11.3.1", - "picomatch": "^2.2.2", + "find-cache-dir": "^3.3.1", + "find-up": "^5.0.0", + "fsevents": "^2.3.2", + "glob": "^7.1.7", + "httpie": "^1.1.2", + "is-plain-object": "^5.0.0", + "is-reference": "^1.2.1", + "isbinaryfile": "^4.0.6", + "jsonschema": "~1.2.5", + "kleur": "^4.1.1", + "magic-string": "^0.25.7", + "meriyah": "^3.1.6", + "mime-types": "^2.1.26", + "mkdirp": "^1.0.3", + "npm-run-path": "^4.0.1", + "open": "^8.2.1", + "pacote": "^11.3.4", + "periscopic": "^2.0.3", + "picomatch": "^2.3.0", + "postcss": "^8.3.5", + "postcss-modules": "^4.0.0", "resolve": "^1.20.0", - "rollup": "~2.37.1" + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "rollup": "~2.37.1", + "signal-exit": "^3.0.3", + "skypack": "^0.3.2", + "slash": "~3.0.0", + "source-map": "^0.7.3", + "strip-ansi": "^6.0.0", + "strip-comments": "^2.0.1", + "utf-8-validate": "^5.0.3", + "ws": "^7.3.0", + "yargs-parser": "^20.0.0" } }, "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dev": true, "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz", - "integrity": "sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", + "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", "dev": true, "requires": { - "agent-base": "6", - "debug": "4", - "socks": "^2.3.3" + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } } }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -4455,6 +8772,12 @@ } } }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", + "dev": true + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -4464,15 +8787,53 @@ "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" + } + }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" } }, "symbol-tree": { @@ -4482,9 +8843,9 @@ "dev": true }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.11", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", + "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -4495,6 +8856,15 @@ "yallist": "^4.0.0" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "totalist": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz", @@ -4521,6 +8891,18 @@ "punycode": "^2.1.1" } }, + "treeverse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", + "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", + "dev": true + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4545,6 +8927,15 @@ "prelude-ls": "~1.1.2" } }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -4579,6 +8970,32 @@ "punycode": "^2.1.0" } }, + "utf-8-validate": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", + "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "dev": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4624,6 +9041,30 @@ "extsprintf": "^1.2.0" } }, + "vm2": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz", + "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==", + "dev": true, + "requires": { + "acorn": "^8.7.0", + "acorn-walk": "^8.2.0" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + } + } + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -4642,6 +9083,12 @@ "xml-name-validator": "^3.0.0" } }, + "walk-up-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", + "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", + "dev": true + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -4684,12 +9131,12 @@ } }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "word-wrap": { @@ -4704,10 +9151,22 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, "ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", + "version": "7.5.7", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", + "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", "dev": true, "requires": {} }, @@ -4728,6 +9187,24 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/src/client/package.json b/src/client/package.json index b43811161..249a6a895 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "snowpack": "^3.5.2" + "snowpack": "^3.8.8" }, "license": "MIT", "repository": { diff --git a/src/client/packages/idom-app-react/package-lock.json b/src/client/packages/idom-app-react/package-lock.json new file mode 100644 index 000000000..73cd13fc2 --- /dev/null +++ b/src/client/packages/idom-app-react/package-lock.json @@ -0,0 +1,65 @@ +{ + "name": "idom-app-react", + "version": "0.38.0-a1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "idom-app-react", + "version": "0.38.0-a1", + "license": "MIT", + "dependencies": { + "idom-client-react": "file:packages/idom-client-react", + "preact": "^10.7.0" + }, + "devDependencies": { + "prettier": "^2.5.1" + } + }, + "node_modules/idom-client-react": { + "resolved": "packages/idom-client-react", + "link": true + }, + "node_modules/preact": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", + "integrity": "sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prettier": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", + "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "packages/idom-client-react": {} + }, + "dependencies": { + "idom-client-react": { + "version": "file:packages/idom-client-react" + }, + "preact": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", + "integrity": "sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ==" + }, + "prettier": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.6.1.tgz", + "integrity": "sha512-8UVbTBYGwN37Bs9LERmxCPjdvPxlEowx2urIL6urHzdb3SDq4B/Z6xLFCblrSnE4iKWcS6ziJ3aOYrc1kz/E2A==", + "dev": true + } + } +} diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index d03873d95..80accecd4 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -2,8 +2,7 @@ "author": "Ryan Morshead", "dependencies": { "idom-client-react": "file:packages/idom-client-react", - "react": "^16.13.1", - "react-dom": "^16.13.1" + "preact": "^10.7.0" }, "description": "A client application for IDOM implemented in React", "devDependencies": { diff --git a/src/client/packages/idom-app-react/src/index.js b/src/client/packages/idom-app-react/src/index.js index 1f57c5fa9..68ebbfee1 100644 --- a/src/client/packages/idom-app-react/src/index.js +++ b/src/client/packages/idom-app-react/src/index.js @@ -4,7 +4,6 @@ export function mount(mountPoint) { const serverInfo = new LayoutServerInfo({ host: document.location.hostname, port: document.location.port, - path: "../", query: queryParams.user.toString(), secure: document.location.protocol == "https:", }); diff --git a/src/client/packages/idom-client-react/src/server.js b/src/client/packages/idom-client-react/src/server.js index 41428873e..7531802fb 100644 --- a/src/client/packages/idom-client-react/src/server.js +++ b/src/client/packages/idom-client-react/src/server.js @@ -8,7 +8,13 @@ export function mountWithLayoutServer( maxReconnectTimeout ) { const loadImportSource = (source, sourceType) => - import(sourceType == "NAME" ? serverInfo.path.module(source) : source); + import( + sourceType == "NAME" ? serverInfo.path.module(source) : source + ).catch((error) => { + // Added a catch to silence a build warning caller so we just re-throw. + // The caller is actually responsible for catching this error. + throw error; + }); mountLayoutWithWebSocket( element, @@ -22,9 +28,11 @@ export function LayoutServerInfo({ host, port, path, query, secure }) { const wsProtocol = "ws" + (secure ? "s" : ""); const httpProtocol = "http" + (secure ? "s" : ""); - const uri = host + ":" + port; - path = new URL(path, document.baseURI).pathname; - const url = (uri + path).split("/").slice(0, -1).join("/"); + let url = host + ":" + port + (path || new URL(document.baseURI).pathname); + + if (url.endsWith("/")) { + url = url.slice(0, -1); + } const wsBaseUrl = wsProtocol + "://" + url; const httpBaseUrl = httpProtocol + "://" + url; @@ -36,7 +44,7 @@ export function LayoutServerInfo({ host, port, path, query, secure }) { } this.path = { - stream: wsBaseUrl + "/stream" + query, - module: (source) => httpBaseUrl + `/modules/${source}`, + stream: wsBaseUrl + "/_api/stream" + query, + module: (source) => httpBaseUrl + `/_api/modules/${source}`, }; } diff --git a/src/client/idom-logo-square-small.svg b/src/client/public/idom-logo-square-small.svg similarity index 100% rename from src/client/idom-logo-square-small.svg rename to src/client/public/idom-logo-square-small.svg diff --git a/src/client/index.html b/src/client/public/index.html similarity index 62% rename from src/client/index.html rename to src/client/public/index.html index 8f2669605..51aa70f39 100644 --- a/src/client/index.html +++ b/src/client/public/index.html @@ -2,12 +2,12 @@ - + IDOM
- diff --git a/src/client/snowpack.config.js b/src/client/snowpack.config.js index 750b50a33..265fd674c 100644 --- a/src/client/snowpack.config.js +++ b/src/client/snowpack.config.js @@ -2,4 +2,10 @@ module.exports = { workspaceRoot: false, testOptions: { files: ["**/tests/**/*", "**/*.test.*"] }, buildOptions: { out: "../idom/client" }, + mount: { public: { url: "/", static: true } }, + optimize: { bundle: true, target: "es2018" }, + alias: { + react: "preact/compat", + "react-dom": "preact/compat", + }, }; diff --git a/src/idom/config.py b/src/idom/config.py index 62a666453..a13a2e26f 100644 --- a/src/idom/config.py +++ b/src/idom/config.py @@ -77,3 +77,10 @@ For more information on changes to this feature flag see: https://github.com/idom-team/idom/issues/351 """ + +IDOM_TESTING_DEFAULT_TIMEOUT = _Option( + "IDOM_TESTING_DEFAULT_TIMEOUT", + 3.0, + mutable=False, + validator=float, +) diff --git a/src/idom/server/default.py b/src/idom/server/default.py index 68adaf41b..e87bfcbba 100644 --- a/src/idom/server/default.py +++ b/src/idom/server/default.py @@ -5,7 +5,7 @@ from idom.types import RootComponentConstructor -from .types import ServerImplementation +from .types import Location, ServerImplementation from .utils import all_implementations @@ -36,9 +36,15 @@ async def serve_development_app( def use_scope() -> Any: + """Return the current ASGI/WSGI scope""" return _default_implementation().use_scope() +def use_location() -> Location: + """Return the current route as a string""" + return _default_implementation().use_location() + + _DEFAULT_IMPLEMENTATION: ServerImplementation[Any] | None = None diff --git a/src/idom/server/fastapi.py b/src/idom/server/fastapi.py index 2cf66918d..e99aad60c 100644 --- a/src/idom/server/fastapi.py +++ b/src/idom/server/fastapi.py @@ -8,6 +8,10 @@ serve_development_app = starlette.serve_development_app """Alias for :func:`idom.server.starlette.serve_development_app`""" +# see: https://github.com/idom-team/flake8-idom-hooks/issues/12 +use_location = starlette.use_location # noqa: ROH101 +"""Alias for :func:`idom.server.starlette.use_location`""" + # see: https://github.com/idom-team/flake8-idom-hooks/issues/12 use_scope = starlette.use_scope # noqa: ROH101 """Alias for :func:`idom.server.starlette.use_scope`""" diff --git a/src/idom/server/flask.py b/src/idom/server/flask.py index 1cf2ddb66..cf3f34dd1 100644 --- a/src/idom/server/flask.py +++ b/src/idom/server/flask.py @@ -3,42 +3,43 @@ import asyncio import json import logging +import os from asyncio import Queue as AsyncQueue from dataclasses import dataclass from queue import Queue as ThreadQueue from threading import Event as ThreadEvent from threading import Thread -from typing import Any, Callable, Dict, NamedTuple, Optional, Union, cast +from typing import Any, Callable, Dict, NamedTuple, NoReturn, Optional, Union, cast from flask import ( Blueprint, Flask, Request, copy_current_request_context, - redirect, request, - send_from_directory, - url_for, + send_file, ) from flask_cors import CORS -from flask_sockets import Sockets -from gevent import pywsgi -from geventwebsocket.handler import WebSocketHandler -from geventwebsocket.websocket import WebSocket +from flask_sock import Sock +from simple_websocket import Server as WebSocket +from werkzeug.serving import BaseWSGIServer, make_server import idom -from idom.config import IDOM_WEB_MODULES_DIR from idom.core.hooks import Context, create_context, use_context from idom.core.layout import LayoutEvent, LayoutUpdate from idom.core.serve import serve_json_patch from idom.core.types import ComponentType, RootComponentConstructor +from idom.server.types import Location +from idom.utils import Ref -from .utils import CLIENT_BUILD_DIR +from .utils import safe_client_build_dir_path, safe_web_modules_dir_path logger = logging.getLogger(__name__) -RequestContext: type[Context[Request | None]] = create_context(None, "RequestContext") +ConnectionContext: type[Context[Connection | None]] = create_context( + None, "ConnectionContext" +) def configure( @@ -55,14 +56,20 @@ def configure( """ options = options or Options() blueprint = Blueprint("idom", __name__, url_prefix=options.url_prefix) + + # this route should take priority so set up it up first + _setup_single_view_dispatcher_route(blueprint, options, component) + _setup_common_routes(blueprint, options) - _setup_single_view_dispatcher_route(app, options, component) + app.register_blueprint(blueprint) def create_development_app() -> Flask: """Create an application instance for development purposes""" - return Flask(__name__) + os.environ["FLASK_DEBUG"] = "true" + app = Flask(__name__) + return app async def serve_development_app( @@ -75,21 +82,14 @@ async def serve_development_app( loop = asyncio.get_event_loop() stopped = asyncio.Event() - server: pywsgi.WSGIServer + server: Ref[BaseWSGIServer] = Ref() - def run_server() -> None: # pragma: no cover - # we don't cover this function because coverage doesn't work right in threads - nonlocal server - server = pywsgi.WSGIServer( - (host, port), - app, - handler_class=WebSocketHandler, - ) - server.start() + def run_server() -> None: + server.current = make_server(host, port, app, threaded=True) if started: loop.call_soon_threadsafe(started.set) try: - server.serve_forever() + server.current.serve_forever() # type: ignore finally: loop.call_soon_threadsafe(stopped.set) @@ -103,7 +103,7 @@ def run_server() -> None: # pragma: no cover await stopped.wait() finally: # we may have exitted because this task was cancelled - server.stop(3) + server.current.shutdown() # the thread should eventually join thread.join(timeout=3) # just double check it happened @@ -111,19 +111,45 @@ def run_server() -> None: # pragma: no cover raise RuntimeError("Failed to shutdown server.") +def use_location() -> Location: + """Get the current route as a string""" + conn = use_connection() + search = conn.request.query_string.decode() + return Location(pathname="/" + conn.path, search="?" + search if search else "") + + +def use_scope() -> dict[str, Any]: + """Get the current WSGI environment""" + return use_request().environ + + def use_request() -> Request: """Get the current ``Request``""" - request = use_context(RequestContext) - if request is None: + return use_connection().request + + +def use_connection() -> Connection: + """Get the current :class:`Connection`""" + connection = use_context(ConnectionContext) + if connection is None: raise RuntimeError( # pragma: no cover - "No request. Are you running with a Flask server?" + "No connection. Are you running with a Flask server?" ) - return request + return connection -def use_scope() -> dict[str, Any]: - """Get the current WSGI environment""" - return use_request().environ +@dataclass +class Connection: + """A simple wrapper for holding connection information""" + + request: Request + """The current request object""" + + websocket: WebSocket + """A handle to the current websocket""" + + path: str + """The current path being served""" @dataclass @@ -136,9 +162,6 @@ class Options: For more information see docs for ``flask_cors.CORS`` """ - redirect_root: bool = True - """Whether to redirect the root URL (with prefix) to ``index.html``""" - serve_static_files: bool = True """Whether or not to serve static files (i.e. web modules)""" @@ -154,52 +177,45 @@ def _setup_common_routes(blueprint: Blueprint, options: Options) -> None: if options.serve_static_files: - @blueprint.route("/client/") - def send_client_dir(path: str) -> Any: - return send_from_directory(str(CLIENT_BUILD_DIR), path) - - @blueprint.route("/modules/") - def send_modules_dir(path: str) -> Any: - return send_from_directory(str(IDOM_WEB_MODULES_DIR.current), path) - - if options.redirect_root: + @blueprint.route("/") + @blueprint.route("/") + def send_client_dir(path: str = "") -> Any: + return send_file(safe_client_build_dir_path(path)) - @blueprint.route("/") - def redirect_to_index() -> Any: - return redirect( - url_for( - "idom.send_client_dir", - path="index.html", - **request.args, - ) - ) + @blueprint.route(r"/_api/modules/") + @blueprint.route(r"/_api/modules/") + def send_modules_dir( + path: str, + _: str = "", # this is not used + ) -> Any: + return send_file(safe_web_modules_dir_path(path)) def _setup_single_view_dispatcher_route( - app: Flask, options: Options, constructor: RootComponentConstructor + blueprint: Blueprint, options: Options, constructor: RootComponentConstructor ) -> None: - sockets = Sockets(app) + sock = Sock(blueprint) - @sockets.route(_join_url_paths(options.url_prefix, "/stream")) # type: ignore - def model_stream(ws: WebSocket) -> None: + def model_stream(ws: WebSocket, path: str = "") -> None: def send(value: Any) -> None: ws.send(json.dumps(value)) - def recv() -> Optional[LayoutEvent]: - event = ws.receive() - if event is not None: - return LayoutEvent(**json.loads(event)) - else: - return None + def recv() -> LayoutEvent: + return LayoutEvent(**json.loads(ws.receive())) + + _dispatch_in_thread(ws, path, constructor(), send, recv) - dispatch_in_thread(constructor(), send, recv) + sock.route("/_api/stream", endpoint="without_path")(model_stream) + sock.route("//_api/stream", endpoint="with_path")(model_stream) -def dispatch_in_thread( +def _dispatch_in_thread( + websocket: WebSocket, + path: str, component: ComponentType, send: Callable[[Any], None], recv: Callable[[], Optional[LayoutEvent]], -) -> None: +) -> NoReturn: dispatch_thread_info_created = ThreadEvent() dispatch_thread_info_ref: idom.Ref[Optional[_DispatcherThreadInfo]] = idom.Ref(None) @@ -219,7 +235,11 @@ async def recv_coro() -> Any: async def main() -> None: await serve_json_patch( - idom.Layout(RequestContext(component, value=request)), + idom.Layout( + ConnectionContext( + component, value=Connection(request, websocket, path) + ) + ), send_coro, recv_coro, ) @@ -253,30 +273,17 @@ def run_send() -> None: try: while True: value = recv() - if value is None: - stop.set() - break - # BUG: https://github.com/nedbat/coveragepy/issues/1012 - # Coverage isn't able to support concurrency coverage for both threading and gevent - dispatch_thread_info.dispatch_loop.call_soon_threadsafe( # pragma: no cover + dispatch_thread_info.dispatch_loop.call_soon_threadsafe( dispatch_thread_info.async_recv_queue.put_nowait, value ) - finally: + finally: # pragma: no cover dispatch_thread_info.dispatch_loop.call_soon_threadsafe( dispatch_thread_info.dispatch_future.cancel ) - return None - class _DispatcherThreadInfo(NamedTuple): dispatch_loop: asyncio.AbstractEventLoop dispatch_future: "asyncio.Future[Any]" thread_send_queue: "ThreadQueue[LayoutUpdate]" async_recv_queue: "AsyncQueue[LayoutEvent]" - - -def _join_url_paths(*args: str) -> str: - # urllib.parse.urljoin performs more logic than is needed. Thus we need a util func - # to join paths as if they were POSIX paths. - return "/".join(map(lambda x: str(x).rstrip("/"), filter(None, args))) diff --git a/src/idom/server/sanic.py b/src/idom/server/sanic.py index 3c47250a6..7fa23abae 100644 --- a/src/idom/server/sanic.py +++ b/src/idom/server/sanic.py @@ -5,6 +5,7 @@ import logging from dataclasses import dataclass from typing import Any, Dict, Tuple, Union +from urllib import parse as urllib_parse from uuid import uuid4 from sanic import Blueprint, Sanic, request, response @@ -13,25 +14,26 @@ from sanic_cors import CORS from websockets.legacy.protocol import WebSocketCommonProtocol -from idom.config import IDOM_WEB_MODULES_DIR from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent from idom.core.serve import ( RecvCoroutine, SendCoroutine, + Stop, VdomJsonPatch, serve_json_patch, ) from idom.core.types import RootComponentConstructor +from idom.server.types import Location from ._asgi import serve_development_asgi -from .utils import CLIENT_BUILD_DIR +from .utils import safe_client_build_dir_path, safe_web_modules_dir_path logger = logging.getLogger(__name__) -RequestContext: type[Context[request.Request | None]] = create_context( - None, "RequestContext" +ConnectionContext: type[Context[Connection | None]] = create_context( + None, "ConnectionContext" ) @@ -41,8 +43,12 @@ def configure( """Configure an application instance to display the given component""" options = options or Options() blueprint = Blueprint(f"idom_dispatcher_{id(app)}", url_prefix=options.url_prefix) + _setup_common_routes(blueprint, options) + + # this route should take priority so set up it up first _setup_single_view_dispatcher_route(blueprint, component) + app.blueprint(blueprint) @@ -61,14 +67,11 @@ async def serve_development_app( await serve_development_asgi(app, host, port, started) -def use_request() -> request.Request: - """Get the current ``Request``""" - request = use_context(RequestContext) - if request is None: - raise RuntimeError( # pragma: no cover - "No request. Are you running with a Sanic server?" - ) - return request +def use_location() -> Location: + """Get the current route as a string""" + conn = use_connection() + search = conn.request.query_string + return Location(pathname="/" + conn.path, search="?" + search if search else "") def use_scope() -> ASGIScope: @@ -81,6 +84,35 @@ def use_scope() -> ASGIScope: return asgi_app.transport.scope +def use_request() -> request.Request: + """Get the current ``Request``""" + return use_connection().request + + +def use_connection() -> Connection: + """Get the current :class:`Connection`""" + connection = use_context(ConnectionContext) + if connection is None: + raise RuntimeError( # pragma: no cover + "No connection. Are you running with a Sanic server?" + ) + return connection + + +@dataclass +class Connection: + """A simple wrapper for holding connection information""" + + request: request.Request + """The current request object""" + + websocket: WebSocketCommonProtocol + """A handle to the current websocket""" + + path: str + """The current path being served""" + + @dataclass class Options: """Options for :class:`SanicRenderServer`""" @@ -91,9 +123,6 @@ class Options: For more information see docs for ``sanic_cors.CORS`` """ - redirect_root: bool = True - """Whether to redirect the root URL (with prefix) to ``index.html``""" - serve_static_files: bool = True """Whether or not to serve static files (i.e. web modules)""" @@ -108,34 +137,46 @@ def _setup_common_routes(blueprint: Blueprint, options: Options) -> None: CORS(blueprint, **cors_params) if options.serve_static_files: - blueprint.static("/client", str(CLIENT_BUILD_DIR)) - blueprint.static("/modules", str(IDOM_WEB_MODULES_DIR.current)) - if options.redirect_root: + async def single_page_app_files( + request: request.Request, + path: str = "", + ) -> response.HTTPResponse: + path = urllib_parse.unquote(path) + return await response.file(safe_client_build_dir_path(path)) - @blueprint.route("/") # type: ignore - def redirect_to_index( - request: request.Request, - ) -> response.HTTPResponse: - return response.redirect( - f"{blueprint.url_prefix}/client/index.html?{request.query_string}" - ) + blueprint.add_route(single_page_app_files, "/") + blueprint.add_route(single_page_app_files, "/") + + async def web_module_files( + request: request.Request, + path: str, + _: str = "", # this is not used + ) -> response.HTTPResponse: + path = urllib_parse.unquote(path) + return await response.file(safe_web_modules_dir_path(path)) + + blueprint.add_route(web_module_files, "/_api/modules/") + blueprint.add_route(web_module_files, "/<_:path>/_api/modules/") def _setup_single_view_dispatcher_route( blueprint: Blueprint, constructor: RootComponentConstructor ) -> None: - @blueprint.websocket("/stream") # type: ignore async def model_stream( - request: request.Request, socket: WebSocketCommonProtocol + request: request.Request, socket: WebSocketCommonProtocol, path: str = "" ) -> None: send, recv = _make_send_recv_callbacks(socket) + conn = Connection(request, socket, path) await serve_json_patch( - Layout(RequestContext(constructor(), value=request)), + Layout(ConnectionContext(constructor(), value=conn)), send, recv, ) + blueprint.add_websocket_route(model_stream, "/_api/stream") + blueprint.add_websocket_route(model_stream, "//_api/stream") + def _make_send_recv_callbacks( socket: WebSocketCommonProtocol, @@ -144,6 +185,9 @@ async def sock_send(value: VdomJsonPatch) -> None: await socket.send(json.dumps(value)) async def sock_recv() -> LayoutEvent: - return LayoutEvent(**json.loads(await socket.recv())) + data = await socket.recv() + if data is None: + raise Stop() + return LayoutEvent(**json.loads(data)) return sock_send, sock_recv diff --git a/src/idom/server/starlette.py b/src/idom/server/starlette.py index 6e483241f..d2fb369b6 100644 --- a/src/idom/server/starlette.py +++ b/src/idom/server/starlette.py @@ -4,14 +4,12 @@ import json import logging from dataclasses import dataclass -from typing import Any, Dict, Tuple, Union +from typing import Any, Awaitable, Callable, Dict, Tuple, Union from starlette.applications import Starlette from starlette.middleware.cors import CORSMiddleware -from starlette.requests import Request -from starlette.responses import RedirectResponse from starlette.staticfiles import StaticFiles -from starlette.types import Scope +from starlette.types import Receive, Scope, Send from starlette.websockets import WebSocket, WebSocketDisconnect from idom.config import IDOM_WEB_MODULES_DIR @@ -24,9 +22,10 @@ serve_json_patch, ) from idom.core.types import RootComponentConstructor +from idom.server.types import Location from ._asgi import serve_development_asgi -from .utils import CLIENT_BUILD_DIR +from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path logger = logging.getLogger(__name__) @@ -51,8 +50,11 @@ def configure( options: Options for configuring server behavior """ options = options or Options() + + # this route should take priority so set up it up first + _setup_single_view_dispatcher_route(options, app, constructor) + _setup_common_routes(options, app) - _setup_single_view_dispatcher_route(options.url_prefix, app, constructor) def create_development_app() -> Starlette: @@ -70,6 +72,19 @@ async def serve_development_app( await serve_development_asgi(app, host, port, started) +def use_location() -> Location: + """Get the current route as a string""" + scope = use_scope() + pathname = "/" + scope["path_params"].get("path", "") + search = scope["query_string"].decode() + return Location(pathname, "?" + search if search else "") + + +def use_scope() -> Scope: + """Get the current ASGI scope dictionary""" + return use_websocket().scope + + def use_websocket() -> WebSocket: """Get the current WebSocket object""" websocket = use_context(WebSocketContext) @@ -80,11 +95,6 @@ def use_websocket() -> WebSocket: return websocket -def use_scope() -> Scope: - """Get the current ASGI scope dictionary""" - return use_websocket().scope - - @dataclass class Options: """Optionsuration options for :class:`StarletteRenderServer`""" @@ -95,9 +105,6 @@ class Options: For more information see docs for ``starlette.middleware.cors.CORSMiddleware`` """ - redirect_root: bool = True - """Whether to redirect the root URL (with prefix) to ``index.html``""" - serve_static_files: bool = True """Whether or not to serve static files (i.e. web modules)""" @@ -116,39 +123,38 @@ def _setup_common_routes(options: Options, app: Starlette) -> None: # This really should be added to the APIRouter, but there's a bug in Starlette # BUG: https://github.com/tiangolo/fastapi/issues/1469 url_prefix = options.url_prefix + if options.serve_static_files: - app.mount( - f"{url_prefix}/client", - StaticFiles( - directory=str(CLIENT_BUILD_DIR), - html=True, - check_dir=True, - ), - name="idom_client_files", - ) - app.mount( - f"{url_prefix}/modules", - StaticFiles( - directory=str(IDOM_WEB_MODULES_DIR.current), - html=True, - check_dir=False, - ), - name="idom_web_module_files", - ) + wm_dir = IDOM_WEB_MODULES_DIR.current + web_module_files = StaticFiles(directory=wm_dir, html=True, check_dir=False) + app.mount(url_prefix + "/_api/modules", web_module_files) + app.mount(url_prefix + "/{_:path}/_api/modules", web_module_files) + + # register this last so it takes least priority + app.mount(url_prefix + "/", single_page_app_files()) + + +def single_page_app_files() -> Callable[..., Awaitable[None]]: + static_files_app = StaticFiles( + directory=CLIENT_BUILD_DIR, + html=True, + check_dir=False, + ) - if options.redirect_root: + async def spa_app(scope: Scope, receive: Receive, send: Send) -> None: + # Path safety is the responsibility of starlette.staticfiles.StaticFiles - + # using `safe_client_build_dir_path` is for convenience in this case. + path = safe_client_build_dir_path(scope["path"]).name + return await static_files_app({**scope, "path": path}, receive, send) - @app.route(f"{url_prefix}/") - def redirect_to_index(request: Request) -> RedirectResponse: - return RedirectResponse( - f"{url_prefix}/client/index.html?{request.query_params}" - ) + return spa_app def _setup_single_view_dispatcher_route( - url_prefix: str, app: Starlette, constructor: RootComponentConstructor + options: Options, app: Starlette, constructor: RootComponentConstructor ) -> None: - @app.websocket_route(f"{url_prefix}/stream") + @app.websocket_route(options.url_prefix + "/_api/stream") + @app.websocket_route(options.url_prefix + "/{path:path}/_api/stream") async def model_stream(socket: WebSocket) -> None: await socket.accept() send, recv = _make_send_recv_callbacks(socket) diff --git a/src/idom/server/tornado.py b/src/idom/server/tornado.py index d1d708c42..d8d9cf051 100644 --- a/src/idom/server/tornado.py +++ b/src/idom/server/tornado.py @@ -12,7 +12,7 @@ from tornado.httputil import HTTPServerRequest from tornado.log import enable_pretty_logging from tornado.platform.asyncio import AsyncIOMainLoop -from tornado.web import Application, RedirectHandler, RequestHandler, StaticFileHandler +from tornado.web import Application, RequestHandler, StaticFileHandler from tornado.websocket import WebSocketHandler from tornado.wsgi import WSGIContainer @@ -21,12 +21,13 @@ from idom.core.layout import Layout, LayoutEvent from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.core.types import ComponentConstructor +from idom.server.types import Location -from .utils import CLIENT_BUILD_DIR +from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path -RequestContext: type[Context[HTTPServerRequest | None]] = create_context( - None, "RequestContext" +ConnectionContext: type[Context[Connection | None]] = create_context( + None, "ConnectionContext" ) @@ -48,7 +49,11 @@ def configure( _add_handler( app, options, - _setup_common_routes(options) + _setup_single_view_dispatcher_route(component), + ( + # this route should take priority so set up it up first + _setup_single_view_dispatcher_route(component) + + _setup_common_routes(options) + ), ) @@ -84,28 +89,47 @@ async def serve_development_app( await server.close_all_connections() +def use_location() -> Location: + """Get the current route as a string""" + conn = use_connection() + search = conn.request.query + return Location(pathname="/" + conn.path, search="?" + search if search else "") + + +def use_scope() -> dict[str, Any]: + """Get the current WSGI environment dictionary""" + return WSGIContainer.environ(use_request()) + + def use_request() -> HTTPServerRequest: """Get the current ``HTTPServerRequest``""" - request = use_context(RequestContext) - if request is None: + return use_connection().request + + +def use_connection() -> Connection: + connection = use_context(ConnectionContext) + if connection is None: raise RuntimeError( # pragma: no cover - "No request. Are you running with a Tornado server?" + "No connection. Are you running with a Tornado server?" ) - return request + return connection -def use_scope() -> dict[str, Any]: - """Get the current WSGI environment dictionary""" - return WSGIContainer.environ(use_request()) +@dataclass +class Connection: + """A simple wrapper for holding connection information""" + + request: HTTPServerRequest + """The current request object""" + + path: str + """The current path being served""" @dataclass class Options: """Render server options for :class:`TornadoRenderServer` subclasses""" - redirect_root: bool = True - """Whether to redirect the root URL (with prefix) to ``index.html``""" - serve_static_files: bool = True """Whether or not to serve static files (i.e. web modules)""" @@ -118,29 +142,25 @@ class Options: def _setup_common_routes(options: Options) -> _RouteHandlerSpecs: handlers: _RouteHandlerSpecs = [] + if options.serve_static_files: handlers.append( ( - r"/client/(.*)", + r"/.*/?_api/modules/(.*)", StaticFileHandler, - {"path": str(CLIENT_BUILD_DIR)}, + {"path": str(IDOM_WEB_MODULES_DIR.current)}, ) ) + + # register last to give lowest priority handlers.append( ( - r"/modules/(.*)", - StaticFileHandler, - {"path": str(IDOM_WEB_MODULES_DIR.current)}, + r"/(.*)", + SpaStaticFileHandler, + {"path": str(CLIENT_BUILD_DIR)}, ) ) - if options.redirect_root: - handlers.append( - ( - urljoin("/", options.url_prefix), - RedirectHandler, - {"url": "./client/index.html"}, - ) - ) + return handlers @@ -159,13 +179,25 @@ def _setup_single_view_dispatcher_route( ) -> _RouteHandlerSpecs: return [ ( - "/stream", + r"/(.*)/_api/stream", ModelStreamHandler, {"component_constructor": constructor}, - ) + ), + ( + r"/_api/stream", + ModelStreamHandler, + {"component_constructor": constructor}, + ), ] +class SpaStaticFileHandler(StaticFileHandler): + async def get(self, path: str, include_body: bool = True) -> None: + # Path safety is the responsibility of tornado.web.StaticFileHandler - + # using `safe_client_build_dir_path` is for convenience in this case. + return await super().get(safe_client_build_dir_path(path).name, include_body) + + class ModelStreamHandler(WebSocketHandler): """A web-socket handler that serves up a new model stream to each new client""" @@ -175,7 +207,7 @@ class ModelStreamHandler(WebSocketHandler): def initialize(self, component_constructor: ComponentConstructor) -> None: self._component_constructor = component_constructor - async def open(self, *args: str, **kwargs: str) -> None: + async def open(self, path: str = "", *args: Any, **kwargs: Any) -> None: message_queue: "AsyncQueue[str]" = AsyncQueue() async def send(value: VdomJsonPatch) -> None: @@ -188,7 +220,10 @@ async def recv() -> LayoutEvent: self._dispatch_future = asyncio.ensure_future( serve_json_patch( Layout( - RequestContext(self._component_constructor(), value=self.request) + ConnectionContext( + self._component_constructor(), + value=Connection(self.request, path), + ) ), send, recv, diff --git a/src/idom/server/types.py b/src/idom/server/types.py index 73b34f1b1..236ec70a5 100644 --- a/src/idom/server/types.py +++ b/src/idom/server/types.py @@ -1,6 +1,7 @@ from __future__ import annotations import asyncio +from dataclasses import dataclass from typing import Any, MutableMapping, TypeVar from typing_extensions import Protocol, runtime_checkable @@ -37,3 +38,21 @@ async def serve_development_app( def use_scope(self) -> MutableMapping[str, Any]: """Get an ASGI scope or WSGI environment dictionary""" + + def use_location(self) -> Location: + """Get the current location (URL)""" + + +@dataclass +class Location: + """Represents the current location (URL) + + Analogous to, but not necessarily identical to, the client-side + ``document.location`` object. + """ + + pathname: str + """the path of the URL for the location""" + + search: str = "" + """A search or query string - a '?' followed by the parameters of the URL.""" diff --git a/src/idom/server/utils.py b/src/idom/server/utils.py index d84ad34e4..ab647b483 100644 --- a/src/idom/server/utils.py +++ b/src/idom/server/utils.py @@ -2,6 +2,7 @@ import asyncio import logging +import os import socket from contextlib import closing from importlib import import_module @@ -9,6 +10,7 @@ from typing import Any, Iterator import idom +from idom.config import IDOM_WEB_MODULES_DIR from idom.types import RootComponentConstructor from .types import ServerImplementation @@ -46,13 +48,44 @@ def run( host = host port = port or find_available_port(host) - logger.info(f"Running with {type(app).__name__!r} at http://{host}:{port}") + app_cls = type(app) + logger.info( + f"Running with {app_cls.__module__}.{app_cls.__name__} at http://{host}:{port}" + ) asyncio.get_event_loop().run_until_complete( implementation.serve_development_app(app, host, port) ) +def safe_client_build_dir_path(path: str) -> Path: + """Prevent path traversal out of :data:`CLIENT_BUILD_DIR`""" + start, _, end = (path[:-1] if path.endswith("/") else path).rpartition("/") + file = end or start + final_path = traversal_safe_path(CLIENT_BUILD_DIR, file) + return final_path if final_path.is_file() else (CLIENT_BUILD_DIR / "index.html") + + +def safe_web_modules_dir_path(path: str) -> Path: + """Prevent path traversal out of :data:`idom.config.IDOM_WEB_MODULES_DIR`""" + return traversal_safe_path(IDOM_WEB_MODULES_DIR.current, *path.split("/")) + + +def traversal_safe_path(root: str | Path, *unsafe: str | Path) -> Path: + """Raise a ``ValueError`` if the ``unsafe`` path resolves outside the root dir.""" + root = os.path.abspath(root) + + # Resolve relative paths but not symlinks - symlinks should be ok since their + # presence and where they point is under the control of the developer. + path = os.path.abspath(os.path.join(root, *unsafe)) + + if os.path.commonprefix([root, path]) != root: + # If the common prefix is not root directory we resolved outside the root dir + raise ValueError("Unsafe path") + + return Path(path) + + def find_available_port( host: str, port_min: int = 8000, diff --git a/src/idom/testing/common.py b/src/idom/testing/common.py index 3e7ccbd0d..db7b2249e 100644 --- a/src/idom/testing/common.py +++ b/src/idom/testing/common.py @@ -1,16 +1,17 @@ from __future__ import annotations +import asyncio +import inspect import shutil import time from functools import wraps -from inspect import iscoroutinefunction from typing import Any, Awaitable, Callable, Generic, Optional, TypeVar, cast from uuid import uuid4 from weakref import ref -from typing_extensions import ParamSpec, Protocol +from typing_extensions import ParamSpec -from idom.config import IDOM_WEB_MODULES_DIR +from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT, IDOM_WEB_MODULES_DIR from idom.core.events import EventHandler, to_event_handler_function from idom.core.hooks import LifeCycleHook, current_hook @@ -24,14 +25,9 @@ def clear_idom_web_modules_dir() -> None: _P = ParamSpec("_P") _R = TypeVar("_R") _RC = TypeVar("_RC", covariant=True) -_DEFAULT_TIMEOUT = 3.0 -class _UntilFunc(Protocol[_RC]): - def __call__( - self, condition: Callable[[_RC], bool], timeout: float = _DEFAULT_TIMEOUT - ) -> Any: - ... +_DEFAULT_POLL_DELAY = 0.1 class poll(Generic[_R]): # noqa: N801 @@ -43,54 +39,54 @@ def __init__( *args: _P.args, **kwargs: _P.kwargs, ) -> None: - self.until: _UntilFunc[_R] - """Check that the coroutines result meets a condition within the timeout""" + coro: Callable[_P, Awaitable[_R]] + if not inspect.iscoroutinefunction(function): + + async def coro(*args: _P.args, **kwargs: _P.kwargs) -> _R: + return cast(_R, function(*args, **kwargs)) - if iscoroutinefunction(function): - coro_function = cast(Callable[_P, Awaitable[_R]], function) - - async def coro_until( - condition: Callable[[_R], bool], timeout: float = _DEFAULT_TIMEOUT - ) -> None: - started_at = time.time() - while True: - result = await coro_function(*args, **kwargs) - if condition(result): - break - elif (time.time() - started_at) > timeout: # pragma: no cover - raise TimeoutError( - f"Condition not met within {timeout} " - f"seconds - last value was {result!r}" - ) - - self.until = coro_until else: - sync_function = cast(Callable[_P, _R], function) - - def sync_until( - condition: Callable[[_R], bool] | Any, timeout: float = _DEFAULT_TIMEOUT - ) -> None: - started_at = time.time() - while True: - result = sync_function(*args, **kwargs) - if condition(result): - break - elif (time.time() - started_at) > timeout: # pragma: no cover - raise TimeoutError( - f"Condition not met within {timeout} " - f"seconds - last value was {result!r}" - ) - - self.until = sync_until - - def until_is(self, right: Any, timeout: float = _DEFAULT_TIMEOUT) -> Any: + coro = cast(Callable[_P, Awaitable[_R]], function) + self._func = coro + self._args = args + self._kwargs = kwargs + + async def until( + self, + condition: Callable[[_R], bool], + timeout: float = IDOM_TESTING_DEFAULT_TIMEOUT.current, + delay: float = _DEFAULT_POLL_DELAY, + ) -> None: + """Check that the coroutines result meets a condition within the timeout""" + started_at = time.time() + while True: + await asyncio.sleep(delay) + result = await self._func(*self._args, **self._kwargs) + if condition(result): + break + elif (time.time() - started_at) > timeout: # pragma: no cover + raise TimeoutError( + f"Condition not met within {timeout} " + f"seconds - last value was {result!r}" + ) + + async def until_is( + self, + right: _R, + timeout: float = IDOM_TESTING_DEFAULT_TIMEOUT.current, + delay: float = _DEFAULT_POLL_DELAY, + ) -> None: """Wait until the result is identical to the given value""" - return self.until(lambda left: left is right, timeout) + return await self.until(lambda left: left is right, timeout, delay) - def until_equals(self, right: Any, timeout: float = _DEFAULT_TIMEOUT) -> Any: + async def until_equals( + self, + right: _R, + timeout: float = IDOM_TESTING_DEFAULT_TIMEOUT.current, + delay: float = _DEFAULT_POLL_DELAY, + ) -> None: """Wait until the result is equal to the given value""" - # not really sure why I need a type ignore comment here - return self.until(lambda left: left == right, timeout) # type: ignore + return await self.until(lambda left: left == right, timeout, delay) class HookCatcher: diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py index b89aa92ca..08f1e8cb1 100644 --- a/src/idom/testing/display.py +++ b/src/idom/testing/display.py @@ -34,15 +34,17 @@ def __init__( async def show( self, component: RootComponentConstructor, - query: dict[str, Any] | None = None, ) -> None: self._next_view_id += 1 view_id = f"display-{self._next_view_id}" self.server.mount(lambda: html.div({"id": view_id}, component())) - await self.page.goto(self.server.url(query=query)) + await self.goto("/") await self.page.wait_for_selector(f"#{view_id}", state="attached") + async def goto(self, path: str, query: Any | None = None) -> None: + await self.page.goto(self.server.url(path, query)) + async def __aenter__(self) -> DisplayFixture: es = self._exit_stack = AsyncExitStack() diff --git a/src/idom/types.py b/src/idom/types.py index 084c38883..ae11844eb 100644 --- a/src/idom/types.py +++ b/src/idom/types.py @@ -23,7 +23,7 @@ VdomDict, VdomJson, ) -from .server.types import ServerImplementation +from .server.types import Location, ServerImplementation __all__ = [ @@ -37,6 +37,7 @@ "ImportSourceDict", "Key", "LayoutType", + "Location", "RootComponentConstructor", "VdomAttributes", "VdomAttributesAndChildren", diff --git a/temp.py b/temp.py new file mode 100644 index 000000000..eff7c494a --- /dev/null +++ b/temp.py @@ -0,0 +1,11 @@ +from idom import component, html, run +from idom.server import starlette as server + + +@component +def ShowLocation(): + loc = server.use_location() + return html.h1(str(loc.pathname + loc.search)) + + +run(ShowLocation, implementation=server) diff --git a/tests/conftest.py b/tests/conftest.py index a6cae2a2d..10f92d1bf 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,6 +7,7 @@ from _pytest.config.argparsing import Parser from playwright.async_api import async_playwright +from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT from idom.testing import ( DisplayFixture, ServerFixture, @@ -40,7 +41,7 @@ async def server(): @pytest.fixture(scope="session") async def page(browser): pg = await browser.new_page() - pg.set_default_timeout(5000) + pg.set_default_timeout(IDOM_TESTING_DEFAULT_TIMEOUT.current * 1000) try: yield pg finally: diff --git a/tests/test_core/test_events.py b/tests/test_core/test_events.py index 29210d19b..9b8cd2ae0 100644 --- a/tests/test_core/test_events.py +++ b/tests/test_core/test_events.py @@ -221,4 +221,4 @@ def outer_click_is_not_triggered(event): inner = await display.page.wait_for_selector("#inner") await inner.click() - poll(lambda: clicked.current).until_is(True) + await poll(lambda: clicked.current).until_is(True) diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index 744d21a12..77d73da01 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -204,18 +204,18 @@ def TestComponent(): await client_r_1_button.click() - poll_event_count.until_equals(1) - poll_render_count.until_equals(1) + await poll_event_count.until_equals(1) + await poll_render_count.until_equals(1) await client_r_2_button.click() - poll_event_count.until_equals(2) - poll_render_count.until_equals(2) + await poll_event_count.until_equals(2) + await poll_render_count.until_equals(2) await client_r_2_button.click() - poll_event_count.until_equals(3) - poll_render_count.until_equals(2) + await poll_event_count.until_equals(3) + await poll_render_count.until_equals(2) async def test_simple_input_with_use_state(display: DisplayFixture): diff --git a/tests/test_html.py b/tests/test_html.py index c4d74d86b..d4fe685d8 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -112,7 +112,7 @@ def HasScript(): return html.div( html.div({"id": "run-count", "data-value": 0}), html.script( - {"src": f"/modules/{file_name_template.format(src_id=src_id)}"} + {"src": f"/_api/modules/{file_name_template.format(src_id=src_id)}"} ), ) diff --git a/tests/test_server/test_common.py b/tests/test_server/test_common.py index ea0850ce9..733286fbb 100644 --- a/tests/test_server/test_common.py +++ b/tests/test_server/test_common.py @@ -5,6 +5,7 @@ import idom from idom import html from idom.server import default as default_implementation +from idom.server.types import Location from idom.server.utils import all_implementations from idom.testing import DisplayFixture, ServerFixture, poll @@ -75,3 +76,32 @@ def ShowScope(): await display.page.wait_for_selector("#scope") assert isinstance(scope.current, MutableMapping) + + +async def test_use_location(display: DisplayFixture): + location = idom.Ref() + + @poll + async def poll_location(): + """This needs to be async to allow the server to respond""" + return location.current + + @idom.component + def ShowRoute(): + location.current = display.server.implementation.use_location() + return html.pre({"id": "scope"}, str(location.current)) + + await display.show(ShowRoute) + + await poll_location.until_equals(Location("/", "")) + + for loc in [ + Location("/something"), + Location("/something/file.txt"), + Location("/another/something"), + Location("/another/something/file.txt"), + Location("/another/something/file.txt", "?key=value"), + Location("/another/something/file.txt", "?key1=value1&key2=value2"), + ]: + await display.goto(loc.pathname + loc.search) + await poll_location.until_equals(loc) diff --git a/tests/test_server/test_utils.py b/tests/test_server/test_utils.py index a24d607af..7d82898f4 100644 --- a/tests/test_server/test_utils.py +++ b/tests/test_server/test_utils.py @@ -10,6 +10,7 @@ from idom.server import flask as flask_implementation from idom.server.utils import find_available_port from idom.server.utils import run as sync_run +from idom.server.utils import traversal_safe_path from tests.tooling.loop import open_event_loop @@ -49,3 +50,16 @@ def run_in_thread(): await page.goto(url) await page.wait_for_selector("#sample") + + +@pytest.mark.parametrize( + "bad_path", + [ + "../escaped", + "ok/../../escaped", + "ok/ok-again/../../ok-yet-again/../../../escaped", + ], +) +def test_catch_unsafe_relative_path_traversal(tmp_path, bad_path): + with pytest.raises(ValueError, match="Unsafe path"): + traversal_safe_path(tmp_path, *bad_path.split("/")) diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 3f192cf11..57f2fb2e0 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -110,7 +110,7 @@ def ShowSimpleButton(): button = await display.page.wait_for_selector("#my-button") await button.click() - poll(lambda: is_clicked.current).until_is(True) + await poll(lambda: is_clicked.current).until_is(True) def test_module_from_file_source_conflict(tmp_path): diff --git a/tests/test_widgets.py b/tests/test_widgets.py index ab8d99f99..b557c8f93 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -118,12 +118,12 @@ def SomeComponent(): poll_value = poll(lambda: value.current) - poll_value.until_equals("hello") + await poll_value.until_equals("hello") await input_2.focus() await input_2.type(" world", delay=20) - poll_value.until_equals("hello world") + await poll_value.until_equals("hello world") async def test_use_linked_inputs_on_change_with_cast(display: DisplayFixture): @@ -145,12 +145,12 @@ def SomeComponent(): poll_value = poll(lambda: value.current) - poll_value.until_equals(1) + await poll_value.until_equals(1) await input_2.focus() await input_2.type("2") - poll_value.until_equals(12) + await poll_value.until_equals(12) async def test_use_linked_inputs_ignore_empty(display: DisplayFixture): @@ -174,13 +174,13 @@ def SomeComponent(): poll_value = poll(lambda: value.current) - poll_value.until_equals("1") + await poll_value.until_equals("1") await input_2.focus() await input_2.press("Backspace") - poll_value.until_equals("1") + await poll_value.until_equals("1") - await input_1.type("2") + await input_2.type("2") - poll_value.until_equals("2") + await poll_value.until_equals("2") diff --git a/tests/tooling/loop.py b/tests/tooling/loop.py index 9b872f1fa..043908694 100644 --- a/tests/tooling/loop.py +++ b/tests/tooling/loop.py @@ -1,11 +1,12 @@ import asyncio import sys import threading +import time from asyncio import wait_for from contextlib import contextmanager from typing import Iterator -from idom.testing import poll +from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT TIMEOUT = 3 @@ -37,7 +38,14 @@ def open_event_loop(as_current: bool = True) -> Iterator[asyncio.AbstractEventLo finally: if as_current: asyncio.set_event_loop(None) - poll(loop.is_running).until_is(False) + start = time.time() + while loop.is_running(): + if (time.time() - start) > IDOM_TESTING_DEFAULT_TIMEOUT.current: + raise TimeoutError( + "Failed to stop loop after " + f"{IDOM_TESTING_DEFAULT_TIMEOUT.current} seconds" + ) + time.sleep(0.1) loop.close() From 7621e379bd640b8ef7ca75095c45872c393ad35e Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Wed, 13 Apr 2022 09:54:32 -0700 Subject: [PATCH 056/253] Use "backend" instead of "server" (#726) * rename server to backend * rework docs to use backend instead of server * update import * add changelog entry * fix doctree * fix doc ref * rename to sections to "using a custom ..." * move build dir to _client * improve docstring * misc doc fixes - "server" -> "web server" - "Built-in Backends" -> "Native Backends" - spelling mistakes * more minor doc improvements --- .gitignore | 6 +- MANIFEST.in | 2 +- docs/app.py | 2 +- docs/source/about/changelog.rst | 5 ++ docs/source/about/contributor-guide.rst | 23 ++++---- .../components-with-state/index.rst | 2 +- .../responding-to-events/index.rst | 2 +- .../guides/creating-interfaces/index.rst | 4 +- docs/source/guides/escape-hatches/index.rst | 4 +- .../escape-hatches/using-a-custom-backend.rst | 9 +++ .../escape-hatches/using-a-custom-client.rst | 9 +++ .../writing-your-own-client.rst | 8 --- .../writing-your-own-server.rst | 8 --- .../getting-started/_examples/run_fastapi.py | 4 +- .../getting-started/_examples/run_flask.py | 4 +- .../getting-started/_examples/run_sanic.py | 4 +- .../_examples/run_starlette.py | 4 +- .../getting-started/_examples/run_tornado.py | 4 +- .../_static/embed-idom-view/main.py | 2 +- docs/source/guides/getting-started/index.rst | 6 +- .../getting-started/installing-idom.rst | 36 ++++++------ .../guides/getting-started/running-idom.rst | 56 +++++++++---------- docs/source/index.rst | 9 ++- scripts/live_docs.py | 2 +- src/client/snowpack.config.js | 2 +- src/idom/__init__.py | 6 +- src/idom/{server => backend}/__init__.py | 0 src/idom/{server => backend}/_asgi.py | 0 src/idom/{server => backend}/default.py | 6 +- src/idom/{server => backend}/fastapi.py | 0 src/idom/{server => backend}/flask.py | 2 +- src/idom/{server => backend}/sanic.py | 2 +- src/idom/{server => backend}/starlette.py | 2 +- src/idom/{server => backend}/tornado.py | 2 +- src/idom/{server => backend}/types.py | 6 +- src/idom/{server => backend}/utils.py | 14 +++-- src/idom/testing/server.py | 8 +-- src/idom/types.py | 4 +- temp.py | 2 +- tests/test_server/test_common.py | 6 +- tests/test_server/test_utils.py | 8 +-- tests/test_testing.py | 2 +- tests/test_web/test_module.py | 2 +- 43 files changed, 154 insertions(+), 135 deletions(-) create mode 100644 docs/source/guides/escape-hatches/using-a-custom-backend.rst create mode 100644 docs/source/guides/escape-hatches/using-a-custom-client.rst delete mode 100644 docs/source/guides/escape-hatches/writing-your-own-client.rst delete mode 100644 docs/source/guides/escape-hatches/writing-your-own-server.rst rename src/idom/{server => backend}/__init__.py (100%) rename src/idom/{server => backend}/_asgi.py (100%) rename src/idom/{server => backend}/default.py (90%) rename src/idom/{server => backend}/fastapi.py (100%) rename src/idom/{server => backend}/flask.py (99%) rename src/idom/{server => backend}/sanic.py (99%) rename src/idom/{server => backend}/starlette.py (99%) rename src/idom/{server => backend}/tornado.py (99%) rename src/idom/{server => backend}/types.py (88%) rename src/idom/{server => backend}/utils.py (88%) diff --git a/.gitignore b/.gitignore index 75485ddbf..50febabbe 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# --- Build Artifacts --- +src/idom/_client + # --- Jupyter --- *.ipynb_checkpoints *Untitled*.ipynb @@ -37,6 +40,5 @@ pip-wheel-metadata .vscode # --- JS --- - node_modules -src/idom/client + diff --git a/MANIFEST.in b/MANIFEST.in index 39ea6e477..b49a2df3d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,3 @@ -recursive-include src/idom/client * +recursive-include src/idom/_client * recursive-include src/idom/web/templates * include src/idom/py.typed diff --git a/docs/app.py b/docs/app.py index dfdf98040..ea71b2293 100644 --- a/docs/app.py +++ b/docs/app.py @@ -5,8 +5,8 @@ from sanic import Sanic, response from idom import component +from idom.backend.sanic import Options, configure, use_request from idom.core.types import ComponentConstructor -from idom.server.sanic import Options, configure, use_request from .examples import get_normalized_example_name, load_examples diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 352178dc8..75ae2669e 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -48,6 +48,11 @@ Changed: - IDOM's client now uses Preact instead of React - :pull:`721` +- Renamed ``idom.server`` to ``idom.backend`` - :pull:`726` + + Other references to "server implementations" have been renamed to "backend + implementations" throughout the documentation and code. + Removed: - ``redirect_root`` server option - :pull:`721` diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index b70b7cd32..caf882977 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -32,12 +32,6 @@ Still aren't sure what you have to offer? Just :discussion-type:`ask us ` and we'll answer them. - - Making a Pull Request --------------------- @@ -53,21 +47,25 @@ about how to get started. To make a change to IDOM you'll do the following: You use a ``git clone`` command to copy the code from GitHub to your computer. `Create a new branch `__: - You'll ``git checkout -b your-first-branch`` to create a new space to start your work + You'll ``git checkout -b your-first-branch`` to create a new space to start your work. :ref:`Prepare your Development Environment `: - We explain in more detail below how to install all IDOM's dependencies + We explain in more detail below how to install all IDOM's dependencies. `Push your changes `__: Once you've made changes to IDOM, you'll ``git push`` them to your fork. +:ref:`Create a changelog entry `: + Record your changes in the :ref:`changelog` so we can publicize them in the next release. + `Create a Pull Request `__: We'll review your changes, run some :ref:`tests ` and :ref:`equality checks ` and, with any luck, accept your request. At that point your contribution will be merged into the main codebase! + Creating a Changelog Entry -.......................... +-------------------------- As part of your pull request, you'll want to edit the `Changelog `__ by @@ -112,6 +110,11 @@ might look like: Development Environment ----------------------- +.. note:: + + If you have any questions during set up or development post on our + :discussion-type:`discussion board ` and we'll answer them. + In order to develop IDOM locally you'll first need to install the following: .. list-table:: @@ -120,7 +123,7 @@ In order to develop IDOM locally you'll first need to install the following: * - What to Install - How to Install - * - Git_ + * - Git - https://git-scm.com/book/en/v2/Getting-Started-Installing-Git * - Python >= 3.7 diff --git a/docs/source/guides/adding-interactivity/components-with-state/index.rst b/docs/source/guides/adding-interactivity/components-with-state/index.rst index 3925b3cf2..5317b98a2 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/index.rst +++ b/docs/source/guides/adding-interactivity/components-with-state/index.rst @@ -22,7 +22,7 @@ does not work: Try clicking the button to see that it does not cause a change. -After clicking "Next", if you check the server logs, you'll discover an +After clicking "Next", if you check your web server's logs, you'll discover an ``UnboundLocalError`` error. It turns out that in this case, the ``index = index + 1`` statement is similar to `trying to set global variables `__. diff --git a/docs/source/guides/adding-interactivity/responding-to-events/index.rst b/docs/source/guides/adding-interactivity/responding-to-events/index.rst index 3b3033bf6..6e916b6bf 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/index.rst +++ b/docs/source/guides/adding-interactivity/responding-to-events/index.rst @@ -100,7 +100,7 @@ Event Data Serialization Not all event data is serialized. The most notable example of this is the lack of a ``target`` key in the dictionary sent back to the handler. Instead, data which is not -inherhently JSON serializable must be treated on a case-by-case basis. A simple case +inherently JSON serializable must be treated on a case-by-case basis. A simple case to demonstrate this is the ``currentTime`` attribute of ``audio`` and ``video`` elements. Normally this would be accessible via ``event.target.currentTime``, but here it's simply passed in under the key ``currentTime``: diff --git a/docs/source/guides/creating-interfaces/index.rst b/docs/source/guides/creating-interfaces/index.rst index 74c662969..f8ec0016c 100644 --- a/docs/source/guides/creating-interfaces/index.rst +++ b/docs/source/guides/creating-interfaces/index.rst @@ -45,7 +45,7 @@ conditionally display more complex UIs. Section 1: HTML with IDOM ------------------------- -In a typical Python-base web application the resonsibility of defining the view along +In a typical Python-base web application the responsibility of defining the view along with its backing data and logic are distributed between a client and server respectively. With IDOM, both these tasks are centralized in a single place. The most foundational pilar of this capability is formed by allowing HTML interfaces to be @@ -112,7 +112,7 @@ Section 3: Rendering Data The last pillar of knowledge you need before you can start making :ref:`interactive interfaces ` is the ability to render sections of the UI given a collection of data. This will require you to understand how elements which are derived -from data in this way must be orgnized with :ref:`"keys" `. +from data in this way must be organized with :ref:`"keys" `. One case where we might want to do this is if items in a todo list come from a list of data that we want to sort and filter: diff --git a/docs/source/guides/escape-hatches/index.rst b/docs/source/guides/escape-hatches/index.rst index f17a3beb4..3ef1b7122 100644 --- a/docs/source/guides/escape-hatches/index.rst +++ b/docs/source/guides/escape-hatches/index.rst @@ -6,8 +6,8 @@ Escape Hatches javascript-components distributing-javascript - writing-your-own-server - writing-your-own-client + using-a-custom-backend + using-a-custom-client .. note:: diff --git a/docs/source/guides/escape-hatches/using-a-custom-backend.rst b/docs/source/guides/escape-hatches/using-a-custom-backend.rst new file mode 100644 index 000000000..f9d21208a --- /dev/null +++ b/docs/source/guides/escape-hatches/using-a-custom-backend.rst @@ -0,0 +1,9 @@ +.. _Writing Your Own Backend: +.. _Using a Custom Backend: + +Using a Custom Backend 🚧 +========================= + +.. note:: + + Under construction 🚧 diff --git a/docs/source/guides/escape-hatches/using-a-custom-client.rst b/docs/source/guides/escape-hatches/using-a-custom-client.rst new file mode 100644 index 000000000..95de23e59 --- /dev/null +++ b/docs/source/guides/escape-hatches/using-a-custom-client.rst @@ -0,0 +1,9 @@ +.. _Writing Your Own Client: +.. _Using a Custom Client: + +Using a Custom Client 🚧 +======================== + +.. note:: + + Under construction 🚧 diff --git a/docs/source/guides/escape-hatches/writing-your-own-client.rst b/docs/source/guides/escape-hatches/writing-your-own-client.rst deleted file mode 100644 index f52235813..000000000 --- a/docs/source/guides/escape-hatches/writing-your-own-client.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _Writing Your Own Client: - -Writing Your Own Client 🚧 -========================== - -.. note:: - - Under construction 🚧 diff --git a/docs/source/guides/escape-hatches/writing-your-own-server.rst b/docs/source/guides/escape-hatches/writing-your-own-server.rst deleted file mode 100644 index 51f0a70e9..000000000 --- a/docs/source/guides/escape-hatches/writing-your-own-server.rst +++ /dev/null @@ -1,8 +0,0 @@ -.. _Writing Your Own Server: - -Writing Your Own Server 🚧 -========================== - -.. note:: - - Under construction 🚧 diff --git a/docs/source/guides/getting-started/_examples/run_fastapi.py b/docs/source/guides/getting-started/_examples/run_fastapi.py index f114333bb..607ad7776 100644 --- a/docs/source/guides/getting-started/_examples/run_fastapi.py +++ b/docs/source/guides/getting-started/_examples/run_fastapi.py @@ -1,7 +1,7 @@ # :lines: 11- from idom import run -from idom.server import fastapi as fastapi_server +from idom.backend import fastapi as fastapi_server # the run() function is the entry point for examples @@ -11,7 +11,7 @@ from fastapi import FastAPI from idom import component, html -from idom.server.fastapi import configure +from idom.backend.fastapi import configure @component diff --git a/docs/source/guides/getting-started/_examples/run_flask.py b/docs/source/guides/getting-started/_examples/run_flask.py index 9f64d0e15..310aca60e 100644 --- a/docs/source/guides/getting-started/_examples/run_flask.py +++ b/docs/source/guides/getting-started/_examples/run_flask.py @@ -1,7 +1,7 @@ # :lines: 11- from idom import run -from idom.server import flask as flask_server +from idom.backend import flask as flask_server # the run() function is the entry point for examples @@ -11,7 +11,7 @@ from flask import Flask from idom import component, html -from idom.server.flask import configure +from idom.backend.flask import configure @component diff --git a/docs/source/guides/getting-started/_examples/run_sanic.py b/docs/source/guides/getting-started/_examples/run_sanic.py index 449e2b2e1..d5e8434db 100644 --- a/docs/source/guides/getting-started/_examples/run_sanic.py +++ b/docs/source/guides/getting-started/_examples/run_sanic.py @@ -1,7 +1,7 @@ # :lines: 11- from idom import run -from idom.server import sanic as sanic_server +from idom.backend import sanic as sanic_server # the run() function is the entry point for examples @@ -11,7 +11,7 @@ from sanic import Sanic from idom import component, html -from idom.server.sanic import configure +from idom.backend.sanic import configure @component diff --git a/docs/source/guides/getting-started/_examples/run_starlette.py b/docs/source/guides/getting-started/_examples/run_starlette.py index f287b831b..0010c5271 100644 --- a/docs/source/guides/getting-started/_examples/run_starlette.py +++ b/docs/source/guides/getting-started/_examples/run_starlette.py @@ -1,7 +1,7 @@ # :lines: 11- from idom import run -from idom.server import starlette as starlette_server +from idom.backend import starlette as starlette_server # the run() function is the entry point for examples @@ -11,7 +11,7 @@ from starlette.applications import Starlette from idom import component, html -from idom.server.starlette import configure +from idom.backend.starlette import configure @component diff --git a/docs/source/guides/getting-started/_examples/run_tornado.py b/docs/source/guides/getting-started/_examples/run_tornado.py index 313fdf4fe..0c1b35353 100644 --- a/docs/source/guides/getting-started/_examples/run_tornado.py +++ b/docs/source/guides/getting-started/_examples/run_tornado.py @@ -1,7 +1,7 @@ # :lines: 11- from idom import run -from idom.server import tornado as tornado_server +from idom.backend import tornado as tornado_server # the run() function is the entry point for examples @@ -12,7 +12,7 @@ import tornado.web from idom import component, html -from idom.server.tornado import configure +from idom.backend.tornado import configure @component diff --git a/docs/source/guides/getting-started/_static/embed-idom-view/main.py b/docs/source/guides/getting-started/_static/embed-idom-view/main.py index e33173173..32db294ee 100644 --- a/docs/source/guides/getting-started/_static/embed-idom-view/main.py +++ b/docs/source/guides/getting-started/_static/embed-idom-view/main.py @@ -2,7 +2,7 @@ from sanic.response import file from idom import component, html -from idom.server.sanic import Options, configure +from idom.backend.sanic import Options, configure app = Sanic("MyApp") diff --git a/docs/source/guides/getting-started/index.rst b/docs/source/guides/getting-started/index.rst index 1aed237d9..7d05d868e 100644 --- a/docs/source/guides/getting-started/index.rst +++ b/docs/source/guides/getting-started/index.rst @@ -106,9 +106,9 @@ Section 2: Running IDOM Once you've :ref:`installed IDOM `, you'll want to learn how to run an application. Throughout most of the examples in this documentation, you'll see the -:func:`~idom.server.utils.run` function used. While it's convenient tool for development -it shouldn't be used in production settings - it's slow, and could leak secrets through -debug log messages. +:func:`~idom.backend.utils.run` function used. While it's convenient tool for +development it shouldn't be used in production settings - it's slow, and could leak +secrets through debug log messages. .. idom:: _examples/hello_world diff --git a/docs/source/guides/getting-started/installing-idom.rst b/docs/source/guides/getting-started/installing-idom.rst index 06dffe0a7..352d82294 100644 --- a/docs/source/guides/getting-started/installing-idom.rst +++ b/docs/source/guides/getting-started/installing-idom.rst @@ -1,28 +1,28 @@ Installing IDOM =============== -Installing IDOM with ``pip`` will generally require doing so alongside a supported -server implementation. This can be done by specifying an installation extra using square -brackets. For example, if we want to run IDOM using `Starlette -`__ we would run: +You will typically ``pip`` install IDOM to alongside one of it's natively supported +backends. For example, if we want to run IDOM using the `Starlette +`__ backend you would run .. code-block:: bash pip install "idom[starlette]" -If you want to install a "pure" version of IDOM without a server implementation you can -do so without any installation extras. You might do this if you wanted to user a server -which is not officially supported or if you wanted to manually pin your dependencies: +If you want to install a "pure" version of IDOM without a backend implementation you can +do so without any installation extras. You might do this if you wanted to :ref:`use a +custom backend ` or if you wanted to manually pin your +dependencies: .. code-block:: bash pip install idom -Officially Supported Servers ----------------------------- +Native Backends +--------------- -IDOM includes built-in support for a variety web server implementations. To install the +IDOM includes built-in support for a variety backend implementations. To install the required dependencies for each you should substitute ``starlette`` from the ``pip install`` command above with one of the options below: @@ -39,15 +39,15 @@ If you need to, you can install more than one option by separating them with com pip install "idom[fastapi,flask,sanic,starlette,tornado]" Once this is complete you should be able to :ref:`run IDOM ` with your -chosen server implementation. +chosen implementation. -Installing In Other Frameworks ------------------------------- +Other Backends +-------------- -While IDOM can run in a variety of contexts, sometimes web frameworks require extra work -in order to integrate with them. In these cases, the IDOM team distributes bindings for -various frameworks as separate Python packages. For documentation on how to install and +While IDOM can run in a variety of contexts, sometimes frameworks require extra work in +order to integrate with them. In these cases, the IDOM team distributes bindings for +those frameworks as separate Python packages. For documentation on how to install and run IDOM in these supported frameworks, follow the links below: .. raw:: html @@ -96,8 +96,8 @@ run IDOM in these supported frameworks, follow the links below: :transparent-text-color:`Plotly Dash` -Installing for Development --------------------------- +For Development +--------------- If you want to contribute to the development of IDOM or modify it, you'll want to install a development version of IDOM. This involves cloning the repository where IDOM's diff --git a/docs/source/guides/getting-started/running-idom.rst b/docs/source/guides/getting-started/running-idom.rst index 0b5ea60e3..c0ae0e449 100644 --- a/docs/source/guides/getting-started/running-idom.rst +++ b/docs/source/guides/getting-started/running-idom.rst @@ -1,7 +1,7 @@ Running IDOM ============ -The simplest way to run IDOM is with the :func:`~idom.server.utils.run` function. This +The simplest way to run IDOM is with the :func:`~idom.backend.utils.run` function. This is the method you'll see used throughout this documentation. However, this executes your application using a development server which is great for testing, but probably not what if you're :ref:`deploying in production `. Below are some @@ -12,18 +12,18 @@ Running IDOM in Production -------------------------- The first thing you'll need to do if you want to run IDOM in production is choose a -server implementation and follow its documentation on how to create and run an -application. This is the server :ref:`you probably chose ` -when installing IDOM. Then you'll need to configure that application with an IDOM view. -We should the basics how how to run each supported server below, but all implementations -will follow a pattern similar to the following: +backend implementation and follow its documentation on how to create and run an +application. This is the backend :ref:`you probably chose ` when +installing IDOM. Then you'll need to configure that application with an IDOM view. We +show the basics of how to set up, and then run, each supported backend below, but all +implementations will follow a pattern similar to the following: .. code-block:: - from my_chosen_server import Application + from my_chosen_backend import Application from idom import component, html - from idom.server.my_chosen_server import configure + from idom.backend.my_chosen_backend import configure @component @@ -34,8 +34,8 @@ will follow a pattern similar to the following: app = Application() configure(app, HelloWorld) -You'll then run this ``app`` using a `ASGI `__ or -`WSGI `__ server from the command line. +You'll then run this ``app`` using an `ASGI `__ +or `WSGI `__ server from the command line. Running with `FastAPI `__ @@ -43,8 +43,8 @@ Running with `FastAPI `__ .. idom:: _examples/run_fastapi -Then assuming you put this in ``main.py``, you can run the ``app`` using `Uvicorn -`__: +Then assuming you put this in ``main.py``, you can run the ``app`` using the `Uvicorn +`__ ASGI server: .. code-block:: bash @@ -56,8 +56,8 @@ Running with `Flask `__ .. idom:: _examples/run_flask -Then assuming you put this in ``main.py``, you can run the ``app`` using `Gunicorn -`__: +Then assuming you put this in ``main.py``, you can run the ``app`` using the `Gunicorn +`__ WSGI server: .. code-block:: bash @@ -82,8 +82,8 @@ Running with `Starlette `__ .. idom:: _examples/run_starlette -Then assuming you put this in ``main.py``, you can run the application using `Uvicorn -`__: +Then assuming you put this in ``main.py``, you can run the application using the +`Uvicorn `__ ASGI server: .. code-block:: bash @@ -143,25 +143,25 @@ Errors will be displayed where the uppermost component is located in the view: .. idom:: _examples/debug_error_example -Server Configuration Options ----------------------------- +Backend Configuration Options +----------------------------- -IDOM's various server implementations come with ``Options`` that can be passed to their +IDOM's various backend implementations come with ``Options`` that can be passed to their respective ``configure()`` functions in the following way: .. code-block:: - from idom.server. import configure, Options + from idom.backend. import configure, Options configure(app, MyComponent, Options(...)) -To learn more read about the options for your chosen server ````: +To learn more read about the options for your chosen backend ````: -- :class:`idom.server.fastapi.Options` -- :class:`idom.server.flask.Options` -- :class:`idom.server.sanic.Options` -- :class:`idom.server.starlette.Options` -- :class:`idom.server.tornado.Options` +- :class:`idom.backend.fastapi.Options` +- :class:`idom.backend.flask.Options` +- :class:`idom.backend.sanic.Options` +- :class:`idom.backend.starlette.Options` +- :class:`idom.backend.tornado.Options` Embed in an Existing Webpage @@ -187,8 +187,8 @@ embedding one the examples from this documentation into your own webpage: .. note:: For more information on how to use the client see the :ref:`Javascript API` - reference. Or if you need to, your can :ref:`write your own server implementation - `. + reference. Or if you need to, your can :ref:`write your own backend implementation + `. As mentioned though, this is connecting to the server that is hosting this documentation. If you want to connect to a view from your own server, you'll need to diff --git a/docs/source/index.rst b/docs/source/index.rst index 1a48693f9..5260157fc 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -73,8 +73,13 @@ of HTML element called an ``h1`` `section heading `__. Importantly though, a ``@component`` decorator has been applied to the ``App`` function to turn it into a :ref:`component `. Finally, we :ref:`run -` an application server by passing the ``App`` component to the ``run()`` -function. +` a development web server by passing the ``App`` component to the +``run()`` function. + +.. note:: + + See :ref:`Running IDOM in Production` to learn how to use a production-grade server + to run IDOM. Learning IDOM diff --git a/scripts/live_docs.py b/scripts/live_docs.py index e21339326..540af79db 100644 --- a/scripts/live_docs.py +++ b/scripts/live_docs.py @@ -14,7 +14,7 @@ ) from docs.app import IDOM_MODEL_SERVER_URL_PREFIX, Example, make_app, reload_examples -from idom.server.sanic import Options, configure, serve_development_app +from idom.backend.sanic import Options, configure, serve_development_app from idom.testing import clear_idom_web_modules_dir diff --git a/src/client/snowpack.config.js b/src/client/snowpack.config.js index 265fd674c..5076548e2 100644 --- a/src/client/snowpack.config.js +++ b/src/client/snowpack.config.js @@ -1,7 +1,7 @@ module.exports = { workspaceRoot: false, testOptions: { files: ["**/tests/**/*", "**/*.test.*"] }, - buildOptions: { out: "../idom/client" }, + buildOptions: { out: "../idom/_client" }, mount: { public: { url: "/", static: true } }, optimize: { bundle: true, target: "es2018" }, alias: { diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 8fd4da745..44b9ef451 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -1,4 +1,5 @@ -from . import config, html, logging, sample, server, types, web +from . import backend, config, html, logging, sample, types, web +from .backend.utils import run from .core import hooks from .core.component import component from .core.events import event @@ -15,7 +16,6 @@ from .core.layout import Layout from .core.serve import Stop from .core.vdom import vdom -from .server.utils import run from .utils import Ref, html_to_vdom from .widgets import hotswap @@ -37,7 +37,7 @@ "Ref", "run", "sample", - "server", + "backend", "Stop", "types", "use_callback", diff --git a/src/idom/server/__init__.py b/src/idom/backend/__init__.py similarity index 100% rename from src/idom/server/__init__.py rename to src/idom/backend/__init__.py diff --git a/src/idom/server/_asgi.py b/src/idom/backend/_asgi.py similarity index 100% rename from src/idom/server/_asgi.py rename to src/idom/backend/_asgi.py diff --git a/src/idom/server/default.py b/src/idom/backend/default.py similarity index 90% rename from src/idom/server/default.py rename to src/idom/backend/default.py index e87bfcbba..0cd593388 100644 --- a/src/idom/server/default.py +++ b/src/idom/backend/default.py @@ -5,7 +5,7 @@ from idom.types import RootComponentConstructor -from .types import Location, ServerImplementation +from .types import BackendImplementation, Location from .utils import all_implementations @@ -45,10 +45,10 @@ def use_location() -> Location: return _default_implementation().use_location() -_DEFAULT_IMPLEMENTATION: ServerImplementation[Any] | None = None +_DEFAULT_IMPLEMENTATION: BackendImplementation[Any] | None = None -def _default_implementation() -> ServerImplementation[Any]: +def _default_implementation() -> BackendImplementation[Any]: """Get the first available server implementation""" global _DEFAULT_IMPLEMENTATION diff --git a/src/idom/server/fastapi.py b/src/idom/backend/fastapi.py similarity index 100% rename from src/idom/server/fastapi.py rename to src/idom/backend/fastapi.py diff --git a/src/idom/server/flask.py b/src/idom/backend/flask.py similarity index 99% rename from src/idom/server/flask.py rename to src/idom/backend/flask.py index cf3f34dd1..6eacbe2c3 100644 --- a/src/idom/server/flask.py +++ b/src/idom/backend/flask.py @@ -25,11 +25,11 @@ from werkzeug.serving import BaseWSGIServer, make_server import idom +from idom.backend.types import Location from idom.core.hooks import Context, create_context, use_context from idom.core.layout import LayoutEvent, LayoutUpdate from idom.core.serve import serve_json_patch from idom.core.types import ComponentType, RootComponentConstructor -from idom.server.types import Location from idom.utils import Ref from .utils import safe_client_build_dir_path, safe_web_modules_dir_path diff --git a/src/idom/server/sanic.py b/src/idom/backend/sanic.py similarity index 99% rename from src/idom/server/sanic.py rename to src/idom/backend/sanic.py index 7fa23abae..bb3397e74 100644 --- a/src/idom/server/sanic.py +++ b/src/idom/backend/sanic.py @@ -14,6 +14,7 @@ from sanic_cors import CORS from websockets.legacy.protocol import WebSocketCommonProtocol +from idom.backend.types import Location from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent from idom.core.serve import ( @@ -24,7 +25,6 @@ serve_json_patch, ) from idom.core.types import RootComponentConstructor -from idom.server.types import Location from ._asgi import serve_development_asgi from .utils import safe_client_build_dir_path, safe_web_modules_dir_path diff --git a/src/idom/server/starlette.py b/src/idom/backend/starlette.py similarity index 99% rename from src/idom/server/starlette.py rename to src/idom/backend/starlette.py index d2fb369b6..5b78c8111 100644 --- a/src/idom/server/starlette.py +++ b/src/idom/backend/starlette.py @@ -12,6 +12,7 @@ from starlette.types import Receive, Scope, Send from starlette.websockets import WebSocket, WebSocketDisconnect +from idom.backend.types import Location from idom.config import IDOM_WEB_MODULES_DIR from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent @@ -22,7 +23,6 @@ serve_json_patch, ) from idom.core.types import RootComponentConstructor -from idom.server.types import Location from ._asgi import serve_development_asgi from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path diff --git a/src/idom/server/tornado.py b/src/idom/backend/tornado.py similarity index 99% rename from src/idom/server/tornado.py rename to src/idom/backend/tornado.py index d8d9cf051..113013376 100644 --- a/src/idom/server/tornado.py +++ b/src/idom/backend/tornado.py @@ -16,12 +16,12 @@ from tornado.websocket import WebSocketHandler from tornado.wsgi import WSGIContainer +from idom.backend.types import Location from idom.config import IDOM_WEB_MODULES_DIR from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.core.types import ComponentConstructor -from idom.server.types import Location from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path diff --git a/src/idom/server/types.py b/src/idom/backend/types.py similarity index 88% rename from src/idom/server/types.py rename to src/idom/backend/types.py index 236ec70a5..8a793b4f1 100644 --- a/src/idom/server/types.py +++ b/src/idom/backend/types.py @@ -6,15 +6,15 @@ from typing_extensions import Protocol, runtime_checkable -from idom.types import RootComponentConstructor +from idom.core.types import RootComponentConstructor _App = TypeVar("_App") @runtime_checkable -class ServerImplementation(Protocol[_App]): - """Common interface for IDOM's builti-in server implementations""" +class BackendImplementation(Protocol[_App]): + """Common interface for built-in web server/framework integrations""" def configure( self, diff --git a/src/idom/server/utils.py b/src/idom/backend/utils.py similarity index 88% rename from src/idom/server/utils.py rename to src/idom/backend/utils.py index ab647b483..b4c864d97 100644 --- a/src/idom/server/utils.py +++ b/src/idom/backend/utils.py @@ -13,11 +13,11 @@ from idom.config import IDOM_WEB_MODULES_DIR from idom.types import RootComponentConstructor -from .types import ServerImplementation +from .types import BackendImplementation logger = logging.getLogger(__name__) -CLIENT_BUILD_DIR = Path(idom.__file__).parent / "client" +CLIENT_BUILD_DIR = Path(idom.__file__).parent / "_client" SUPPORTED_PACKAGES = ( "starlette", @@ -32,7 +32,7 @@ def run( component: RootComponentConstructor, host: str = "127.0.0.1", port: int | None = None, - implementation: ServerImplementation[Any] | None = None, + implementation: BackendImplementation[Any] | None = None, ) -> None: """Run a component with a development server""" logger.warn( @@ -113,15 +113,17 @@ def find_available_port( ) -def all_implementations() -> Iterator[ServerImplementation[Any]]: +def all_implementations() -> Iterator[BackendImplementation[Any]]: """Yield all available server implementations""" for name in SUPPORTED_PACKAGES: try: - module = import_module(f"idom.server.{name}") + relative_import_name = f"{__name__.rsplit('.', 1)[0]}.{name}" + module = import_module(relative_import_name) except ImportError: # pragma: no cover + logger.debug(f"Failed to import {name!r}", exc_info=True) continue - if not isinstance(module, ServerImplementation): + if not isinstance(module, BackendImplementation): raise TypeError( # pragma: no cover f"{module.__name__!r} is an invalid implementation" ) diff --git a/src/idom/testing/server.py b/src/idom/testing/server.py index 862d50a7d..6ca26429b 100644 --- a/src/idom/testing/server.py +++ b/src/idom/testing/server.py @@ -7,9 +7,9 @@ from typing import Any, Optional, Tuple, Type, Union from urllib.parse import urlencode, urlunparse -from idom.server import default as default_server -from idom.server.types import ServerImplementation -from idom.server.utils import find_available_port +from idom.backend import default as default_server +from idom.backend.types import BackendImplementation +from idom.backend.utils import find_available_port from idom.widgets import hotswap from .logs import LogAssertionError, capture_idom_logs, list_logged_exceptions @@ -36,7 +36,7 @@ def __init__( host: str = "127.0.0.1", port: Optional[int] = None, app: Any | None = None, - implementation: ServerImplementation[Any] | None = None, + implementation: BackendImplementation[Any] | None = None, options: Any | None = None, ) -> None: self.host = host diff --git a/src/idom/types.py b/src/idom/types.py index ae11844eb..4f208068a 100644 --- a/src/idom/types.py +++ b/src/idom/types.py @@ -4,6 +4,7 @@ - :mod:`idom.server.types` """ +from .backend.types import BackendImplementation, Location from .core.hooks import Context from .core.types import ( ComponentConstructor, @@ -23,7 +24,6 @@ VdomDict, VdomJson, ) -from .server.types import Location, ServerImplementation __all__ = [ @@ -45,5 +45,5 @@ "VdomChildren", "VdomDict", "VdomJson", - "ServerImplementation", + "BackendImplementation", ] diff --git a/temp.py b/temp.py index eff7c494a..a67caa896 100644 --- a/temp.py +++ b/temp.py @@ -1,5 +1,5 @@ from idom import component, html, run -from idom.server import starlette as server +from idom.backend import starlette as server @component diff --git a/tests/test_server/test_common.py b/tests/test_server/test_common.py index 733286fbb..91c6dc41e 100644 --- a/tests/test_server/test_common.py +++ b/tests/test_server/test_common.py @@ -4,9 +4,9 @@ import idom from idom import html -from idom.server import default as default_implementation -from idom.server.types import Location -from idom.server.utils import all_implementations +from idom.backend import default as default_implementation +from idom.backend.types import Location +from idom.backend.utils import all_implementations from idom.testing import DisplayFixture, ServerFixture, poll diff --git a/tests/test_server/test_utils.py b/tests/test_server/test_utils.py index 7d82898f4..4820b6031 100644 --- a/tests/test_server/test_utils.py +++ b/tests/test_server/test_utils.py @@ -6,11 +6,11 @@ import pytest from playwright.async_api import Page +from idom.backend import flask as flask_implementation +from idom.backend.utils import find_available_port +from idom.backend.utils import run as sync_run +from idom.backend.utils import traversal_safe_path from idom.sample import SampleApp as SampleApp -from idom.server import flask as flask_implementation -from idom.server.utils import find_available_port -from idom.server.utils import run as sync_run -from idom.server.utils import traversal_safe_path from tests.tooling.loop import open_event_loop diff --git a/tests/test_testing.py b/tests/test_testing.py index abd738643..70d882a81 100644 --- a/tests/test_testing.py +++ b/tests/test_testing.py @@ -4,9 +4,9 @@ import pytest from idom import testing +from idom.backend import starlette as starlette_implementation from idom.logging import ROOT_LOGGER from idom.sample import SampleApp as SampleApp -from idom.server import starlette as starlette_implementation def test_assert_idom_logged_does_not_supress_errors(): diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 57f2fb2e0..16846d2f5 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -4,7 +4,7 @@ from sanic import Sanic import idom -from idom.server import sanic as sanic_implementation +from idom.backend import sanic as sanic_implementation from idom.testing import ( DisplayFixture, ServerFixture, From fc8ff68d3ed4f206a6bab57d408ccdfd64899f62 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 14 Apr 2022 19:44:34 -0700 Subject: [PATCH 057/253] version 0.38.0-a2 --- VERSION | 2 +- docs/source/about/changelog.rst | 6 ++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index e75fdb24d..a01ea72a3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.38.0-a1 +0.38.0-a2 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 75ae2669e..87625e949 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,12 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +Nothing yet... + + +0.38.0-a2 +--------- + Added: - Implement ``use_location()`` hook - :pull:`721` diff --git a/src/client/package-lock.json b/src/client/package-lock.json index a04661cf2..aa4bb0761 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.38.0-a1", + "version": "0.38.0-a2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.38.0-a1", + "version": "0.38.0-a2", "license": "MIT", "workspaces": [ "./packages/*" @@ -5159,7 +5159,7 @@ } }, "packages/idom-app-react": { - "version": "0.38.0-a1", + "version": "0.38.0-a2", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5175,7 +5175,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.38.0-a1", + "version": "0.38.0-a2", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 249a6a895..580090d1f 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.38.0-a1", + "version": "0.38.0-a2", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 80accecd4..dcedcef3e 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.38.0-a1" + "version": "0.38.0-a2" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 342311647..ea83d7015 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.38.0-a1" + "version": "0.38.0-a2" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 44b9ef451..3ca53e506 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -21,7 +21,7 @@ __author__ = "idom-team" -__version__ = "0.38.0-a1" # DO NOT MODIFY +__version__ = "0.38.0-a2" # DO NOT MODIFY __all__ = [ "component", From 5091501b089ed2d6700cde5828fb51b1acad5b1e Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 15 Apr 2022 00:14:34 -0700 Subject: [PATCH 058/253] make Layout context management async (#730) * make Layout context management async * fix LayoutType * changelog entry --- docs/source/about/changelog.rst | 6 ++- docs/source/about/contributor-guide.rst | 6 +-- src/idom/core/layout.py | 7 +-- src/idom/core/serve.py | 2 +- src/idom/core/types.py | 10 ++-- tests/test_core/test_hooks.py | 70 ++++++++++++------------- tests/test_core/test_layout.py | 68 ++++++++++++------------ 7 files changed, 85 insertions(+), 84 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 87625e949..8a49a2747 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,9 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -Nothing yet... +Changed: + +- :pull:`730` - Layout context management is not async 0.38.0-a2 @@ -444,7 +446,7 @@ See :ref:`Custom JavaScript Components` for details on the new interface. - Make docs section margins larger - :issue:`450` - Search broken in docs - :issue:`443` - Move src/idom/client out of Python package - :issue:`429` -- Use composition instead of classes with Layout and LifeCycleHook - :issue:`412` +- Use composition instead of classes async with Layout and LifeCycleHook - :issue:`412` - Remove Python language extension - :issue:`282` - Add keys to models so React doesn't complain of child arrays requiring them - :issue:`255` diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index caf882977..47cefe3e1 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -92,15 +92,15 @@ might look like: **Added** - - A really cool new feature - :pull:`123` + - :pull:`123` - A really cool new feature **Changed** - - The behavior of some existing feature - :pull:`456` + - :pull:`456` - The behavior of some existing feature **Fixed** - - Some really bad bug - :issue:`789` + - :issue:`789` - Some really bad bug .. note:: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 1f67bd586..b8b2346ae 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -61,9 +61,6 @@ class LayoutEvent(NamedTuple): """A list of event data passed to the event handler.""" -_Self = TypeVar("_Self", bound="Layout") - - class Layout: """Responsible for "rendering" components. That is, turning them into VDOM.""" @@ -84,7 +81,7 @@ def __init__(self, root: "ComponentType") -> None: raise TypeError(f"Expected a ComponentType, not {type(root)!r}.") self.root = root - def __enter__(self: _Self) -> _Self: + async def __aenter__(self) -> Layout: # create attributes here to avoid access before entering context manager self._event_handlers: EventHandlerDict = {} @@ -98,7 +95,7 @@ def __enter__(self: _Self) -> _Self: return self - def __exit__(self, *exc: Any) -> None: + async def __aexit__(self, *exc: Any) -> None: root_csid = self._root_life_cycle_state_id root_model_state = self._model_states_by_life_cycle_state_id[root_csid] self._unmount_model_states([root_model_state]) diff --git a/src/idom/core/serve.py b/src/idom/core/serve.py index af21f40f7..fd21c55bf 100644 --- a/src/idom/core/serve.py +++ b/src/idom/core/serve.py @@ -39,7 +39,7 @@ async def serve_json_patch( recv: RecvCoroutine, ) -> None: """Run a dispatch loop for a single view instance""" - with layout: + async with layout: try: async with create_task_group() as task_group: task_group.start_soon(_single_outgoing_loop, layout, send) diff --git a/src/idom/core/types.py b/src/idom/core/types.py index cdac08b50..3943a154b 100644 --- a/src/idom/core/types.py +++ b/src/idom/core/types.py @@ -51,7 +51,6 @@ def should_render(self: _OwnType, new: _OwnType) -> bool: """Whether the new component instance should be rendered.""" -_Self = TypeVar("_Self") _Render = TypeVar("_Render", covariant=True) _Event = TypeVar("_Event", contravariant=True) @@ -66,11 +65,14 @@ async def render(self) -> _Render: async def deliver(self, event: _Event) -> None: """Relay an event to its respective handler""" - def __enter__(self: _Self) -> _Self: + async def __aenter__(self) -> LayoutType[_Render, _Event]: """Prepare the layout for its first render""" - def __exit__( - self, exc_type: Type[Exception], exc_value: Exception, traceback: TracebackType + async def __aexit__( + self, + exc_type: Type[Exception], + exc_value: Exception, + traceback: TracebackType, ) -> Optional[bool]: """Clean up the view after its final render""" diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index 77d73da01..6aac2fec1 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -22,7 +22,7 @@ def SimpleComponentWithHook(): with pytest.raises(RuntimeError, match="No life cycle hook is active"): await SimpleComponentWithHook().render() - with idom.Layout(SimpleComponentWithHook()) as layout: + async with idom.Layout(SimpleComponentWithHook()) as layout: await layout.render() @@ -35,7 +35,7 @@ def SimpleStatefulComponent(): sse = SimpleStatefulComponent() - with idom.Layout(sse) as layout: + async with idom.Layout(sse) as layout: patch_1 = await render_json_patch(layout) assert patch_1.path == "" assert_same_items( @@ -75,7 +75,7 @@ def SimpleStatefulComponent(): sse = SimpleStatefulComponent() - with idom.Layout(sse) as layout: + async with idom.Layout(sse) as layout: await layout.render() await layout.render() await layout.render() @@ -108,7 +108,7 @@ def Inner(): state, set_inner_state.current = idom.use_state(make_default) return idom.html.div(state) - with idom.Layout(Outer()) as layout: + async with idom.Layout(Outer()) as layout: await layout.render() assert constructor_call_count.current == 1 @@ -141,7 +141,7 @@ def Counter(): count.current, set_count.current = idom.hooks.use_state(0) return idom.html.div(count.current) - with idom.Layout(Counter()) as layout: + async with idom.Layout(Counter()) as layout: await layout.render() for i in range(4): @@ -308,7 +308,7 @@ def CheckNoEffectYet(): effect_triggers_after_final_render.current = not effect_triggered.current return idom.html.div() - with idom.Layout(OuterComponent()) as layout: + async with idom.Layout(OuterComponent()) as layout: await layout.render() assert effect_triggered.current @@ -336,7 +336,7 @@ def cleanup(): return idom.html.div() - with idom.Layout(ComponentWithEffect()) as layout: + async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() assert not cleanup_triggered.current @@ -375,7 +375,7 @@ def cleanup(): return idom.html.div() - with idom.Layout(OuterComponent()) as layout: + async with idom.Layout(OuterComponent()) as layout: await layout.render() assert not cleanup_triggered.current @@ -406,7 +406,7 @@ def effect(): return idom.html.div() - with idom.Layout(ComponentWithMemoizedEffect()) as layout: + async with idom.Layout(ComponentWithMemoizedEffect()) as layout: await layout.render() assert effect_run_count.current == 1 @@ -449,7 +449,7 @@ def cleanup(): return idom.html.div() - with idom.Layout(ComponentWithEffect()) as layout: + async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() assert cleanup_trigger_count.current == 0 @@ -476,7 +476,7 @@ async def effect(): return idom.html.div() - with idom.Layout(ComponentWithAsyncEffect()) as layout: + async with idom.Layout(ComponentWithAsyncEffect()) as layout: await layout.render() await asyncio.wait_for(effect_ran.wait(), 1) @@ -496,7 +496,7 @@ async def effect(): return idom.html.div() - with idom.Layout(ComponentWithAsyncEffect()) as layout: + async with idom.Layout(ComponentWithAsyncEffect()) as layout: await layout.render() component_hook.latest.schedule_render() @@ -527,7 +527,7 @@ async def effect(): return idom.html.div() - with idom.Layout(ComponentWithLongWaitingEffect()) as layout: + async with idom.Layout(ComponentWithLongWaitingEffect()) as layout: await layout.render() await effect_ran.wait() @@ -554,7 +554,7 @@ def bad_effect(): return idom.html.div() with assert_idom_logged(match_message=r"Layout post-render effect .* failed"): - with idom.Layout(ComponentWithEffect()) as layout: + async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() # no error @@ -575,7 +575,7 @@ def bad_cleanup(): return idom.html.div() with assert_idom_logged(match_error=r"Layout post-render effect .* failed"): - with idom.Layout(ComponentWithEffect()) as layout: + async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() component_hook.latest.schedule_render() await layout.render() # no error @@ -604,7 +604,7 @@ def bad_cleanup(): match_message=r"Pre-unmount effect .*? failed", error_type=ValueError, ): - with idom.Layout(OuterComponent()) as layout: + async with idom.Layout(OuterComponent()) as layout: await layout.render() set_key.current("second") await layout.render() # no error @@ -629,7 +629,7 @@ def Counter(initial_count): ) return idom.html.div() - with idom.Layout(Counter(0)) as layout: + async with idom.Layout(Counter(0)) as layout: await layout.render() assert saved_count.current == 0 @@ -659,7 +659,7 @@ def ComponentWithUseReduce(): saved_dispatchers.append(idom.hooks.use_reducer(reducer, 0)[1]) return idom.html.div() - with idom.Layout(ComponentWithUseReduce()) as layout: + async with idom.Layout(ComponentWithUseReduce()) as layout: for _ in range(3): await layout.render() saved_dispatchers[-1]("increment") @@ -679,7 +679,7 @@ def ComponentWithRef(): used_callbacks.append(idom.hooks.use_callback(lambda: None)) return idom.html.div() - with idom.Layout(ComponentWithRef()) as layout: + async with idom.Layout(ComponentWithRef()) as layout: await layout.render() component_hook.latest.schedule_render() await layout.render() @@ -705,7 +705,7 @@ def cb(): used_callbacks.append(cb) return idom.html.div() - with idom.Layout(ComponentWithRef()) as layout: + async with idom.Layout(ComponentWithRef()) as layout: await layout.render() set_state_hook.current(1) await layout.render() @@ -733,7 +733,7 @@ def ComponentWithMemo(): used_values.append(value) return idom.html.div() - with idom.Layout(ComponentWithMemo()) as layout: + async with idom.Layout(ComponentWithMemo()) as layout: await layout.render() set_state_hook.current(1) await layout.render() @@ -758,7 +758,7 @@ def ComponentWithMemo(): used_values.append(value) return idom.html.div() - with idom.Layout(ComponentWithMemo()) as layout: + async with idom.Layout(ComponentWithMemo()) as layout: await layout.render() component_hook.latest.schedule_render() await layout.render() @@ -785,7 +785,7 @@ def ComponentWithMemo(): used_values.append(value) return idom.html.div() - with idom.Layout(ComponentWithMemo()) as layout: + async with idom.Layout(ComponentWithMemo()) as layout: await layout.render() component_hook.latest.schedule_render() deps_used_in_memo.current = None @@ -810,7 +810,7 @@ def ComponentWithMemo(): used_values.append(value) return idom.html.div() - with idom.Layout(ComponentWithMemo()) as layout: + async with idom.Layout(ComponentWithMemo()) as layout: await layout.render() component_hook.latest.schedule_render() await layout.render() @@ -830,7 +830,7 @@ def ComponentWithRef(): used_refs.append(idom.hooks.use_ref(1)) return idom.html.div() - with idom.Layout(ComponentWithRef()) as layout: + async with idom.Layout(ComponentWithRef()) as layout: await layout.render() component_hook.latest.schedule_render() await layout.render() @@ -865,7 +865,7 @@ def some_effect_that_uses_count(): return idom.html.div() - with idom.Layout(CounterWithEffect()) as layout: + async with idom.Layout(CounterWithEffect()) as layout: await layout.render() await did_effect.wait() did_effect.clear() @@ -893,7 +893,7 @@ def some_memo_func_that_uses_count(): return idom.html.div() - with idom.Layout(CounterWithEffect()) as layout: + async with idom.Layout(CounterWithEffect()) as layout: await layout.render() await did_memo.wait() did_memo.clear() @@ -918,7 +918,7 @@ def ComponentUsesContext(): value.current = idom.use_context(Context) return html.div() - with idom.Layout(ComponentProvidesContext()) as layout: + async with idom.Layout(ComponentProvidesContext()) as layout: await layout.render() assert value.current == "something" @@ -927,7 +927,7 @@ def ComponentUsesContext(): value.current = idom.use_context(Context) return html.div() - with idom.Layout(ComponentUsesContext()) as layout: + async with idom.Layout(ComponentUsesContext()) as layout: await layout.render() assert value.current == "something" @@ -958,7 +958,7 @@ def ComponentInContext(): render_count.current += 1 return html.div() - with idom.Layout(ComponentProvidesContext()) as layout: + async with idom.Layout(ComponentProvidesContext()) as layout: await layout.render() assert render_count.current == 1 @@ -995,7 +995,7 @@ def MemoizedComponentUsesContext(): render_count.current += 1 return html.div() - with idom.Layout(ComponentProvidesContext()) as layout: + async with idom.Layout(ComponentProvidesContext()) as layout: await layout.render() assert render_count.current == 1 assert value.current == 0 @@ -1041,7 +1041,7 @@ def Inner(): inner_render_count.current += 1 return html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() assert outer_render_count.current == 1 assert inner_render_count.current == 1 @@ -1097,7 +1097,7 @@ def Right(): right_used_value.current = idom.use_context(RightContext) return idom.html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() assert left_render_count.current == 1 assert right_render_count.current == 1 @@ -1142,7 +1142,7 @@ def bad_effect(): error_type=ValueError, match_error="The error message", ): - with idom.Layout(ComponentWithEffect()) as layout: + async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() component_hook.latest.schedule_render() await layout.render() # no error @@ -1159,7 +1159,7 @@ def SetStateDuringRender(): set_state(state + 1) return html.div(state) - with Layout(SetStateDuringRender()) as layout: + async with Layout(SetStateDuringRender()) as layout: await layout.render() assert render_count.current == 1 await layout.render() diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index ddeb9f4ae..fb6f6267a 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -76,7 +76,7 @@ def SimpleComponent(): tag, set_state_hook.current = idom.hooks.use_state("div") return idom.vdom(tag) - with idom.Layout(SimpleComponent()) as layout: + async with idom.Layout(SimpleComponent()) as layout: path, changes = await render_json_patch(layout) assert path == "" @@ -102,7 +102,7 @@ async def test_component_can_return_none(): def SomeComponent(): return None - with idom.Layout(SomeComponent()) as layout: + async with idom.Layout(SomeComponent()) as layout: assert (await layout.render()).new == {"tagName": ""} @@ -120,7 +120,7 @@ def Child(): state, child_set_state.current = idom.hooks.use_state(0) return idom.html.div(state) - with idom.Layout(Parent(key="p")) as layout: + async with idom.Layout(Parent(key="p")) as layout: path, changes = await render_json_patch(layout) assert path == "" @@ -183,7 +183,7 @@ def BadChild(): with assert_idom_logged(match_error="error from bad child"): - with idom.Layout(Main()) as layout: + async with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) assert_same_items( patch.changes, @@ -239,7 +239,7 @@ def BadChild(): with assert_idom_logged(match_error="error from bad child"): - with idom.Layout(Main()) as layout: + async with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) assert_same_items( patch.changes, @@ -282,7 +282,7 @@ def Main(): def Child(): return {"tagName": "div", "children": {"tagName": "h1"}} - with idom.Layout(Main()) as layout: + async with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) assert_same_items( patch.changes, @@ -337,7 +337,7 @@ def Outer(): def Inner(): return idom.html.div() - with idom.Layout(Outer()) as layout: + async with idom.Layout(Outer()) as layout: await layout.render() assert len(live_components) == 2 @@ -380,7 +380,7 @@ def wrapper(*args, **kwargs): def Root(): return idom.html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() assert len(live_hooks) == 1 @@ -419,7 +419,7 @@ def Outer(): def Inner(): return idom.html.div() - with idom.Layout(Outer()) as layout: + async with idom.Layout(Outer()) as layout: await layout.render() assert len(live_hooks) == 2 @@ -456,7 +456,7 @@ def AnyComponent(): run_count.current += 1 return idom.html.div() - with idom.Layout(AnyComponent()) as layout: + async with idom.Layout(AnyComponent()) as layout: await layout.render() assert run_count.current == 1 @@ -488,7 +488,7 @@ def Parent(): def Child(): return idom.html.div() - with idom.Layout(Parent()) as layout: + async with idom.Layout(Parent()) as layout: await layout.render() hook.latest.schedule_render() @@ -502,7 +502,7 @@ async def test_log_on_dispatch_to_missing_event_handler(caplog): def SomeComponent(): return idom.html.div() - with idom.Layout(SomeComponent()) as layout: + async with idom.Layout(SomeComponent()) as layout: await layout.deliver(LayoutEvent(target="missing", data=[])) assert re.match( @@ -546,7 +546,7 @@ def bad_trigger(): return idom.html.div(children) - with idom.Layout(MyComponent()) as layout: + async with idom.Layout(MyComponent()) as layout: await layout.render() for i in range(3): event = LayoutEvent(good_handler.target, []) @@ -597,7 +597,7 @@ def callback(): return idom.html.button({"onClick": callback, "id": "good"}, "good") - with idom.Layout(RootComponent()) as layout: + async with idom.Layout(RootComponent()) as layout: await layout.render() for _ in range(3): event = LayoutEvent(good_handler.target, []) @@ -619,7 +619,7 @@ def Outer(): def Inner(): return idom.html.div("hello") - with idom.Layout(Outer()) as layout: + async with idom.Layout(Outer()) as layout: update = await render_json_patch(layout) assert_same_items( update.changes, @@ -658,7 +658,7 @@ def Inner(finalizer_id): registered_finalizers.add(finalizer_id) return idom.html.div(finalizer_id) - with idom.Layout(Outer()) as layout: + async with idom.Layout(Outer()) as layout: await layout.render() pop_item.current() @@ -686,7 +686,7 @@ def HasEventHandlerAtRoot(): event_handler.current = weakref(button["eventHandlers"]["onClick"].function) return button - with idom.Layout(HasEventHandlerAtRoot()) as layout: + async with idom.Layout(HasEventHandlerAtRoot()) as layout: await layout.render() for i in range(3): @@ -708,7 +708,7 @@ def HasNestedEventHandler(): event_handler.current = weakref(button["eventHandlers"]["onClick"].function) return idom.html.div(idom.html.div(button)) - with idom.Layout(HasNestedEventHandler()) as layout: + async with idom.Layout(HasNestedEventHandler()) as layout: await layout.render() for i in range(3): @@ -733,7 +733,7 @@ def ComponentReturnsDuplicateKeys(): else: return idom.html.div() - with idom.Layout(ComponentReturnsDuplicateKeys()) as layout: + async with idom.Layout(ComponentReturnsDuplicateKeys()) as layout: with assert_idom_logged( error_type=ValueError, match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", @@ -768,7 +768,7 @@ def Outer(): def Inner(): return idom.html.div() - with idom.Layout(Outer()) as layout: + async with idom.Layout(Outer()) as layout: await layout.render() old_inner_hook = inner_hook.latest @@ -790,7 +790,7 @@ def raise_error(): with assert_idom_logged(match_error="bad event handler"): - with idom.Layout(ComponentWithBadEventHandler()) as layout: + async with idom.Layout(ComponentWithBadEventHandler()) as layout: await layout.render() event = LayoutEvent(bad_handler.target, []) await layout.deliver(event) @@ -815,7 +815,7 @@ def Child(state): with assert_idom_logged( r"Did not render component with model state ID .*? - component already unmounted", ): - with idom.Layout(Parent()) as layout: + async with idom.Layout(Parent()) as layout: await layout.render() old_hook = child_hook.latest @@ -859,7 +859,7 @@ def some_effect(): return idom.html.div(name) - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() assert effects == ["mount x"] @@ -894,7 +894,7 @@ def SomeComponent(): ] ) - with idom.Layout(SomeComponent()) as layout: + async with idom.Layout(SomeComponent()) as layout: await layout.render() set_items.current([2, 3]) @@ -926,7 +926,7 @@ def HasState(): state.current = idom.hooks.use_state(random.random)[0] return idom.html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() for i in range(5): @@ -955,7 +955,7 @@ def SomeComponent(): handler = component_static_handler.use(lambda: None) return html.button({"onAnotherEvent": handler}) - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() assert element_static_handler.target in layout._event_handlers @@ -1001,7 +1001,7 @@ def SecondComponent(): use_effect(lambda: lambda: second_used_state.set_current(None)) return html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() assert first_used_state.current == "first" @@ -1060,7 +1060,7 @@ async def record_if_state_is_reset(): key=child_key, ) - with idom.Layout(Parent()) as layout: + async with idom.Layout(Parent()) as layout: await layout.render() await did_call_effect.wait() assert effect_calls_without_state == ["some-key", "key-0"] @@ -1088,7 +1088,7 @@ def Root(): def Child(): use_state(lambda: did_init_state.set_current(did_init_state.current + 1)) - with Layout(Root()) as layout: + async with Layout(Root()) as layout: await layout.render() assert did_init_state.current == 1 @@ -1113,7 +1113,7 @@ def Root(): {event_name: event_handler.use(lambda: did_trigger.set_current(True))} ) - with Layout(Root()) as layout: + async with Layout(Root()) as layout: await layout.render() await layout.deliver(LayoutEvent(event_handler.target, [])) assert did_trigger.current @@ -1142,7 +1142,7 @@ def Root(): def Child(): use_effect(lambda: lambda: did_unmount.set_current(True)) - with Layout(Root()) as layout: + async with Layout(Root()) as layout: await layout.render() set_toggle.current() @@ -1177,7 +1177,7 @@ def SomeComponent(): render_count.current += 1 return html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: for _ in range(4): await layout.render() root_hook.latest.schedule_render() @@ -1199,7 +1199,7 @@ def SomeComponent(): render_count.current += 1 return html.div() - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: for _ in range(4): await layout.render() root_hook.latest.schedule_render() @@ -1223,7 +1223,7 @@ def bad_should_render(new): error_type=ValueError, match_error="The error message", ): - with idom.Layout(Root()) as layout: + async with idom.Layout(Root()) as layout: await layout.render() root_hook.latest.schedule_render() await layout.render() From 3e542ac32f8af974a63695a670bea74e424666e9 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 15 Apr 2022 00:44:43 -0700 Subject: [PATCH 059/253] Improve Changelog (#731) * add dates to changelog entries + enforce changelog entry per PR * fix ref --- .github/workflows/check-changelog-updated.yml | 20 ++ docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 260 ++++++++++-------- docs/source/about/contributor-guide.rst | 7 +- scripts/update_versions.py | 12 +- 5 files changed, 179 insertions(+), 122 deletions(-) create mode 100644 .github/workflows/check-changelog-updated.yml diff --git a/.github/workflows/check-changelog-updated.yml b/.github/workflows/check-changelog-updated.yml new file mode 100644 index 000000000..3d3c66f2f --- /dev/null +++ b/.github/workflows/check-changelog-updated.yml @@ -0,0 +1,20 @@ +name: Check Changelog +on: + pull_request: + types: [assigned, opened, synchronize, reopened, labeled, unlabeled] + branches: + - main +jobs: + build: + name: Check Actions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Changelog check + uses: Zomzog/changelog-checker@v1.2.0 + with: + fileName: docs/source/about/changelog.rst + noChangelogLabel: "flag: no changelog" # default `no changelog` + checkNotification: Simple # default `Detailed` + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 39d31346f..0e20ca734 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.38.0-a1", + "version": "0.38.0-a2", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 8a49a2747..8341b073d 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,25 +23,25 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -Changed: +**Changed** - :pull:`730` - Layout context management is not async -0.38.0-a2 ---------- - -Added: +v0.38.0-a2 +---------- +:octicon:`milestone` *released on 2022-04-14* -- Implement ``use_location()`` hook - :pull:`721` +**Added** - Navigating to any route below the root of the application will be reflected in the - ``location.pathname``. This operates in concert with how IDOM's configured routes have - changed. This will ultimately work towards resolving :issue:`569`. +- :pull:`721` - Implement ``use_location()`` hook. Navigating to any route below the + root of the application will be reflected in the ``location.pathname``. This operates + in concert with how IDOM's configured routes have changed. This will ultimately work + towards resolving :issue:`569`. -Changed: +**Changed** -- The routes IDOM configures on apps have changed - :pull:`721` +- :pull:`721` - The routes IDOM configures on apps have changed .. code-block:: text @@ -54,94 +54,98 @@ Changed: which is reserved by IDOM. The route navigated to below the ``prefix`` will be shown in ``use_location``. -- IDOM's client now uses Preact instead of React - :pull:`721` - -- Renamed ``idom.server`` to ``idom.backend`` - :pull:`726` - - Other references to "server implementations" have been renamed to "backend - implementations" throughout the documentation and code. +- :pull:`721` - IDOM's client now uses Preact instead of React -Removed: +- :pull:`726` - Renamed ``idom.server`` to ``idom.backend``. Other references to "server + implementations" have been renamed to "backend implementations" throughout the + documentation and code. -- ``redirect_root`` server option - :pull:`721` +**Removed** +- :pull:`721` - ``redirect_root`` server option -0.38.0-a1 ---------- -Changed: +v0.38.0-a1 +---------- +:octicon:`milestone` *released on 2022-03-27* -- How IDOM integrates with servers - :pull:`703` +**Changed** - - ``idom.run`` no longer accepts an app instance to discourage use outside of testing - - IDOM's server implementations now provide ``configure()`` functions instead - - ``idom.testing`` has been completely reworked in order to support async web drivers +- :pull:`703` - How IDOM integrates with servers. ``idom.run`` no longer accepts an app + instance to discourage use outside of testing. IDOM's server implementations now + provide ``configure()`` functions instead. ``idom.testing`` has been completely + reworked in order to support async web drivers +- :pull:`703` - ``PerClientStateServer`` has been functionally replaced by ``configure`` -Added: +**Added** -- Access to underlying server requests via contexts - :issue:`669` +- :issue:`669` - Access to underlying server requests via contexts -Removed: +**Removed** -- ``idom.widgets.multiview`` since basic routing view ``use_scope`` is now possible -- All ``SharedClientStateServer`` implementations. -- All ``PerClientStateServer`` implementations have been replaced with ``configure()`` +- :issue:`669` - Removed ``idom.widgets.multiview`` since basic routing view ``use_scope`` is + now possible as well as all ``SharedClientStateServer`` implementations. -Fixed: +**Fixed** -- IDOM's test suite no longer uses sync web drivers - :issue:`591` -- Updated Sanic requirement to ``>=21`` - :issue:`678` -- How we advertise ``idom.run`` - :issue:`657` +- :issue:`591` - IDOM's test suite no longer uses sync web drivers +- :issue:`678` - Updated Sanic requirement to ``>=21`` +- :issue:`657` - How we advertise ``idom.run`` -0.37.2 ------- +v0.37.2 +------- +:octicon:`milestone` *released on 2022-03-27* -Changed: +**Changed** -- The name of ``proto`` modules to ``types`` and added a top level ``idom.types`` module - - :pull:`701` +- :pull:`701` - The name of ``proto`` modules to ``types`` and added a top level + ``idom.types`` module -Fixed: +**Fixed** -- A typo caused IDOM to use the insecure ``ws`` web-socket protocol on pages loaded with - ``https`` instead of the secure ``wss`` protocol - :pull:`716` +- :pull:`716` - A typo caused IDOM to use the insecure ``ws`` web-socket protocol on + pages loaded with ``https`` instead of the secure ``wss`` protocol -0.37.1 ------- +v0.37.1 +------- +:octicon:`milestone` *released on 2022-03-05* No changes. -0.37.1-a2 ---------- +v0.37.1-a2 +---------- +:octicon:`milestone` *released on 2022-03-02* -Fixed: +**Fixed:** -- Revert :pull:`694` and by making ``value`` uncontrolled client-side - :issue:`684` +- :issue:`684` - Revert :pull:`694` and by making ``value`` uncontrolled client-side -0.37.1-a1 ---------- +v0.37.1-a1 +---------- +:octicon:`milestone` *released on 2022-02-28* -Fixed: +**Fixed:** -- ``onChange`` event for inputs missing key strokes - :issue:`684` +- :issue:`684` - ``onChange`` event for inputs missing key strokes -0.37.0 ------- +v0.37.0 +------- +:octicon:`milestone` *released on 2022-02-27* -Added: +**Added:** -- Support for keys in HTML fragments - :issue:`682` -- Use Context Hook - :pull:`585` +- :issue:`682` - Support for keys in HTML fragments +- :pull:`585` - Use Context Hook -Fixed: +**Fixed:** -- React warning about set state in unmounted component - :issue:`690` -- Missing reset of schedule_render_later flag - :pull:`688` +- :issue:`690` - React warning about set state in unmounted component +- :pull:`688` - Missing reset of schedule_render_later flag ---- @@ -149,8 +153,9 @@ Releases below do not use the "Keep a Changelog" style guidelines. ---- -0.36.3 ------- +v0.36.3 +------- +:octicon:`milestone` *released on 2022-02-18* Misc bug fixes along with a minor improvement that allows components to return ``None`` to render nothing. @@ -166,16 +171,18 @@ to render nothing. - Fix 663 - :pull:`667` -0.36.2 ------- +v0.36.2 +------- +:octicon:`milestone` *released on 2022-02-02* Hot fix for newly introduced ``DeprecatedOption``: - :commit:`c146dfb264cbc3d2256a62efdfe9ccf62c795b01` -0.36.1 ------- +v0.36.1 +------- +:octicon:`milestone` *released on 2022-02-02* Includes bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` to ``IDOM_WEB_MODULES_DIR`` with a corresponding deprecation warning. @@ -191,8 +198,9 @@ Includes bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` - rename IDOM_WED_MODULES_DIR to IDOM_WEB_MODULES_DIR - :pull:`638` -0.36.0 ------- +v0.36.0 +------- +:octicon:`milestone` *released on 2022-01-30* This release includes an important fix for errors produced after :pull:`623` was merged. In addition there is not a new ``http.script`` element which can behave similarly to a @@ -215,8 +223,9 @@ before the content of the script changes. - implement script element - :pull:`617` -0.35.4 ------- +v0.35.4 +------- +:octicon:`milestone` *released on 2022-01-27* Keys for elements at the root of a component were not being tracked. Thus key changes for elements at the root did not trigger unmounts. @@ -230,8 +239,9 @@ for elements at the root did not trigger unmounts. - fix issue with key-based identity - :pull:`623` -0.35.3 ------- +v0.35.3 +------- +:octicon:`milestone` *released on 2022-01-27* As part of :pull:`614`, elements which changed type were not deeply unmounted. This behavior is probably undesirable though since the state for children of the element @@ -242,8 +252,9 @@ in question would persist (probably unexpectedly). - Always deeply unmount - :pull:`620` -0.35.2 ------- +v0.35.2 +------- +:octicon:`milestone` *released on 2022-01-26* This release includes several bug fixes. The most significant of which is the ability to change the type of an element in the try (i.e. to and from being a component) without @@ -264,16 +275,18 @@ turns out to be quite common and useful. - fix double file extension - :pull:`606` -0.35.1 ------- +v0.35.1 +------- +:octicon:`milestone` *released on 2022-01-18* Re-add accidentally deleted ``py.typed`` file to distribution. See `PEP-561 `__ for info on this marker file. -0.35.0 ------- +v0.35.0 +------- +:octicon:`milestone` *released on 2022-01-18* The highlight of this release is that the default :ref:`"key" ` of all elements will be their index amongst their neighbors. Previously this @@ -312,8 +325,9 @@ on :ref:`Organizing Items With Keys`. - add more standard html elements - :pull:`554` -0.34.0 ------- +v0.34.0 +------- +:octicon:`milestone` *released on 2021-12-16* This release contains a variety of minor fixes and improvements which came out of rewriting the documentation. The most significant of these changes is the remove of @@ -339,8 +353,9 @@ event dictionary. As part of this change we also add ``event["currentTarget"]`` - add option to replace existing when creating a module - :pull:`516` -0.33.3 ------- +v0.33.3 +------- +:octicon:`milestone` *released on 2021-10-08* Contains a small number of bug fixes and improvements. The most significant change is the addition of a warning stating that `IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=1` will become @@ -362,8 +377,9 @@ specifying `exports_default=True` as a parameter. A - Fix 502 - :pull:`503` -0.33.2 ------- +v0.33.2 +------- +:octicon:`milestone` *released on 2021-09-05* A release to fix a memory leak caused by event handlers that were not being removed when components updated. @@ -373,8 +389,9 @@ when components updated. - Non-root component event handlers cause memory leaks - :issue:`510` -0.33.1 ------- +v0.33.1 +------- +:octicon:`milestone` *released on 2021-09-02* A hot fix for a regression introduced in ``0.33.0`` where the root element of the layout could not be updated. See :issue:`498` for more info. A regression test for this will @@ -385,8 +402,9 @@ be introduced in a future release. - Fix 498 pt1 - :pull:`501` -0.33.0 ------- +v0.33.0 +------- +:octicon:`milestone` *released on 2021-09-02* The most significant fix in this release is for a regression which manifested in :issue:`480`, :issue:`489`, and :issue:`451` which resulted from an issue in the way @@ -428,8 +446,9 @@ yet. - Update issue form - :pull:`471` -0.32.0 ------- +v0.32.0 +------- +:octicon:`milestone` *released on 2021-08-20* In addition to a variety of bug fixes and other minor improvements, there's a breaking change to the custom component interface - instead of exporting multiple functions that @@ -464,8 +483,9 @@ See :ref:`Custom JavaScript Components` for details on the new interface. - fix #429 - move client JS to top of src/ dir - :pull:`430` -0.31.0 ------- +v0.31.0 +------- +:octicon:`milestone` *released on 2021-07-14* The :class:`~idom.core.layout.Layout` is now a prototype, and ``Layout.update`` is no longer a public API. This is combined with a much more significant refactor of the @@ -500,8 +520,9 @@ Instead, a unique ID is generated internally which is associated with the - fix #419 and #412 - :pull:`422` -0.30.1 ------- +v0.30.1 +------- +:octicon:`milestone` *released on 2021-07-13* Removes the usage of the :func:`id` function for generating unique ideas because there were situations where the IDs bound to the lifetime of an object are problematic. Also @@ -513,11 +534,12 @@ lead to confusing bugs. - warn if key is param of component render function - :pull:`421` - fix :issue:`417` and :issue:`413` - :pull:`418` -- add changelog entry for :ref:`0.30.0` - :pull:`415` +- add changelog entry for :ref:`v0.30.0` - :pull:`415` -0.30.0 ------- +v0.30.0 +------- +:octicon:`milestone` *released on 2021-06-28* With recent changes to the custom component interface, it's now possible to remove all runtime reliance on NPM. Doing so has many virtuous knock-on effects: @@ -560,8 +582,9 @@ desired library from a CDN. - Remove all runtime reliance on NPM - :pull:`398` -0.29.0 ------- +v0.29.0 +------- +:octicon:`milestone` *released on 2021-06-20* Contains breaking changes, the most significant of which are: @@ -591,8 +614,9 @@ Contains breaking changes, the most significant of which are: - correctly serialize File object - :commit:`a2398dc` -0.28.0 ------- +v0.28.0 +------- +:octicon:`milestone` *released on 2021-06-01* Includes a wide variety of improvements: @@ -645,8 +669,9 @@ and breaking changes, the most significant of which are: - pass children as props to mount() - :commit:`9494bc0` -0.27.0 ------- +v0.27.0 +------- +:octicon:`milestone` *released on 2021-05-14* Introduces changes to the interface for custom Javascript components. This now allows JS modules to export a ``mount(element, component, props)`` function which can be used @@ -662,8 +687,9 @@ variety of component implementations. - federate modules with mount function - :commit:`bf63a62` -0.26.0 ------- +v0.26.0 +------- +:octicon:`milestone` *released on 2021-05-07* A collection of minor fixes and changes that, as a whole, add up to something requiring a minor release. The most significant addition is a fix for situations where a @@ -681,8 +707,9 @@ update deletes the original button. - rename daemon to run_in_thread + misc - :commit:`417b687` -0.25.0 ------- +v0.25.0 +------- +:octicon:`milestone` *released on 2021-04-30* Completely refactors layout dispatcher by switching from a class-based approach to one that leverages pure functions. While the logic itself isn't any simpler, it was easier @@ -701,8 +728,9 @@ several bugs that had cropped up related to improper usage of ``anyio``. - refactor dispatchers - :commit:`ce8e060` -0.24.0 ------- +v0.24.0 +------- +:octicon:`milestone` *released on 2021-04-18* This release contains an update that allows components and elements to have "identity". That is, their state can be preserved across updates. Before this point, only the state @@ -732,16 +760,18 @@ to allow users to enable this behavior early. - fixes: #331 - add roadmap to docs - :commit:`4226c12` -0.23.1 ------- +v0.23.1 +------- +:octicon:`milestone` *released on 2021-04-02* **Highlighted Commits:** - fix non-deterministic return order in install() - :commit:`494d5c2` -0.23.0 ------- +v0.23.0 +------- +:octicon:`milestone` *released on 2021-04-01* **Highlighted Commits:** diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index 47cefe3e1..3f62f3ccb 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -82,8 +82,9 @@ the following categories, and add it to the :ref:`Unreleased` section of the cha - **Security** - in case of vulnerabilities. If one of the sections doesn't exist, add it. If it does already, add a bullet point -under the relevant section. Here's a short example of what an unreleased changelog entry -might look like: +under the relevant section. Your description should begin with a reference to the +relevant issue or pull request number. Here's a short example of what an unreleased +changelog entry might look like: .. code-block:: rst @@ -102,7 +103,7 @@ might look like: - :issue:`789` - Some really bad bug -.. note:: +.. hint:: ``:issue:`` and ``:pull:`` refer to issue and pull request ticket numbers. diff --git a/scripts/update_versions.py b/scripts/update_versions.py index e1b01d14a..2a8236178 100644 --- a/scripts/update_versions.py +++ b/scripts/update_versions.py @@ -1,4 +1,5 @@ import json +from datetime import datetime from pathlib import Path import semver @@ -42,6 +43,7 @@ def update_js_versions(new_version: str) -> None: def update_changelog_version(new_version: str) -> None: + today = datetime.now().strftime("%Y-%m-%d") old_content = CHANGELOG_FILE.read_text().split("\n") new_content = [] @@ -53,8 +55,12 @@ def update_changelog_version(new_version: str) -> None: this_line, next_line = old_content[index : index + 2] if this_line == "Unreleased" and next_line == ("-" * len(this_line)): new_content.append(_UNRELEASED_SECTION) - new_content.append(new_version) - new_content.append("-" * len(new_version)) + + title = f"v{new_version}" + new_content.append(title) + new_content.append("-" * len(title)) + new_content.append(f":octicon:`milestone` *released on {today}*") + new_content.extend(old_content[index + 2 :]) break else: @@ -69,7 +75,7 @@ def update_changelog_version(new_version: str) -> None: Unreleased ---------- -Nothing yet... +No changes. """ From 31317b02528a9cd89dc7d40fb50dadc36887d4e5 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 15 Apr 2022 00:51:10 -0700 Subject: [PATCH 060/253] fix version update script --- noxfile.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/noxfile.py b/noxfile.py index 72e060e8e..a3588e164 100644 --- a/noxfile.py +++ b/noxfile.py @@ -337,13 +337,12 @@ def tag(session: Session) -> None: changelog_file = ROOT / "docs" / "source" / "about" / "changelog.rst" for line in changelog_file.read_text().splitlines(): - if line == version: + if line == f"v{version}": session.log(f"Found changelog section for version {version}") break else: session.error( - f"No changelog entry for {version} in {changelog_file} - " - f"make sure you have a title section called {version}." + f"Something went wrong - could not find a title section for {version}" ) if session.interactive: From ce2e3aee35fca1f09c3d7a86f0ebb38cfa99e12c Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 15 Apr 2022 00:51:46 -0700 Subject: [PATCH 061/253] version 0.38.0-a3 --- VERSION | 2 +- docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 8 files changed, 17 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index a01ea72a3..770d5e8a0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.38.0-a2 +0.38.0-a3 diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 0e20ca734..65afe1acb 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.38.0-a2", + "version": "0.38.0-a3", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 8341b073d..fbf9ce815 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.38.0-a3 +---------- +:octicon:`milestone` *released on 2022-04-15* + **Changed** - :pull:`730` - Layout context management is not async diff --git a/src/client/package-lock.json b/src/client/package-lock.json index aa4bb0761..a4f917849 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.38.0-a2", + "version": "0.38.0-a3", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.38.0-a2", + "version": "0.38.0-a3", "license": "MIT", "workspaces": [ "./packages/*" @@ -5159,7 +5159,7 @@ } }, "packages/idom-app-react": { - "version": "0.38.0-a2", + "version": "0.38.0-a3", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5175,7 +5175,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.38.0-a2", + "version": "0.38.0-a3", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 580090d1f..bf0ea7b52 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.38.0-a2", + "version": "0.38.0-a3", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index dcedcef3e..0ec1775f4 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.38.0-a2" + "version": "0.38.0-a3" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index ea83d7015..72cd1e730 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.38.0-a2" + "version": "0.38.0-a3" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 3ca53e506..e08eefbd2 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -21,7 +21,7 @@ __author__ = "idom-team" -__version__ = "0.38.0-a2" # DO NOT MODIFY +__version__ = "0.38.0-a3" # DO NOT MODIFY __all__ = [ "component", From fb39848577974b899ecba96165f19c4712cd6c7b Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 15 Apr 2022 19:57:11 -0700 Subject: [PATCH 062/253] add use debug value hook (#733) * add use debug value hook * changelog entry * fix tests * export at top level * no cover * fix doctest --- docs/source/about/changelog.rst | 8 ++- src/idom/__init__.py | 2 + src/idom/core/hooks.py | 58 ++++++++++++++++++--- src/idom/core/layout.py | 2 +- src/idom/testing/__init__.py | 4 +- src/idom/testing/logs.py | 4 +- tests/test_core/test_hooks.py | 91 ++++++++++++++++++++++++++++++--- tests/test_core/test_layout.py | 16 +++--- tests/test_testing.py | 18 +++---- tests/test_web/test_module.py | 10 ++-- tests/test_web/test_utils.py | 4 +- 11 files changed, 173 insertions(+), 44 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index fbf9ce815..d8d9ea4c5 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Added** + +- :pull:`733` - ``use_debug_value`` hook + +**Changed** + +- :pull:`733` - renamed ``assert_idom_logged`` testing util to ``assert_idom_did_log`` v0.38.0-a3 diff --git a/src/idom/__init__.py b/src/idom/__init__.py index e08eefbd2..3dc594f44 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -7,6 +7,7 @@ create_context, use_callback, use_context, + use_debug_value, use_effect, use_memo, use_reducer, @@ -42,6 +43,7 @@ "types", "use_callback", "use_context", + "use_debug_value", "use_effect", "use_memo", "use_reducer", diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index d6e8983ec..3d00478f1 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -24,10 +24,11 @@ from typing_extensions import Protocol +from idom.config import IDOM_DEBUG_MODE from idom.utils import Ref from ._thread_local import ThreadLocal -from .types import Key, VdomDict +from .types import ComponentType, Key, VdomDict from .vdom import vdom @@ -204,6 +205,40 @@ def effect() -> None: return add_effect +def use_debug_value( + message: Any | Callable[[], Any], + dependencies: Sequence[Any] | ellipsis | None = ..., +) -> None: + """Log debug information when the given message changes. + + .. note:: + This hook only logs if :data:`~idom.config.IDOM_DEBUG_MODE` is active. + + Unlike other hooks, a message is considered to have changed if the old and new + values are ``!=``. Because this comparison is performed on every render of the + component, it may be worth considering the performance cost in some situations. + + Parameters: + message: + The value to log or a memoized function for generating the value. + dependencies: + Dependencies for the memoized function. The message will only be recomputed + if the identity of any value in the given sequence changes (i.e. their + :func:`id` is different). By default these are inferred based on local + variables that are referenced by the given function. + """ + if not IDOM_DEBUG_MODE.current: + return # pragma: no cover + + old: Ref[Any] = _use_const(lambda: Ref(object())) + memo_func = message if callable(message) else lambda: message + new = use_memo(memo_func, dependencies) + + if old.current != new: + old.current = new + logger.debug(f"{current_hook().component} {new}") + + def create_context( default_value: _StateType, name: str | None = None ) -> type[Context[_StateType]]: @@ -576,7 +611,7 @@ class LifeCycleHook: # --- start render cycle --- - hook.affect_component_will_render() + hook.affect_component_will_render(...) hook.set_current() @@ -614,16 +649,19 @@ class LifeCycleHook: """ __slots__ = ( + "__weakref__", + "_current_state_index", + "_event_effects", + "_is_rendering", + "_rendered_atleast_once", "_schedule_render_callback", "_schedule_render_later", - "_current_state_index", "_state", - "_rendered_atleast_once", - "_is_rendering", - "_event_effects", - "__weakref__", + "component", ) + component: ComponentType + def __init__( self, schedule_render: Callable[[], None], @@ -662,13 +700,17 @@ def add_effect(self, effect_type: EffectType, function: Callable[[], None]) -> N """Trigger a function on the occurance of the given effect type""" self._event_effects[effect_type].append(function) - def affect_component_will_render(self) -> None: + def affect_component_will_render(self, component: ComponentType) -> None: """The component is about to render""" + self.component = component + self._is_rendering = True self._event_effects[COMPONENT_WILL_UNMOUNT_EFFECT].clear() def affect_component_did_render(self) -> None: """The component completed a render""" + del self.component + component_did_render_effects = self._event_effects[COMPONENT_DID_RENDER_EFFECT] for effect in component_did_render_effects: try: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index b8b2346ae..d77431bc1 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -199,7 +199,7 @@ def _render_component( new_state.model.current = old_state.model.current else: life_cycle_hook = life_cycle_state.hook - life_cycle_hook.affect_component_will_render() + life_cycle_hook.affect_component_will_render(component) try: life_cycle_hook.set_current() try: diff --git a/src/idom/testing/__init__.py b/src/idom/testing/__init__.py index 62c80adcb..34d68cb91 100644 --- a/src/idom/testing/__init__.py +++ b/src/idom/testing/__init__.py @@ -2,8 +2,8 @@ from .display import DisplayFixture from .logs import ( LogAssertionError, + assert_idom_did_log, assert_idom_did_not_log, - assert_idom_logged, capture_idom_logs, ) from .server import ServerFixture @@ -11,7 +11,7 @@ __all__ = [ "assert_idom_did_not_log", - "assert_idom_logged", + "assert_idom_did_log", "capture_idom_logs", "clear_idom_web_modules_dir", "DisplayFixture", diff --git a/src/idom/testing/logs.py b/src/idom/testing/logs.py index f0639bb40..10e99a67b 100644 --- a/src/idom/testing/logs.py +++ b/src/idom/testing/logs.py @@ -14,7 +14,7 @@ class LogAssertionError(AssertionError): @contextmanager -def assert_idom_logged( +def assert_idom_did_log( match_message: str = "", error_type: type[Exception] | None = None, match_error: str = "", @@ -77,7 +77,7 @@ def assert_idom_did_not_log( ) -> Iterator[None]: """Assert the inverse of :func:`assert_idom_logged`""" try: - with assert_idom_logged(match_message, error_type, match_error): + with assert_idom_did_log(match_message, error_type, match_error): yield None except LogAssertionError: pass diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index 6aac2fec1..e0d5694fe 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -5,10 +5,12 @@ import idom from idom import html +from idom.config import IDOM_DEBUG_MODE from idom.core.hooks import COMPONENT_DID_RENDER_EFFECT, LifeCycleHook, current_hook from idom.core.layout import Layout from idom.core.serve import render_json_patch -from idom.testing import DisplayFixture, HookCatcher, assert_idom_logged, poll +from idom.testing import DisplayFixture, HookCatcher, assert_idom_did_log, poll +from idom.testing.logs import assert_idom_did_not_log from idom.utils import Ref from tests.tooling.asserts import assert_same_items @@ -553,7 +555,7 @@ def bad_effect(): return idom.html.div() - with assert_idom_logged(match_message=r"Layout post-render effect .* failed"): + with assert_idom_did_log(match_message=r"Layout post-render effect .* failed"): async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() # no error @@ -574,7 +576,7 @@ def bad_cleanup(): return idom.html.div() - with assert_idom_logged(match_error=r"Layout post-render effect .* failed"): + with assert_idom_did_log(match_error=r"Layout post-render effect .* failed"): async with idom.Layout(ComponentWithEffect()) as layout: await layout.render() component_hook.latest.schedule_render() @@ -600,7 +602,7 @@ def bad_cleanup(): return idom.html.div() - with assert_idom_logged( + with assert_idom_did_log( match_message=r"Pre-unmount effect .*? failed", error_type=ValueError, ): @@ -843,7 +845,7 @@ def test_bad_schedule_render_callback(): def bad_callback(): raise ValueError("something went wrong") - with assert_idom_logged( + with assert_idom_did_log( match_message=f"Failed to schedule render via {bad_callback}" ): LifeCycleHook(bad_callback).schedule_render() @@ -1137,7 +1139,7 @@ def bad_effect(): hook.add_effect(COMPONENT_DID_RENDER_EFFECT, bad_effect) return idom.html.div() - with assert_idom_logged( + with assert_idom_did_log( match_message="Component post-render effect .*? failed", error_type=ValueError, match_error="The error message", @@ -1168,3 +1170,80 @@ def SetStateDuringRender(): # there should be no more renders to perform with pytest.raises(asyncio.TimeoutError): await asyncio.wait_for(layout.render(), timeout=0.1) + + +@pytest.mark.skipif(not IDOM_DEBUG_MODE.current, reason="only logs in debug mode") +async def test_use_debug_mode(): + set_message = idom.Ref() + component_hook = HookCatcher() + + @idom.component + @component_hook.capture + def SomeComponent(): + message, set_message.current = idom.use_state("hello") + idom.use_debug_value(f"message is {message!r}") + return idom.html.div() + + async with idom.Layout(SomeComponent()) as layout: + + with assert_idom_did_log(r"SomeComponent\(.*?\) message is 'hello'"): + await layout.render() + + set_message.current("bye") + + with assert_idom_did_log(r"SomeComponent\(.*?\) message is 'bye'"): + await layout.render() + + component_hook.latest.schedule_render() + + with assert_idom_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"): + await layout.render() + + +@pytest.mark.skipif(not IDOM_DEBUG_MODE.current, reason="only logs in debug mode") +async def test_use_debug_mode_with_factory(): + set_message = idom.Ref() + component_hook = HookCatcher() + + @idom.component + @component_hook.capture + def SomeComponent(): + message, set_message.current = idom.use_state("hello") + idom.use_debug_value(lambda: f"message is {message!r}") + return idom.html.div() + + async with idom.Layout(SomeComponent()) as layout: + + with assert_idom_did_log(r"SomeComponent\(.*?\) message is 'hello'"): + await layout.render() + + set_message.current("bye") + + with assert_idom_did_log(r"SomeComponent\(.*?\) message is 'bye'"): + await layout.render() + + component_hook.latest.schedule_render() + + with assert_idom_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"): + await layout.render() + + +@pytest.mark.skipif(IDOM_DEBUG_MODE.current, reason="logs in debug mode") +async def test_use_debug_mode_does_not_log_if_not_in_debug_mode(): + set_message = idom.Ref() + + @idom.component + def SomeComponent(): + message, set_message.current = idom.use_state("hello") + idom.use_debug_value(lambda: f"message is {message!r}") + return idom.html.div() + + async with idom.Layout(SomeComponent()) as layout: + + with assert_idom_did_not_log(r"SomeComponent\(.*?\) message is 'hello'"): + await layout.render() + + set_message.current("bye") + + with assert_idom_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"): + await layout.render() diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index fb6f6267a..bf77b6b63 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -17,7 +17,7 @@ from idom.testing import ( HookCatcher, StaticEventHandler, - assert_idom_logged, + assert_idom_did_log, capture_idom_logs, ) from idom.utils import Ref @@ -181,7 +181,7 @@ def OkChild(): def BadChild(): raise ValueError("error from bad child") - with assert_idom_logged(match_error="error from bad child"): + with assert_idom_did_log(match_error="error from bad child"): async with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) @@ -237,7 +237,7 @@ def OkChild(): def BadChild(): raise ValueError("error from bad child") - with assert_idom_logged(match_error="error from bad child"): + with assert_idom_did_log(match_error="error from bad child"): async with idom.Layout(Main()) as layout: patch = await render_json_patch(layout) @@ -734,7 +734,7 @@ def ComponentReturnsDuplicateKeys(): return idom.html.div() async with idom.Layout(ComponentReturnsDuplicateKeys()) as layout: - with assert_idom_logged( + with assert_idom_did_log( error_type=ValueError, match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", ): @@ -747,7 +747,7 @@ def ComponentReturnsDuplicateKeys(): should_error = True hook.latest.schedule_render() - with assert_idom_logged( + with assert_idom_did_log( error_type=ValueError, match_error=r"Duplicate keys \['duplicate'\] at '/children/0'", ): @@ -788,7 +788,7 @@ def raise_error(): return idom.html.button({"onClick": raise_error}) - with assert_idom_logged(match_error="bad event handler"): + with assert_idom_did_log(match_error="bad event handler"): async with idom.Layout(ComponentWithBadEventHandler()) as layout: await layout.render() @@ -812,7 +812,7 @@ def Child(state): idom.hooks.use_effect(lambda: lambda: print("unmount", state)) return idom.html.div(state) - with assert_idom_logged( + with assert_idom_did_log( r"Did not render component with model state ID .*? - component already unmounted", ): async with idom.Layout(Parent()) as layout: @@ -1218,7 +1218,7 @@ def bad_should_render(new): return ComponentShouldRender(html.div(), should_render=bad_should_render) - with assert_idom_logged( + with assert_idom_did_log( match_message=r".* component failed to check if .* should be rendered", error_type=ValueError, match_error="The error message", diff --git a/tests/test_testing.py b/tests/test_testing.py index 70d882a81..f42120f20 100644 --- a/tests/test_testing.py +++ b/tests/test_testing.py @@ -11,20 +11,20 @@ def test_assert_idom_logged_does_not_supress_errors(): with pytest.raises(RuntimeError, match="expected error"): - with testing.assert_idom_logged(): + with testing.assert_idom_did_log(): raise RuntimeError("expected error") def test_assert_idom_logged_message(): - with testing.assert_idom_logged(match_message="my message"): + with testing.assert_idom_did_log(match_message="my message"): ROOT_LOGGER.info("my message") - with testing.assert_idom_logged(match_message=r".*"): + with testing.assert_idom_did_log(match_message=r".*"): ROOT_LOGGER.info("my message") def test_assert_idom_logged_error(): - with testing.assert_idom_logged( + with testing.assert_idom_did_log( match_message="log message", error_type=ValueError, match_error="my value error", @@ -38,7 +38,7 @@ def test_assert_idom_logged_error(): AssertionError, match=r"Could not find a log record matching the given", ): - with testing.assert_idom_logged( + with testing.assert_idom_did_log( match_message="log message", error_type=ValueError, match_error="my value error", @@ -53,7 +53,7 @@ def test_assert_idom_logged_error(): AssertionError, match=r"Could not find a log record matching the given", ): - with testing.assert_idom_logged( + with testing.assert_idom_did_log( match_message="log message", error_type=ValueError, match_error="my value error", @@ -68,7 +68,7 @@ def test_assert_idom_logged_error(): AssertionError, match=r"Could not find a log record matching the given", ): - with testing.assert_idom_logged( + with testing.assert_idom_did_log( match_message="log message", error_type=ValueError, match_error="my value error", @@ -85,7 +85,7 @@ def test_assert_idom_logged_assertion_error_message(): AssertionError, match=r"Could not find a log record matching the given", ): - with testing.assert_idom_logged( + with testing.assert_idom_did_log( # put in all possible params full assertion error message match_message=r".*", error_type=Exception, @@ -98,7 +98,7 @@ def test_assert_idom_logged_ignores_level(): original_level = ROOT_LOGGER.level ROOT_LOGGER.setLevel(logging.INFO) try: - with testing.assert_idom_logged(match_message=r".*"): + with testing.assert_idom_did_log(match_message=r".*"): # this log would normally be ignored ROOT_LOGGER.debug("my message") finally: diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 16846d2f5..5f967be8d 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -8,8 +8,8 @@ from idom.testing import ( DisplayFixture, ServerFixture, + assert_idom_did_log, assert_idom_did_not_log, - assert_idom_logged, poll, ) from idom.web.module import NAME_SOURCE, WebModule @@ -132,7 +132,7 @@ def test_module_from_file_source_conflict(tmp_path): third_file = tmp_path / "third.js" third_file.write_text("something-different") - with assert_idom_logged(r"Existing web module .* will be replaced with"): + with assert_idom_did_log(r"Existing web module .* will be replaced with"): idom.web.module_from_file("temp", third_file) @@ -161,7 +161,7 @@ def test_web_module_from_file_symlink_twice(tmp_path): file_2 = tmp_path / "temp_2.js" file_2.write_text("something") - with assert_idom_logged(r"Existing web module .* will be replaced with"): + with assert_idom_did_log(r"Existing web module .* will be replaced with"): idom.web.module_from_file("temp", file_2, symlink=True) @@ -174,7 +174,7 @@ def test_web_module_from_file_replace_existing(tmp_path): file2 = tmp_path / "temp2.js" file2.write_text("something") - with assert_idom_logged(r"Existing web module .* will be replaced with"): + with assert_idom_did_log(r"Existing web module .* will be replaced with"): idom.web.module_from_file("temp", file2) @@ -230,5 +230,5 @@ async def test_imported_components_can_render_children(display: DisplayFixture): def test_module_from_string(): idom.web.module_from_string("temp", "old") - with assert_idom_logged(r"Existing web module .* will be replaced with"): + with assert_idom_did_log(r"Existing web module .* will be replaced with"): idom.web.module_from_string("temp", "new") diff --git a/tests/test_web/test_utils.py b/tests/test_web/test_utils.py index 5286db53d..29a24142c 100644 --- a/tests/test_web/test_utils.py +++ b/tests/test_web/test_utils.py @@ -3,7 +3,7 @@ import pytest import responses -from idom.testing import assert_idom_logged +from idom.testing import assert_idom_did_log from idom.web.utils import ( module_name_suffix, resolve_module_exports_from_file, @@ -147,7 +147,7 @@ def test_resolve_module_exports_from_source(): def test_log_on_unknown_export_type(): - with assert_idom_logged(match_message="Unknown export type "): + with assert_idom_did_log(match_message="Unknown export type "): assert resolve_module_exports_from_source( "export something unknown;", exclude_default=False ) == (set(), set()) From 0bbd2d5a8d372dd62822aeb83307cf879056c4ef Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 15 Apr 2022 20:00:13 -0700 Subject: [PATCH 063/253] version 0.38.0-a4 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 770d5e8a0..6120cd393 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.38.0-a3 +0.38.0-a4 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index d8d9ea4c5..d3a6a5d51 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.38.0-a4 +---------- +:octicon:`milestone` *released on 2022-04-15* + **Added** - :pull:`733` - ``use_debug_value`` hook diff --git a/src/client/package-lock.json b/src/client/package-lock.json index a4f917849..1b536766f 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.38.0-a3", + "version": "0.38.0-a4", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.38.0-a3", + "version": "0.38.0-a4", "license": "MIT", "workspaces": [ "./packages/*" @@ -5159,7 +5159,7 @@ } }, "packages/idom-app-react": { - "version": "0.38.0-a3", + "version": "0.38.0-a4", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5175,7 +5175,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.38.0-a3", + "version": "0.38.0-a4", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index bf0ea7b52..38ec86bad 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.38.0-a3", + "version": "0.38.0-a4", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 0ec1775f4..7592d5075 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.38.0-a3" + "version": "0.38.0-a4" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 72cd1e730..4e9f6a5ca 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.38.0-a3" + "version": "0.38.0-a4" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 3dc594f44..32e880666 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.38.0-a3" # DO NOT MODIFY +__version__ = "0.38.0-a4" # DO NOT MODIFY __all__ = [ "component", From 9e8e849cc5f8908790b5aca6e51fbaa4e25ecbc8 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 15 Apr 2022 20:05:48 -0700 Subject: [PATCH 064/253] version 0.38.0 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 6120cd393..ca75280b0 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.38.0-a4 +0.38.0 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index d3a6a5d51..ad32a5377 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -26,6 +26,13 @@ Unreleased No changes. +v0.38.0 +------- +:octicon:`milestone` *released on 2022-04-15* + +No changes. + + v0.38.0-a4 ---------- :octicon:`milestone` *released on 2022-04-15* diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 1b536766f..088200a9c 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.38.0-a4", + "version": "0.38.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.38.0-a4", + "version": "0.38.0", "license": "MIT", "workspaces": [ "./packages/*" @@ -5159,7 +5159,7 @@ } }, "packages/idom-app-react": { - "version": "0.38.0-a4", + "version": "0.38.0", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5175,7 +5175,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.38.0-a4", + "version": "0.38.0", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 38ec86bad..a24b9799e 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.38.0-a4", + "version": "0.38.0", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 7592d5075..efbfab7d2 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.38.0-a4" + "version": "0.38.0" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 4e9f6a5ca..eaad715c2 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.38.0-a4" + "version": "0.38.0" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 32e880666..c4275f8d1 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.38.0-a4" # DO NOT MODIFY +__version__ = "0.38.0" # DO NOT MODIFY __all__ = [ "component", From 3a313d9d349815b15c8f05018b470e84f2d86344 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 15 Apr 2022 23:06:55 -0700 Subject: [PATCH 065/253] add missing file extension (#736) * add missing file extension * npm audit fix --- docs/source/about/changelog.rst | 5 ++- docs/source/conf.py | 2 + src/client/package-lock.json | 45 ++++++++++--------- .../packages/idom-client-react/src/index.js | 2 +- 4 files changed, 31 insertions(+), 23 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index ad32a5377..ae48229a7 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,10 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +Fixed: + +- `idom-team/idom-jupyter#22 ` - + a missing file extension was causing a problem with WebPack. v0.38.0 diff --git a/docs/source/conf.py b/docs/source/conf.py index a939d6aec..935e0232e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -59,6 +59,8 @@ "", ), } +extlinks_detect_hardcoded_links = True + # -- General configuration --------------------------------------------------- diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 088200a9c..b1ad096a7 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -2620,9 +2620,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -2665,18 +2665,18 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/just-diff": { @@ -3599,9 +3599,10 @@ } }, "node_modules/path-parse": { - "version": "1.0.6", - "dev": true, - "license": "MIT" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", @@ -7271,9 +7272,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -7307,14 +7308,14 @@ "dev": true }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -8007,7 +8008,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-type": { diff --git a/src/client/packages/idom-client-react/src/index.js b/src/client/packages/idom-client-react/src/index.js index df461bb84..8f7769652 100644 --- a/src/client/packages/idom-client-react/src/index.js +++ b/src/client/packages/idom-client-react/src/index.js @@ -1,4 +1,4 @@ export * from "./mount.js"; -export * from "./contexts"; +export * from "./contexts.js"; export * from "./components.js"; export * from "./server.js"; From e302f2e17ede62490ca099828faabb73862a61e4 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 15 Apr 2022 23:11:54 -0700 Subject: [PATCH 066/253] version 0.38.1 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index ca75280b0..bb22182d4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.38.0 +0.38.1 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index ae48229a7..8dccb4f63 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.38.1 +------- +:octicon:`milestone` *released on 2022-04-15* + Fixed: - `idom-team/idom-jupyter#22 ` - diff --git a/src/client/package-lock.json b/src/client/package-lock.json index b1ad096a7..6f2d44d66 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.38.0", + "version": "0.38.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.38.0", + "version": "0.38.1", "license": "MIT", "workspaces": [ "./packages/*" @@ -5160,7 +5160,7 @@ } }, "packages/idom-app-react": { - "version": "0.38.0", + "version": "0.38.1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5176,7 +5176,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.38.0", + "version": "0.38.1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index a24b9799e..b44cb3400 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.38.0", + "version": "0.38.1", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index efbfab7d2..8b0df7822 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.38.0" + "version": "0.38.1" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index eaad715c2..7b1ea9856 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.38.0" + "version": "0.38.1" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index c4275f8d1..e8b0fb4e8 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.38.0" # DO NOT MODIFY +__version__ = "0.38.1" # DO NOT MODIFY __all__ = [ "component", From c7be65eaaa8fa4152ea6d440b6014b6fb2b74675 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 16 Apr 2022 00:41:43 -0700 Subject: [PATCH 067/253] tweak changelog entry --- docs/source/about/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 8dccb4f63..3a7ca4541 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -30,7 +30,7 @@ v0.38.1 ------- :octicon:`milestone` *released on 2022-04-15* -Fixed: +**Fixed** - `idom-team/idom-jupyter#22 ` - a missing file extension was causing a problem with WebPack. From 3242da62a93e5cea0ec76e91617e56c846abe26c Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Sat, 16 Apr 2022 12:32:46 -0700 Subject: [PATCH 068/253] Readme Overhaul (#705) * Update readme summary * minor verbiage changes * Move supported frameworks to a new line * plotly-dash * Reorder plotly to prevent text cutoff * wordsmithing * wordsmithing 2 * remove "composing" verbiage * minor clarification * Update README.md Co-authored-by: Ryan Morshead * wordsmithing * reduced verbosity * within -> in * fix hyperlink location * Remove accidental auto-format * ecosystem independance shortening * backed -> based * it's always wordsmithing * shortening some stuff * split sections * python framework * wordsmitherererest * more human sounding ecosystem indepedence paragraph * smithy * requested changes * more words Co-authored-by: Ryan Morshead --- README.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index c4a3de93c..bc57439bc 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,21 @@ # IDOM · [![Tests](https://github.com/idom-team/idom/workflows/Test/badge.svg?event=push)](https://github.com/idom-team/idom/actions?query=workflow%3ATest) [![PyPI Version](https://img.shields.io/pypi/v/idom.svg)](https://pypi.python.org/pypi/idom) [![License](https://img.shields.io/badge/License-MIT-purple.svg)](https://github.com/idom-team/idom/blob/main/LICENSE) -IDOM is a Python web framework for building **interactive websites without needing a -single line of Javascript**. These sites are built from small elements of functionality -like buttons text and images. IDOM allows you to combine these elements into reusable -"components" that can be composed together to create complex views. - -Ecosystem independence is also a core feature of IDOM. It can be added to existing -applications built on a variety of sync and async web servers, as well as integrated -with other frameworks like Django, Jupyter, and Plotly Dash. Not only does this mean -you're free to choose what technology stack to run on, but on top of that, you can run -the exact same components wherever you need them. For example, you can take a component -originally developed in a Jupyter Notebook and embed it in your production application -without changing anything about the component itself. +IDOM is a Python micro-framework that links your web framework of choice to a ReactJS frontend, allowing you to create **interactive websites without needing JavaScript!** + +Following ReactJS styling, web elements are combined into [reusable "components"](https://idom-docs.herokuapp.com/docs/guides/creating-interfaces/your-first-components/index.html#parametrizing-components). These components can utilize [hooks](https://idom-docs.herokuapp.com/docs/reference/hooks-api.html) and [events](https://idom-docs.herokuapp.com/docs/guides/adding-interactivity/responding-to-events/index.html#async-event-handlers) to create infinitely complex web pages. + +When needed, IDOM can [use JavaScript components](https://idom-docs.herokuapp.com/docs/guides/escape-hatches/javascript-components.html#dynamically-loaded-components) directly from NPM. Components can also be [developed in JavaScript](https://idom-docs.herokuapp.com/docs/guides/escape-hatches/javascript-components.html#custom-javascript-components) for additional flexibility. + +IDOM's ecosystem independent design allows components to be reused across a variety of web frameworks. Pre-existing support is included for many popular Python frameworks, however, any framework with WebSocket support can be adapted to utilize IDOM. + +| Supported Frameworks | Supported Frameworks (External) | +| --- | --- | +| [`Flask`, `FastAPI`, `Sanic`, `Tornado`](https://idom-docs.herokuapp.com/docs/guides/getting-started/installing-idom.html#officially-supported-servers) | [`Django`](https://github.com/idom-team/django-idom), [`Plotly-Dash`](https://github.com/idom-team/idom-dash), [`Jupyter`](https://github.com/idom-team/idom-jupyter) | + # At a Glance -To get a rough idea of how to write apps in IDOM, take a look at the tiny "hello -world" application below: +To get a rough idea of how to write apps in IDOM, take a look at this tiny _Hello World_ application. ```python from idom import component, html, run @@ -30,7 +29,7 @@ run(App) # Resources -Follow the links below to find out more about this project +Follow the links below to find out more about this project. - [Try it Now](https://mybinder.org/v2/gh/idom-team/idom-jupyter/main?urlpath=lab/tree/notebooks/introduction.ipynb) - check out IDOM in a Jupyter Notebook. - [Documentation](https://idom-docs.herokuapp.com/) - learn how to install, run, and use IDOM. From e93ae19adc527397eddb8a6c1f3374e2889841cb Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 16 Apr 2022 12:47:35 -0700 Subject: [PATCH 069/253] fix docs --- docs/app.py | 2 +- docs/source/_custom_js/package-lock.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/app.py b/docs/app.py index ea71b2293..f69528695 100644 --- a/docs/app.py +++ b/docs/app.py @@ -25,7 +25,7 @@ def run(): configure( app, - Example(), + Example, Options(url_prefix=IDOM_MODEL_SERVER_URL_PREFIX), ) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 65afe1acb..dd27b5c34 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.38.0-a3", + "version": "0.38.1", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { From 2af7590cb19e4ff5dad838d49c1950f3dd285a34 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 17 Apr 2022 13:55:37 -0700 Subject: [PATCH 070/253] Update changelog.rst --- docs/source/about/changelog.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 3a7ca4541..18d79e621 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -32,7 +32,7 @@ v0.38.1 **Fixed** -- `idom-team/idom-jupyter#22 ` - +- `idom-team/idom-jupyter#22 `__ - a missing file extension was causing a problem with WebPack. From f25970d167fbebf179ef950ad827d92d44f6658a Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 18 Apr 2022 12:24:36 -0700 Subject: [PATCH 071/253] update docstring --- src/idom/types.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/idom/types.py b/src/idom/types.py index 4f208068a..80670ea35 100644 --- a/src/idom/types.py +++ b/src/idom/types.py @@ -1,7 +1,7 @@ """Exports common types from: - :mod:`idom.core.types` -- :mod:`idom.server.types` +- :mod:`idom.backend.types` """ from .backend.types import BackendImplementation, Location From fb45e7e9632daad9514dd074ed4e4afb6babdfb1 Mon Sep 17 00:00:00 2001 From: Jim Taysom Date: Fri, 22 Apr 2022 01:41:42 -0400 Subject: [PATCH 072/253] Update good_conditional_todo_list.py (#745) * Update good_conditional_todo_list.py The checkmark was on the wrong list items compared to the more verbose example. * Update main.py fixed typo. It was rendering `1 or 10` instead of `1 of 10` --- .../_examples/adding_state_variable/main.py | 2 +- .../_examples/good_conditional_todo_list.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py index 5a96d2f03..724831f89 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py +++ b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py @@ -27,7 +27,7 @@ def handle_click(event): return html.div( html.button({"onClick": handle_click}, "Next"), html.h2(name, " by ", artist), - html.p(f"({bounded_index + 1} or {len(sculpture_data)})"), + html.p(f"({bounded_index + 1} of {len(sculpture_data)})"), html.img({"src": url, "alt": alt, "style": {"height": "200px"}}), html.p(description), ) diff --git a/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py b/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py index 64d6f6813..f01753d40 100644 --- a/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py +++ b/docs/source/guides/creating-interfaces/your-first-components/_examples/good_conditional_todo_list.py @@ -3,7 +3,7 @@ @component def Item(name, done): - return html.li(name, "" if done else " ✔") + return html.li(name, " ✔" if done else "") @component From 32dfb26d4de30067730d24aec8502c0e722e4e3a Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Thu, 28 Apr 2022 21:20:42 -0700 Subject: [PATCH 073/253] Another Readme Update (#747) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bc57439bc..8b51ee05f 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # IDOM · [![Tests](https://github.com/idom-team/idom/workflows/Test/badge.svg?event=push)](https://github.com/idom-team/idom/actions?query=workflow%3ATest) [![PyPI Version](https://img.shields.io/pypi/v/idom.svg)](https://pypi.python.org/pypi/idom) [![License](https://img.shields.io/badge/License-MIT-purple.svg)](https://github.com/idom-team/idom/blob/main/LICENSE) -IDOM is a Python micro-framework that links your web framework of choice to a ReactJS frontend, allowing you to create **interactive websites without needing JavaScript!** +IDOM connects your Python web framework of choice to a ReactJS frontend, allowing you to create **interactive websites without needing JavaScript!** Following ReactJS styling, web elements are combined into [reusable "components"](https://idom-docs.herokuapp.com/docs/guides/creating-interfaces/your-first-components/index.html#parametrizing-components). These components can utilize [hooks](https://idom-docs.herokuapp.com/docs/reference/hooks-api.html) and [events](https://idom-docs.herokuapp.com/docs/guides/adding-interactivity/responding-to-events/index.html#async-event-handlers) to create infinitely complex web pages. -When needed, IDOM can [use JavaScript components](https://idom-docs.herokuapp.com/docs/guides/escape-hatches/javascript-components.html#dynamically-loaded-components) directly from NPM. Components can also be [developed in JavaScript](https://idom-docs.herokuapp.com/docs/guides/escape-hatches/javascript-components.html#custom-javascript-components) for additional flexibility. +When needed, IDOM can [use components directly from NPM](https://idom-docs.herokuapp.com/docs/guides/escape-hatches/javascript-components.html#dynamically-loaded-components). For additional flexibility, components can also be [fully developed in JavaScript](https://idom-docs.herokuapp.com/docs/guides/escape-hatches/javascript-components.html#custom-javascript-components). -IDOM's ecosystem independent design allows components to be reused across a variety of web frameworks. Pre-existing support is included for many popular Python frameworks, however, any framework with WebSocket support can be adapted to utilize IDOM. +Any Python web framework with Websockets can support IDOM. See below for what frameworks are supported out of the box. | Supported Frameworks | Supported Frameworks (External) | | --- | --- | From 0177411ddd045e424e5d632a687ca767bd258e6d Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Tue, 31 May 2022 12:10:07 -0700 Subject: [PATCH 074/253] Replace changelog CI with greetings (#752) * replace changelog CI with greetings * switch to a different CI * try another CI --- .github/workflows/check-changelog-updated.yml | 20 --------------- .github/workflows/pr-greetings.yml | 25 +++++++++++++++++++ 2 files changed, 25 insertions(+), 20 deletions(-) delete mode 100644 .github/workflows/check-changelog-updated.yml create mode 100644 .github/workflows/pr-greetings.yml diff --git a/.github/workflows/check-changelog-updated.yml b/.github/workflows/check-changelog-updated.yml deleted file mode 100644 index 3d3c66f2f..000000000 --- a/.github/workflows/check-changelog-updated.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Check Changelog -on: - pull_request: - types: [assigned, opened, synchronize, reopened, labeled, unlabeled] - branches: - - main -jobs: - build: - name: Check Actions - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: Changelog check - uses: Zomzog/changelog-checker@v1.2.0 - with: - fileName: docs/source/about/changelog.rst - noChangelogLabel: "flag: no changelog" # default `no changelog` - checkNotification: Simple # default `Detailed` - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pr-greetings.yml b/.github/workflows/pr-greetings.yml new file mode 100644 index 000000000..619f9bc4a --- /dev/null +++ b/.github/workflows/pr-greetings.yml @@ -0,0 +1,25 @@ +name: Greetings Message + +on: + pull_request: + types: [opened, synchronize] + +jobs: + GreetCommitter: + runs-on: ubuntu-latest + steps: + - name: "Greetings Message" + uses: ibakshay/greet-contributors-action@v3 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + content: | + Hello @${{ github.actor }}! Please remember the following: + + - Update the `changelog.rst` if your changes are significant. + - Provide a verbose PR title and description. + - List any GitHub issues that may be closed by this PR. + - Add tests if this PR adds functionality or bugfixes. + - Keep this PR marked as draft until ready for review. + + Thank you for your contribution! From a97526053b87cb4dbe432aa25232b6c48e0fefb9 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Tue, 14 Jun 2022 00:52:01 -0700 Subject: [PATCH 075/253] remove accidentally committed temp file --- temp.py | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 temp.py diff --git a/temp.py b/temp.py deleted file mode 100644 index a67caa896..000000000 --- a/temp.py +++ /dev/null @@ -1,11 +0,0 @@ -from idom import component, html, run -from idom.backend import starlette as server - - -@component -def ShowLocation(): - loc = server.use_location() - return html.h1(str(loc.pathname + loc.search)) - - -run(ShowLocation, implementation=server) From 5004ca7f4addb332b407018ecc3c14c0943a84c3 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Thu, 16 Jun 2022 12:32:59 -0700 Subject: [PATCH 076/253] use pr template --- .github/pull_request_template.md | 11 +++++++++++ .github/workflows/pr-greetings.yml | 25 ------------------------- 2 files changed, 11 insertions(+), 25 deletions(-) create mode 100644 .github/pull_request_template.md delete mode 100644 .github/workflows/pr-greetings.yml diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..4e477aa42 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,11 @@ +# Description + +A summary of the changes. + +# Checklist: + +Please update this checklist as you complete each item: + +- [ ] Tests have been included for all bug fixes or new functionality. +- [ ] The `changelog.rst` has been updated with any significant changes. +- [ ] GitHub Issues which may be closed by this Pull Request have been linked. diff --git a/.github/workflows/pr-greetings.yml b/.github/workflows/pr-greetings.yml deleted file mode 100644 index 619f9bc4a..000000000 --- a/.github/workflows/pr-greetings.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Greetings Message - -on: - pull_request: - types: [opened, synchronize] - -jobs: - GreetCommitter: - runs-on: ubuntu-latest - steps: - - name: "Greetings Message" - uses: ibakshay/greet-contributors-action@v3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - content: | - Hello @${{ github.actor }}! Please remember the following: - - - Update the `changelog.rst` if your changes are significant. - - Provide a verbose PR title and description. - - List any GitHub issues that may be closed by this PR. - - Add tests if this PR adds functionality or bugfixes. - - Keep this PR marked as draft until ready for review. - - Thank you for your contribution! From 009617dc450ff02b3979f9eb8b930ece1a9d0dd0 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 16 Jun 2022 12:34:51 -0700 Subject: [PATCH 077/253] fix mimetype issue (#762) --- src/idom/backend/sanic.py | 5 ++++- src/idom/backend/starlette.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/idom/backend/sanic.py b/src/idom/backend/sanic.py index bb3397e74..537ed839f 100644 --- a/src/idom/backend/sanic.py +++ b/src/idom/backend/sanic.py @@ -154,7 +154,10 @@ async def web_module_files( _: str = "", # this is not used ) -> response.HTTPResponse: path = urllib_parse.unquote(path) - return await response.file(safe_web_modules_dir_path(path)) + return await response.file( + safe_web_modules_dir_path(path), + mime_type="text/javascript", + ) blueprint.add_route(web_module_files, "/_api/modules/") blueprint.add_route(web_module_files, "/<_:path>/_api/modules/") diff --git a/src/idom/backend/starlette.py b/src/idom/backend/starlette.py index 5b78c8111..d4013e605 100644 --- a/src/idom/backend/starlette.py +++ b/src/idom/backend/starlette.py @@ -126,7 +126,7 @@ def _setup_common_routes(options: Options, app: Starlette) -> None: if options.serve_static_files: wm_dir = IDOM_WEB_MODULES_DIR.current - web_module_files = StaticFiles(directory=wm_dir, html=True, check_dir=False) + web_module_files = StaticFiles(directory=wm_dir, check_dir=False) app.mount(url_prefix + "/_api/modules", web_module_files) app.mount(url_prefix + "/{_:path}/_api/modules", web_module_files) From d157e101f3382237cbf9ef8313d85cec24f49805 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 16 Jun 2022 17:56:34 -0700 Subject: [PATCH 078/253] Fix idom.run and more renaming of server to backend (#763) * fix missed server->backend renaming * add changelog * add one more item to pr --- .github/pull_request_template.md | 3 ++- docs/source/about/changelog.rst | 13 ++++++++++++- src/idom/backend/fastapi.py | 12 ++++++------ src/idom/backend/flask.py | 8 +++----- src/idom/backend/starlette.py | 6 ++---- src/idom/backend/tornado.py | 10 ++++------ src/idom/backend/utils.py | 2 +- src/idom/testing/__init__.py | 4 ++-- src/idom/testing/{server.py => backend.py} | 6 +++--- src/idom/testing/display.py | 20 ++++++++++---------- tests/conftest.py | 4 ++-- tests/test_client.py | 6 +++--- tests/test_server/test_common.py | 10 +++++----- tests/test_testing.py | 4 ++-- tests/test_web/test_module.py | 4 ++-- 15 files changed, 59 insertions(+), 53 deletions(-) rename src/idom/testing/{server.py => backend.py} (97%) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4e477aa42..76556bd06 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -6,6 +6,7 @@ A summary of the changes. Please update this checklist as you complete each item: -- [ ] Tests have been included for all bug fixes or new functionality. +- [ ] Tests have been included for all bug fixes or added functionality. - [ ] The `changelog.rst` has been updated with any significant changes. - [ ] GitHub Issues which may be closed by this Pull Request have been linked. +- [ ] I have left irrelevant checklist items unchecked instead of removing them. diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 18d79e621..ae54e44d5 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,18 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Fixed** + +- :pull:`763` - ``No module named 'idom.server'`` from ``idom.run`` +- :pull:`749` - Setting appropriate MIME type for web modules in `sanic` server implementation + +**Changed** + +- :pull:`763` - renamed various: + + - ``idom.testing.server -> idom.testing.backend`` + - ``ServerFixture -> BackendFixture`` + - ``DisplayFixture.server -> DisplayFixture.backend`` v0.38.1 diff --git a/src/idom/backend/fastapi.py b/src/idom/backend/fastapi.py index e99aad60c..cc8c84580 100644 --- a/src/idom/backend/fastapi.py +++ b/src/idom/backend/fastapi.py @@ -6,25 +6,25 @@ serve_development_app = starlette.serve_development_app -"""Alias for :func:`idom.server.starlette.serve_development_app`""" +"""Alias for :func:`idom.backend.starlette.serve_development_app`""" # see: https://github.com/idom-team/flake8-idom-hooks/issues/12 use_location = starlette.use_location # noqa: ROH101 -"""Alias for :func:`idom.server.starlette.use_location`""" +"""Alias for :func:`idom.backend.starlette.use_location`""" # see: https://github.com/idom-team/flake8-idom-hooks/issues/12 use_scope = starlette.use_scope # noqa: ROH101 -"""Alias for :func:`idom.server.starlette.use_scope`""" +"""Alias for :func:`idom.backend.starlette.use_scope`""" # see: https://github.com/idom-team/flake8-idom-hooks/issues/12 use_websocket = starlette.use_websocket # noqa: ROH101 -"""Alias for :func:`idom.server.starlette.use_websocket`""" +"""Alias for :func:`idom.backend.starlette.use_websocket`""" Options = starlette.Options -"""Alias for :class:`idom.server.starlette.Options`""" +"""Alias for :class:`idom.backend.starlette.Options`""" configure = starlette.configure -"""Alias for :class:`idom.server.starlette.configure`""" +"""Alias for :class:`idom.backend.starlette.configure`""" def create_development_app() -> FastAPI: diff --git a/src/idom/backend/flask.py b/src/idom/backend/flask.py index 6eacbe2c3..a9ee2a12e 100644 --- a/src/idom/backend/flask.py +++ b/src/idom/backend/flask.py @@ -45,14 +45,12 @@ def configure( app: Flask, component: RootComponentConstructor, options: Options | None = None ) -> None: - """Return a :class:`FlaskServer` where each client has its own state. - - Implements the :class:`~idom.server.proto.ServerFactory` protocol + """Configure the necessary IDOM routes on the given app. Parameters: - constructor: A component constructor + app: An application instance + component: A component constructor options: Options for configuring server behavior - app: An application instance (otherwise a default instance is created) """ options = options or Options() blueprint = Blueprint("idom", __name__, url_prefix=options.url_prefix) diff --git a/src/idom/backend/starlette.py b/src/idom/backend/starlette.py index d4013e605..83c69a971 100644 --- a/src/idom/backend/starlette.py +++ b/src/idom/backend/starlette.py @@ -40,13 +40,11 @@ def configure( constructor: RootComponentConstructor, options: Options | None = None, ) -> None: - """Return a :class:`StarletteServer` where each client has its own state. - - Implements the :class:`~idom.server.proto.ServerFactory` protocol + """Configure the necessary IDOM routes on the given app. Parameters: app: An application instance - constructor: A component constructor + component: A component constructor options: Options for configuring server behavior """ options = options or Options() diff --git a/src/idom/backend/tornado.py b/src/idom/backend/tornado.py index 113013376..ff4bc30ca 100644 --- a/src/idom/backend/tornado.py +++ b/src/idom/backend/tornado.py @@ -36,14 +36,12 @@ def configure( component: ComponentConstructor, options: Options | None = None, ) -> None: - """Return a :class:`TornadoServer` where each client has its own state. - - Implements the :class:`~idom.server.proto.ServerFactory` protocol + """Configure the necessary IDOM routes on the given app. Parameters: - app: A tornado ``Application`` instance. - component: A root component constructor - options: Options for configuring how the component is mounted to the server. + app: An application instance + component: A component constructor + options: Options for configuring server behavior """ options = options or Options() _add_handler( diff --git a/src/idom/backend/utils.py b/src/idom/backend/utils.py index b4c864d97..b891ec793 100644 --- a/src/idom/backend/utils.py +++ b/src/idom/backend/utils.py @@ -40,7 +40,7 @@ def run( "Change this before deploying in production!" ) - implementation = implementation or import_module("idom.server.default") + implementation = implementation or import_module("idom.backend.default") app = implementation.create_development_app() implementation.configure(app, component) diff --git a/src/idom/testing/__init__.py b/src/idom/testing/__init__.py index 34d68cb91..e674e4555 100644 --- a/src/idom/testing/__init__.py +++ b/src/idom/testing/__init__.py @@ -1,3 +1,4 @@ +from .backend import BackendFixture from .common import HookCatcher, StaticEventHandler, clear_idom_web_modules_dir, poll from .display import DisplayFixture from .logs import ( @@ -6,7 +7,6 @@ assert_idom_did_not_log, capture_idom_logs, ) -from .server import ServerFixture __all__ = [ @@ -18,6 +18,6 @@ "HookCatcher", "LogAssertionError", "poll", - "ServerFixture", + "BackendFixture", "StaticEventHandler", ] diff --git a/src/idom/testing/server.py b/src/idom/testing/backend.py similarity index 97% rename from src/idom/testing/server.py rename to src/idom/testing/backend.py index 6ca26429b..3376f8439 100644 --- a/src/idom/testing/server.py +++ b/src/idom/testing/backend.py @@ -15,7 +15,7 @@ from .logs import LogAssertionError, capture_idom_logs, list_logged_exceptions -class ServerFixture: +class BackendFixture: """A test fixture for running a server and imperatively displaying views This fixture is typically used alongside async web drivers like ``playwight``. @@ -23,7 +23,7 @@ class ServerFixture: Example: .. code-block:: - async with ServerFixture() as server: + async with BackendFixture() as server: server.mount(MyComponent) """ @@ -99,7 +99,7 @@ def list_logged_exceptions( del_log_records, ) - async def __aenter__(self) -> ServerFixture: + async def __aenter__(self) -> BackendFixture: self._exit_stack = AsyncExitStack() self._records = self._exit_stack.enter_context(capture_idom_logs()) diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py index 08f1e8cb1..30151a7a3 100644 --- a/src/idom/testing/display.py +++ b/src/idom/testing/display.py @@ -9,7 +9,7 @@ from idom import html from idom.types import RootComponentConstructor -from .server import ServerFixture +from .backend import BackendFixture class DisplayFixture: @@ -19,11 +19,11 @@ class DisplayFixture: def __init__( self, - server: ServerFixture | None = None, + backend: BackendFixture | None = None, driver: Browser | BrowserContext | Page | None = None, ) -> None: - if server is not None: - self.server = server + if backend is not None: + self.backend = backend if driver is not None: if isinstance(driver, Page): self.page = driver @@ -37,13 +37,13 @@ async def show( ) -> None: self._next_view_id += 1 view_id = f"display-{self._next_view_id}" - self.server.mount(lambda: html.div({"id": view_id}, component())) + self.backend.mount(lambda: html.div({"id": view_id}, component())) await self.goto("/") await self.page.wait_for_selector(f"#{view_id}", state="attached") async def goto(self, path: str, query: Any | None = None) -> None: - await self.page.goto(self.server.url(path, query)) + await self.page.goto(self.backend.url(path, query)) async def __aenter__(self) -> DisplayFixture: es = self._exit_stack = AsyncExitStack() @@ -57,9 +57,9 @@ async def __aenter__(self) -> DisplayFixture: browser = self._browser self.page = await browser.new_page() - if not hasattr(self, "server"): - self.server = ServerFixture() - await es.enter_async_context(self.server) + if not hasattr(self, "backend"): + self.backend = BackendFixture() + await es.enter_async_context(self.backend) return self @@ -69,5 +69,5 @@ async def __aexit__( exc_value: BaseException | None, traceback: TracebackType | None, ) -> None: - self.server.mount(None) + self.backend.mount(None) await self._exit_stack.aclose() diff --git a/tests/conftest.py b/tests/conftest.py index 10f92d1bf..f0400ebf9 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -9,8 +9,8 @@ from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT from idom.testing import ( + BackendFixture, DisplayFixture, - ServerFixture, capture_idom_logs, clear_idom_web_modules_dir, ) @@ -34,7 +34,7 @@ async def display(server, page): @pytest.fixture(scope="session") async def server(): - async with ServerFixture() as server: + async with BackendFixture() as server: yield server diff --git a/tests/test_client.py b/tests/test_client.py index b17d690cc..86b5a61a7 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -5,7 +5,7 @@ from playwright.async_api import Browser import idom -from idom.testing import DisplayFixture, ServerFixture +from idom.testing import BackendFixture, DisplayFixture JS_DIR = Path(__file__).parent / "js" @@ -22,7 +22,7 @@ def OldComponent(): return idom.html.p({"id": "old-component"}, "old") async with AsyncExitStack() as exit_stack: - server = await exit_stack.enter_async_context(ServerFixture(port=8000)) + server = await exit_stack.enter_async_context(BackendFixture(port=8000)) display = await exit_stack.enter_async_context( DisplayFixture(server, driver=page) ) @@ -43,7 +43,7 @@ def NewComponent(): return idom.html.p({"id": f"new-component-{state}"}, f"new-{state}") async with AsyncExitStack() as exit_stack: - server = await exit_stack.enter_async_context(ServerFixture(port=8000)) + server = await exit_stack.enter_async_context(BackendFixture(port=8000)) display = await exit_stack.enter_async_context( DisplayFixture(server, driver=page) ) diff --git a/tests/test_server/test_common.py b/tests/test_server/test_common.py index 91c6dc41e..cefeaa185 100644 --- a/tests/test_server/test_common.py +++ b/tests/test_server/test_common.py @@ -7,7 +7,7 @@ from idom.backend import default as default_implementation from idom.backend.types import Location from idom.backend.utils import all_implementations -from idom.testing import DisplayFixture, ServerFixture, poll +from idom.testing import BackendFixture, DisplayFixture, poll @pytest.fixture( @@ -16,8 +16,8 @@ scope="module", ) async def display(page, request): - async with ServerFixture(implementation=request.param) as server: - async with DisplayFixture(server=server, driver=page) as display: + async with BackendFixture(implementation=request.param) as server: + async with DisplayFixture(backend=server, driver=page) as display: yield display @@ -69,7 +69,7 @@ async def test_use_scope(display: DisplayFixture): @idom.component def ShowScope(): - scope.current = display.server.implementation.use_scope() + scope.current = display.backend.implementation.use_scope() return html.pre({"id": "scope"}, str(scope.current)) await display.show(ShowScope) @@ -88,7 +88,7 @@ async def poll_location(): @idom.component def ShowRoute(): - location.current = display.server.implementation.use_location() + location.current = display.backend.implementation.use_location() return html.pre({"id": "scope"}, str(location.current)) await display.show(ShowRoute) diff --git a/tests/test_testing.py b/tests/test_testing.py index f42120f20..902648536 100644 --- a/tests/test_testing.py +++ b/tests/test_testing.py @@ -141,9 +141,9 @@ def test_if_app_is_given_implementation_must_be_too(): ValueError, match=r"If an application instance its corresponding server implementation must be provided too", ): - testing.ServerFixture(app=starlette_implementation.create_development_app()) + testing.BackendFixture(app=starlette_implementation.create_development_app()) - testing.ServerFixture( + testing.BackendFixture( app=starlette_implementation.create_development_app(), implementation=starlette_implementation, ) diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 5f967be8d..48b981ba9 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -6,8 +6,8 @@ import idom from idom.backend import sanic as sanic_implementation from idom.testing import ( + BackendFixture, DisplayFixture, - ServerFixture, assert_idom_did_log, assert_idom_did_not_log, poll, @@ -70,7 +70,7 @@ async def test_module_from_url(browser): def ShowSimpleButton(): return SimpleButton({"id": "my-button"}) - async with ServerFixture(app=app, implementation=sanic_implementation) as server: + async with BackendFixture(app=app, implementation=sanic_implementation) as server: async with DisplayFixture(server, browser) as display: await display.show(ShowSimpleButton) From b0c7f9370b5906a2a46e67bbbc9998984cc0ce2d Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Fri, 17 Jun 2022 10:25:51 -0700 Subject: [PATCH 079/253] Change function name in readme example (#750) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b51ee05f..740c301bc 100644 --- a/README.md +++ b/README.md @@ -21,10 +21,10 @@ To get a rough idea of how to write apps in IDOM, take a look at this tiny _Hell from idom import component, html, run @component -def App(): +def HelloWorld(): return html.h1("Hello, World!") -run(App) +run(HelloWorld) ``` # Resources From 8e3b0b14b88b3d8d4abab129f5e43d0ba5ceddbe Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sat, 18 Jun 2022 23:34:22 -0700 Subject: [PATCH 080/253] ability to specify version in template + no more exports_default (#765) * ability to specify react version in template * fix simple chart example * changelog + add dynamic default export * test template versioning --- docs/source/about/changelog.rst | 8 ++++ .../_examples/material_ui_button_no_action.py | 22 +++++---- .../_examples/material_ui_button_on_click.py | 6 ++- .../super_simple_chart/super-simple-chart.js | 7 ++- .../reference/_examples/network_graph.py | 2 - src/idom/web/module.py | 16 +++---- src/idom/web/templates/react.default.js | 48 ------------------- src/idom/web/templates/react.js | 17 ++++++- .../{test_server => test_backend}/__init__.py | 0 .../test_common.py | 0 .../test_utils.py | 0 tests/test_web/test_module.py | 4 +- 12 files changed, 54 insertions(+), 76 deletions(-) delete mode 100644 src/idom/web/templates/react.default.js rename tests/{test_server => test_backend}/__init__.py (100%) rename tests/{test_server => test_backend}/test_common.py (100%) rename tests/{test_server => test_backend}/test_utils.py (100%) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index ae54e44d5..10215f200 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -36,6 +36,14 @@ Unreleased - ``ServerFixture -> BackendFixture`` - ``DisplayFixture.server -> DisplayFixture.backend`` +- :pull:`765` - ``exports_default`` parameter is not longer required for + ``module_from_template`` when exporting ``default``. + +**Added** + +- :pull:`765` - ability to specify versions with module templates (e.g. + ``module_from_template("react@^17.0.0", ...)``). + v0.38.1 ------- diff --git a/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py b/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py index d8f57de08..55817f9dd 100644 --- a/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py +++ b/docs/source/guides/escape-hatches/_examples/material_ui_button_no_action.py @@ -1,11 +1,17 @@ -import idom +from idom import component, run, web -mui = idom.web.module_from_template("react", "@material-ui/core@^5.0", fallback="⌛") -Button = idom.web.export(mui, "Button") - -idom.run( - idom.component( - lambda: Button({"color": "primary", "variant": "contained"}, "Hello World!") - ) +mui = web.module_from_template( + "react@^17.0.0", + "@material-ui/core@4.12.4", + fallback="⌛", ) +Button = web.export(mui, "Button") + + +@component +def HelloWorld(): + return Button({"color": "primary", "variant": "contained"}, "Hello World!") + + +run(HelloWorld) diff --git a/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py b/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py index 41a3b7c54..e7c327ba0 100644 --- a/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py +++ b/docs/source/guides/escape-hatches/_examples/material_ui_button_on_click.py @@ -3,7 +3,11 @@ import idom -mui = idom.web.module_from_template("react", "@material-ui/core@^5.0", fallback="⌛") +mui = idom.web.module_from_template( + "react@^17.0.0", + "@material-ui/core@4.12.4", + fallback="⌛", +) Button = idom.web.export(mui, "Button") diff --git a/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js b/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js index 71f117860..486e5c363 100644 --- a/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js +++ b/docs/source/guides/escape-hatches/_examples/super_simple_chart/super-simple-chart.js @@ -48,10 +48,9 @@ function makePath(props, domain, data, options) { const getSvgX = (x) => ((x - xMin) / (xMax - xMin)) * width; const getSvgY = (y) => height - ((y - yMin) / (yMax - yMin)) * height; - let pathD = "M " + getSvgX(data[0].x) + " " + getSvgY(data[0].y) + " "; - pathD += data.map((point, i) => { - return "L " + getSvgX(point.x) + " " + getSvgY(point.y) + " "; - }); + let pathD = + `M ${getSvgX(data[0].x)} ${getSvgY(data[0].y)} ` + + data.map(({ x, y }, i) => `L ${getSvgX(x)} ${getSvgY(y)}`).join(" "); return html` - React.createElement(component, wrapEventHandlers(props), ...children), - render: (element) => ReactDOM.render(element, node), - unmount: () => ReactDOM.unmountComponentAtNode(node), - }; -} - -function wrapEventHandlers(props) { - const newProps = Object.assign({}, props); - for (const [key, value] of Object.entries(props)) { - if (typeof value === "function") { - newProps[key] = makeJsonSafeEventHandler(value); - } - } - return newProps; -} - -function makeJsonSafeEventHandler(oldHandler) { - // Since we can't really know what the event handlers get passed we have to check if - // they are JSON serializable or not. We can allow normal synthetic events to pass - // through since the original handler already knows how to serialize those for us. - return function safeEventHandler() { - oldHandler( - ...Array.from(arguments).filter((value) => { - if (typeof value === "object" && value.nativeEvent) { - // this is probably a standard React synthetic event - return true; - } else { - try { - JSON.stringify(value); - } catch (err) { - console.error("Failed to serialize some event data"); - return false; - } - return true; - } - }) - ); - }; -} diff --git a/src/idom/web/templates/react.js b/src/idom/web/templates/react.js index f4e2b091f..00924f85a 100644 --- a/src/idom/web/templates/react.js +++ b/src/idom/web/templates/react.js @@ -1,7 +1,20 @@ export * from "$CDN/$PACKAGE"; -import * as React from "$CDN/react"; -import * as ReactDOM from "$CDN/react-dom"; +import * as React from "$CDN/react$VERSION"; +import * as ReactDOM from "$CDN/react-dom$VERSION"; + +export default ({ children, ...props }) => { + const [{ component }, setComponent] = React.useState({}); + React.useEffect(() => { + import("$CDN/$PACKAGE").then((module) => { + // dynamically load the default export since we don't know if it's exported. + setComponent({ component: module.default }); + }); + }); + return component + ? React.createElement(component, props, ...(children || [])) + : null; +}; export function bind(node, config) { return { diff --git a/tests/test_server/__init__.py b/tests/test_backend/__init__.py similarity index 100% rename from tests/test_server/__init__.py rename to tests/test_backend/__init__.py diff --git a/tests/test_server/test_common.py b/tests/test_backend/test_common.py similarity index 100% rename from tests/test_server/test_common.py rename to tests/test_backend/test_common.py diff --git a/tests/test_server/test_utils.py b/tests/test_backend/test_utils.py similarity index 100% rename from tests/test_server/test_utils.py rename to tests/test_backend/test_utils.py diff --git a/tests/test_web/test_module.py b/tests/test_web/test_module.py index 48b981ba9..497b89787 100644 --- a/tests/test_web/test_module.py +++ b/tests/test_web/test_module.py @@ -83,7 +83,9 @@ def test_module_from_template_where_template_does_not_exist(): async def test_module_from_template(display: DisplayFixture): - victory = idom.web.module_from_template("react", "victory-bar@35.4.0") + victory = idom.web.module_from_template("react@18.2.0", "victory-bar@35.4.0") + + assert "react@18.2.0" in victory.file.read_text() VictoryBar = idom.web.export(victory, "VictoryBar") await display.show(VictoryBar) From d5471229df3ce50302db9a122527e5ce1c557f8d Mon Sep 17 00:00:00 2001 From: rmorshea Date: Mon, 20 Jun 2022 13:17:14 -0700 Subject: [PATCH 081/253] version 0.39.0 --- VERSION | 2 +- docs/source/about/changelog.rst | 10 ++++++++-- src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 17 insertions(+), 11 deletions(-) diff --git a/VERSION b/VERSION index bb22182d4..4ef2eb086 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.38.1 +0.39.0 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 10215f200..7fd722c5d 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.39.0 +------- +:octicon:`milestone` *released on 2022-06-20* + **Fixed** - :pull:`763` - ``No module named 'idom.server'`` from ``idom.run`` @@ -36,8 +43,7 @@ Unreleased - ``ServerFixture -> BackendFixture`` - ``DisplayFixture.server -> DisplayFixture.backend`` -- :pull:`765` - ``exports_default`` parameter is not longer required for - ``module_from_template`` when exporting ``default``. +- :pull:`765` - ``exports_default`` parameter is removed from ``module_from_template``. **Added** diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 6f2d44d66..005783522 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.38.1", + "version": "0.39.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.38.1", + "version": "0.39.0", "license": "MIT", "workspaces": [ "./packages/*" @@ -5160,7 +5160,7 @@ } }, "packages/idom-app-react": { - "version": "0.38.1", + "version": "0.39.0", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5176,7 +5176,7 @@ }, "packages/idom-app-react/packages/idom-client-react": {}, "packages/idom-client-react": { - "version": "0.38.1", + "version": "0.39.0", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index b44cb3400..a81d10f18 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.38.1", + "version": "0.39.0", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 8b0df7822..83973e74a 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.38.1" + "version": "0.39.0" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 7b1ea9856..179aa7347 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.38.1" + "version": "0.39.0" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index e8b0fb4e8..e7994185d 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.38.1" # DO NOT MODIFY +__version__ = "0.39.0" # DO NOT MODIFY __all__ = [ "component", From a2bd7addd1f354abed8ff5718352fff3ac2a3e64 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 20 Jun 2022 23:10:27 -0700 Subject: [PATCH 082/253] test py3.10 (#767) --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8be799f5a..aca12805a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,7 +33,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.7", "3.8", "3.9"] + python-version: ["3.7", "3.8", "3.9", "3.10"] os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v2 From 535d74623f4730abccc7f8231e524750754949f8 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 26 Jun 2022 15:04:43 -0700 Subject: [PATCH 083/253] Update pull_request_template.md --- .github/pull_request_template.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 76556bd06..4cafcee61 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -9,4 +9,3 @@ Please update this checklist as you complete each item: - [ ] Tests have been included for all bug fixes or added functionality. - [ ] The `changelog.rst` has been updated with any significant changes. - [ ] GitHub Issues which may be closed by this Pull Request have been linked. -- [ ] I have left irrelevant checklist items unchecked instead of removing them. From 4500d55280f0c6150dc2bca4245c4fcd484d25e4 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 1 Jul 2022 16:24:21 -0700 Subject: [PATCH 084/253] add asgiref dep + set default timeout on page (#776) * add asgiref dep + set default timeout on page * add changelog entry * Update display.py * Update config.py --- docs/source/about/changelog.rst | 8 +++++++- requirements/pkg-deps.txt | 1 + src/idom/config.py | 3 ++- src/idom/testing/display.py | 3 +++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 7fd722c5d..1f9e595c3 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Added** + +- :pull:`123` - ``asgiref`` as a dependency + +**Changed** + +- :pull:`123` - set default timeout on playwright page for testing v0.39.0 diff --git a/requirements/pkg-deps.txt b/requirements/pkg-deps.txt index 6e970f4c2..f13b33bf9 100644 --- a/requirements/pkg-deps.txt +++ b/requirements/pkg-deps.txt @@ -5,3 +5,4 @@ jsonpatch >=1.32 fastjsonschema >=2.14.5 requests >=2 colorlog >=6 +asgiref >=3 diff --git a/src/idom/config.py b/src/idom/config.py index a13a2e26f..dec2cb958 100644 --- a/src/idom/config.py +++ b/src/idom/config.py @@ -80,7 +80,8 @@ IDOM_TESTING_DEFAULT_TIMEOUT = _Option( "IDOM_TESTING_DEFAULT_TIMEOUT", - 3.0, + 5.0, mutable=False, validator=float, ) +"""A default timeout for testing utilities in IDOM""" diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py index 30151a7a3..0715f7a51 100644 --- a/src/idom/testing/display.py +++ b/src/idom/testing/display.py @@ -7,6 +7,7 @@ from playwright.async_api import Browser, BrowserContext, Page, async_playwright from idom import html +from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT from idom.types import RootComponentConstructor from .backend import BackendFixture @@ -57,6 +58,8 @@ async def __aenter__(self) -> DisplayFixture: browser = self._browser self.page = await browser.new_page() + self.page.set_default_timeout(IDOM_TESTING_DEFAULT_TIMEOUT.current * 1000) + if not hasattr(self, "backend"): self.backend = BackendFixture() await es.enter_async_context(self.backend) From 7bebc4d01a32ef88ae01d3f10a14b21ec7c1eb8c Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 14 Jul 2022 16:46:51 -0700 Subject: [PATCH 085/253] Track contexts in hooks as state (#787) * fix use_context components which are newly added to the layout after the initial render do not have access to contexts. we solve this by tracking life cycle hooks in stack and copying the context providers from parent to child hooks. we also change how contexts are implemented - instead of needing a create_context function which returns a new Context class, we just return a Context object that constructs a ContextProvider component. the earlier implementation was too clever and did not add anything for it. * add test * add changelog entry * fix mypy * fix tornado dev server * remove unused func * improve test * remove unused method * fix style issues * get clever with functions * fix tests * update changelog * get coverage --- docs/source/about/changelog.rst | 10 +- src/idom/backend/flask.py | 4 +- src/idom/backend/sanic.py | 4 +- src/idom/backend/starlette.py | 4 +- src/idom/backend/tornado.py | 7 +- src/idom/core/_f_back.py | 23 +++++ src/idom/core/_thread_local.py | 3 - src/idom/core/hooks.py | 159 ++++++++++++++++---------------- src/idom/core/layout.py | 52 ++++++----- src/idom/core/vdom.py | 14 ++- tests/test_core/test_hooks.py | 41 ++++++-- tests/test_core/test_layout.py | 8 +- 12 files changed, 184 insertions(+), 145 deletions(-) create mode 100644 src/idom/core/_f_back.py diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 1f9e595c3..c2d2384d9 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,13 +23,19 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -**Added** +**Fixed** -- :pull:`123` - ``asgiref`` as a dependency +- :issue:`789` - Conditionally rendered components cannot use contexts **Changed** - :pull:`123` - set default timeout on playwright page for testing +- :pull:`787` - Track contexts in hooks as state +- :pull:`787` - remove non-standard ``name`` argument from ``create_context`` + +**Added** + +- :pull:`123` - ``asgiref`` as a dependency v0.39.0 diff --git a/src/idom/backend/flask.py b/src/idom/backend/flask.py index a9ee2a12e..55e20618b 100644 --- a/src/idom/backend/flask.py +++ b/src/idom/backend/flask.py @@ -37,9 +37,7 @@ logger = logging.getLogger(__name__) -ConnectionContext: type[Context[Connection | None]] = create_context( - None, "ConnectionContext" -) +ConnectionContext: Context[Connection | None] = create_context(None) def configure( diff --git a/src/idom/backend/sanic.py b/src/idom/backend/sanic.py index 537ed839f..aa0b45405 100644 --- a/src/idom/backend/sanic.py +++ b/src/idom/backend/sanic.py @@ -32,9 +32,7 @@ logger = logging.getLogger(__name__) -ConnectionContext: type[Context[Connection | None]] = create_context( - None, "ConnectionContext" -) +ConnectionContext: Context[Connection | None] = create_context(None) def configure( diff --git a/src/idom/backend/starlette.py b/src/idom/backend/starlette.py index 83c69a971..ebee12dd0 100644 --- a/src/idom/backend/starlette.py +++ b/src/idom/backend/starlette.py @@ -30,9 +30,7 @@ logger = logging.getLogger(__name__) -WebSocketContext: type[Context[WebSocket | None]] = create_context( - None, "WebSocketContext" -) +WebSocketContext: Context[WebSocket | None] = create_context(None) def configure( diff --git a/src/idom/backend/tornado.py b/src/idom/backend/tornado.py index ff4bc30ca..febd4db3a 100644 --- a/src/idom/backend/tornado.py +++ b/src/idom/backend/tornado.py @@ -26,9 +26,7 @@ from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path -ConnectionContext: type[Context[Connection | None]] = create_context( - None, "ConnectionContext" -) +ConnectionContext: Context[Connection | None] = create_context(None) def configure( @@ -67,8 +65,7 @@ async def serve_development_app( ) -> None: enable_pretty_logging() - # setup up tornado to use asyncio - AsyncIOMainLoop().install() + AsyncIOMainLoop.current().install() server = HTTPServer(app) server.listen(port, host) diff --git a/src/idom/core/_f_back.py b/src/idom/core/_f_back.py new file mode 100644 index 000000000..81e66a4f1 --- /dev/null +++ b/src/idom/core/_f_back.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +import inspect +from types import FrameType + + +def f_module_name(index: int = 0) -> str: + frame = f_back(index + 1) + if frame is None: + return "" # pragma: no cover + name = frame.f_globals.get("__name__", "") + assert isinstance(name, str), "Expected module name to be a string" + return name + + +def f_back(index: int = 0) -> FrameType | None: + frame = inspect.currentframe() + while frame is not None: + if index < 0: + return frame + frame = frame.f_back + index -= 1 + return None # pragma: no cover diff --git a/src/idom/core/_thread_local.py b/src/idom/core/_thread_local.py index f1168cc20..80a42d069 100644 --- a/src/idom/core/_thread_local.py +++ b/src/idom/core/_thread_local.py @@ -20,6 +20,3 @@ def get(self) -> _StateType: else: state = self._state[thread] return state - - def set(self, state: _StateType) -> None: - self._state[current_thread()] = state diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index 3d00478f1..0abb47795 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -8,7 +8,6 @@ Any, Awaitable, Callable, - ClassVar, Dict, Generic, List, @@ -239,108 +238,94 @@ def use_debug_value( logger.debug(f"{current_hook().component} {new}") -def create_context( - default_value: _StateType, name: str | None = None -) -> type[Context[_StateType]]: +def create_context(default_value: _StateType) -> Context[_StateType]: """Return a new context type for use in :func:`use_context`""" - class _Context(Context[_StateType]): - _default_value = default_value + def context( + *children: Any, + value: _StateType = default_value, + key: Key | None = None, + ) -> ContextProvider[_StateType]: + return ContextProvider( + *children, + value=value, + key=key, + type=context, + ) + + context.__qualname__ = "context" + + return context - _Context.__name__ = name or "Context" - return _Context +class Context(Protocol[_StateType]): + """Returns a :class:`ContextProvider` component""" + def __call__( + self, + *children: Any, + value: _StateType = ..., + key: Key | None = ..., + ) -> ContextProvider[_StateType]: + ... -def use_context(context_type: type[Context[_StateType]]) -> _StateType: + +def use_context(context: Context[_StateType]) -> _StateType: """Get the current value for the given context type. See the full :ref:`Use Context` docs for more information. """ - # We have to use a Ref here since, if initially context_type._current is None, and - # then on a subsequent render it is present, we need to be able to dynamically adopt - # that newly present current context. When we update it though, we don't need to - # schedule a new render since we're already rending right now. Thus we can't do this - # with use_state() since we'd incur an extra render when calling set_state. - context_ref: Ref[Context[_StateType] | None] = use_ref(None) - - if context_ref.current is None: - provided_context = context_type._current.get() - if provided_context is None: - # Cast required because of: https://github.com/python/mypy/issues/5144 - return cast(_StateType, context_type._default_value) - context_ref.current = provided_context - - # We need the hook now so that we can schedule an update when hook = current_hook() + provider = hook.get_context_provider(context) + + if provider is None: + # force type checker to realize this is just a normal function + assert isinstance(context, FunctionType), f"{context} is not a Context" + # __kwdefault__ can be None if no kwarg only parameters exist + assert context.__kwdefaults__ is not None, f"{context} has no 'value' kwarg" + # lastly check that 'value' kwarg exists + assert "value" in context.__kwdefaults__, f"{context} has no 'value' kwarg" + # then we can safely access the context's default value + return cast(_StateType, context.__kwdefaults__["value"]) - context = context_ref.current + subscribers = provider._subscribers @use_effect def subscribe_to_context_change() -> Callable[[], None]: - def set_context(new: Context[_StateType]) -> None: - # We don't need to check if `new is not context_ref.current` because we only - # trigger this callback when the value of a context, and thus the context - # itself changes. Therefore we can always schedule a render. - context_ref.current = new - hook.schedule_render() - - context.subscribers.add(set_context) - return lambda: context.subscribers.remove(set_context) - - return context.value - + subscribers.add(hook) + return lambda: subscribers.remove(hook) -_UNDEFINED: Any = object() + return provider._value -class Context(Generic[_StateType]): - - # This should be _StateType instead of Any, but it can't due to this limitation: - # https://github.com/python/mypy/issues/5144 - _default_value: ClassVar[Any] - - _current: ClassVar[ThreadLocal[Context[Any] | None]] - - def __init_subclass__(cls) -> None: - # every context type tracks which of its instances are currently in use - cls._current = ThreadLocal(lambda: None) - +class ContextProvider(Generic[_StateType]): def __init__( self, *children: Any, - value: _StateType = _UNDEFINED, - key: Key | None = None, + value: _StateType, + key: Key | None, + type: Context[_StateType], ) -> None: self.children = children - self.value: _StateType = self._default_value if value is _UNDEFINED else value self.key = key - self.subscribers: set[Callable[[Context[_StateType]], None]] = set() - self.type = self.__class__ + self.type = type + self._subscribers: set[LifeCycleHook] = set() + self._value = value def render(self) -> VdomDict: - current_ctx = self.__class__._current - - prior_ctx = current_ctx.get() - current_ctx.set(self) - - def reset_ctx() -> None: - current_ctx.set(prior_ctx) - - current_hook().add_effect(COMPONENT_DID_RENDER_EFFECT, reset_ctx) - + current_hook().set_context_provider(self) return vdom("", *self.children) - def should_render(self, new: Context[_StateType]) -> bool: - if self.value is not new.value: - new.subscribers.update(self.subscribers) - for set_context in self.subscribers: - set_context(new) + def should_render(self, new: ContextProvider[_StateType]) -> bool: + if self._value is not new._value: + for hook in self._subscribers: + hook.set_context_provider(new) + hook.schedule_render() return True return False def __repr__(self) -> str: - return f"{type(self).__name__}({id(self)})" + return f"{type(self).__name__}({self.type})" _ActionType = TypeVar("_ActionType") @@ -558,14 +543,14 @@ def _try_to_infer_closure_values( def current_hook() -> LifeCycleHook: """Get the current :class:`LifeCycleHook`""" - hook = _current_hook.get() - if hook is None: + hook_stack = _hook_stack.get() + if not hook_stack: msg = "No life cycle hook is active. Are you rendering in a layout?" raise RuntimeError(msg) - return hook + return hook_stack[-1] -_current_hook: ThreadLocal[LifeCycleHook | None] = ThreadLocal(lambda: None) +_hook_stack: ThreadLocal[list[LifeCycleHook]] = ThreadLocal(list) EffectType = NewType("EffectType", str) @@ -630,9 +615,8 @@ class LifeCycleHook: hook.affect_component_did_render() - # This should only be called after any child components yielded by - # component_instance.render() have also been rendered because effects of - # this type must run after the full set of changes have been resolved. + # This should only be called after the full set of changes associated with a + # given render have been completed. hook.affect_layout_did_render() # Typically an event occurs and a new render is scheduled, thus begining @@ -650,6 +634,7 @@ class LifeCycleHook: __slots__ = ( "__weakref__", + "_context_providers", "_current_state_index", "_event_effects", "_is_rendering", @@ -666,6 +651,7 @@ def __init__( self, schedule_render: Callable[[], None], ) -> None: + self._context_providers: dict[Context[Any], ContextProvider[Any]] = {} self._schedule_render_callback = schedule_render self._schedule_render_later = False self._is_rendering = False @@ -700,6 +686,14 @@ def add_effect(self, effect_type: EffectType, function: Callable[[], None]) -> N """Trigger a function on the occurance of the given effect type""" self._event_effects[effect_type].append(function) + def set_context_provider(self, provider: ContextProvider[Any]) -> None: + self._context_providers[provider.type] = provider + + def get_context_provider( + self, context: Context[_StateType] + ) -> ContextProvider[_StateType] | None: + return self._context_providers.get(context) + def affect_component_will_render(self, component: ComponentType) -> None: """The component is about to render""" self.component = component @@ -753,13 +747,16 @@ def set_current(self) -> None: This method is called by a layout before entering the render method of this hook's associated component. """ - _current_hook.set(self) + hook_stack = _hook_stack.get() + if hook_stack: + parent = hook_stack[-1] + self._context_providers.update(parent._context_providers) + hook_stack.append(self) def unset_current(self) -> None: """Unset this hook as the active hook in this thread""" # this assertion should never fail - primarilly useful for debug - assert _current_hook.get() is self - _current_hook.set(None) + assert _hook_stack.get().pop() is self def _schedule_render(self) -> None: try: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index d77431bc1..a02be353e 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -3,6 +3,7 @@ import abc import asyncio from collections import Counter +from contextlib import ExitStack from functools import wraps from logging import getLogger from typing import ( @@ -158,14 +159,10 @@ async def render(self) -> LayoutUpdate: def _create_layout_update(self, old_state: _ModelState) -> LayoutUpdate: new_state = _copy_component_model_state(old_state) - component = new_state.life_cycle_state.component - self._render_component(old_state, new_state, component) - # hook effects must run after the update is complete - for model_state in _iter_model_state_children(new_state): - if model_state.is_component_state: - model_state.life_cycle_state.hook.affect_layout_did_render() + with ExitStack() as exit_stack: + self._render_component(exit_stack, old_state, new_state, component) old_model: Optional[VdomJson] try: @@ -181,6 +178,7 @@ def _create_layout_update(self, old_state: _ModelState) -> LayoutUpdate: def _render_component( self, + exit_stack: ExitStack, old_state: Optional[_ModelState], new_state: _ModelState, component: ComponentType, @@ -200,19 +198,17 @@ def _render_component( else: life_cycle_hook = life_cycle_state.hook life_cycle_hook.affect_component_will_render(component) + exit_stack.callback(life_cycle_hook.affect_layout_did_render) + life_cycle_hook.set_current() try: - life_cycle_hook.set_current() - try: - raw_model = component.render() - finally: - life_cycle_hook.unset_current() + raw_model = component.render() # wrap the model in a fragment (i.e. tagName="") to ensure components have # a separate node in the model state tree. This could be removed if this # components are given a node in the tree some other way wrapper_model: VdomDict = {"tagName": ""} if raw_model is not None: wrapper_model["children"] = [raw_model] - self._render_model(old_state, new_state, wrapper_model) + self._render_model(exit_stack, old_state, new_state, wrapper_model) except Exception as error: logger.exception(f"Failed to render {component}") new_state.model.current = { @@ -224,6 +220,7 @@ def _render_component( ), } finally: + life_cycle_hook.unset_current() life_cycle_hook.affect_component_did_render() try: @@ -243,6 +240,7 @@ def _render_component( def _render_model( self, + exit_stack: ExitStack, old_state: Optional[_ModelState], new_state: _ModelState, raw_model: Any, @@ -253,7 +251,9 @@ def _render_model( if "importSource" in raw_model: new_state.model.current["importSource"] = raw_model["importSource"] self._render_model_attributes(old_state, new_state, raw_model) - self._render_model_children(old_state, new_state, raw_model.get("children", [])) + self._render_model_children( + exit_stack, old_state, new_state, raw_model.get("children", []) + ) def _render_model_attributes( self, @@ -320,6 +320,7 @@ def _render_model_event_handlers_without_old_state( def _render_model_children( self, + exit_stack: ExitStack, old_state: Optional[_ModelState], new_state: _ModelState, raw_children: Any, @@ -329,7 +330,9 @@ def _render_model_children( if old_state is None: if raw_children: - self._render_model_children_without_old_state(new_state, raw_children) + self._render_model_children_without_old_state( + exit_stack, new_state, raw_children + ) return None elif not raw_children: self._unmount_model_states(list(old_state.children_by_key.values())) @@ -377,7 +380,7 @@ def _render_model_children( new_state, index, ) - self._render_model(old_child_state, new_child_state, child) + self._render_model(exit_stack, old_child_state, new_child_state, child) new_children.append(new_child_state.model.current) new_state.children_by_key[key] = new_child_state elif child_type is _COMPONENT_TYPE: @@ -411,7 +414,9 @@ def _render_model_children( child, self._rendering_queue.put, ) - self._render_component(old_child_state, new_child_state, child) + self._render_component( + exit_stack, old_child_state, new_child_state, child + ) else: old_child_state = old_state.children_by_key.get(key) if old_child_state is not None: @@ -419,7 +424,10 @@ def _render_model_children( new_children.append(child) def _render_model_children_without_old_state( - self, new_state: _ModelState, raw_children: List[Any] + self, + exit_stack: ExitStack, + new_state: _ModelState, + raw_children: List[Any], ) -> None: child_type_key_tuples = list(_process_child_type_and_key(raw_children)) @@ -435,14 +443,14 @@ def _render_model_children_without_old_state( for index, (child, child_type, key) in enumerate(child_type_key_tuples): if child_type is _DICT_TYPE: child_state = _make_element_model_state(new_state, index, key) - self._render_model(None, child_state, child) + self._render_model(exit_stack, None, child_state, child) new_children.append(child_state.model.current) new_state.children_by_key[key] = child_state elif child_type is _COMPONENT_TYPE: child_state = _make_component_model_state( new_state, index, key, child, self._rendering_queue.put ) - self._render_component(None, child_state, child) + self._render_component(exit_stack, None, child_state, child) else: new_children.append(child) @@ -473,12 +481,6 @@ def _check_should_render(old: ComponentType, new: ComponentType) -> bool: return False -def _iter_model_state_children(model_state: _ModelState) -> Iterator[_ModelState]: - yield model_state - for child in model_state.children_by_key.values(): - yield from _iter_model_state_children(child) - - def _new_root_model_state( component: ComponentType, schedule_render: Callable[[_LifeCycleStateId], None] ) -> _ModelState: diff --git a/src/idom/core/vdom.py b/src/idom/core/vdom.py index 0470c15be..4af5bb009 100644 --- a/src/idom/core/vdom.py +++ b/src/idom/core/vdom.py @@ -1,6 +1,5 @@ from __future__ import annotations -import inspect import logging from typing import Any, Dict, List, Mapping, Optional, Sequence, Tuple, cast @@ -23,6 +22,8 @@ VdomJson, ) +from ._f_back import f_module_name + logger = logging.getLogger() @@ -223,13 +224,10 @@ def constructor( "element represented by a :class:`VdomDict`." ) - frame = inspect.currentframe() - if frame is not None and frame.f_back is not None and frame.f_back is not None: - module = frame.f_back.f_globals.get("__name__") # module in outer frame - if module is not None: - qualname = module + "." + tag - constructor.__module__ = module - constructor.__qualname__ = qualname + module_name = f_module_name(1) + if module_name: + constructor.__module__ = module_name + constructor.__qualname__ = f"{module_name}.{tag}" return constructor diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index e0d5694fe..a2eeb9508 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -1,5 +1,4 @@ import asyncio -import re import pytest @@ -935,11 +934,8 @@ def ComponentUsesContext(): def test_context_repr(): - Context = idom.create_context(None) - assert re.match(r"Context\(.*\)", repr(Context())) - - MyContext = idom.create_context(None, name="MyContext") - assert re.match(r"MyContext\(.*\)", repr(MyContext())) + sample_context = idom.create_context(None) + assert repr(sample_context()) == f"ContextProvider({sample_context})" async def test_use_context_only_renders_for_value_change(): @@ -1068,8 +1064,8 @@ def Inner(): async def test_neighboring_contexts_do_not_conflict(): - LeftContext = idom.create_context(None, name="Left") - RightContext = idom.create_context(None, name="Right") + LeftContext = idom.create_context(None) + RightContext = idom.create_context(None) set_left = idom.Ref() set_right = idom.Ref() @@ -1247,3 +1243,32 @@ def SomeComponent(): with assert_idom_did_not_log(r"SomeComponent\(.*?\) message is 'bye'"): await layout.render() + + +async def test_conditionally_rendered_components_can_use_context(): + set_state = idom.Ref() + used_context_values = [] + some_context = idom.create_context(None) + + @idom.component + def SomeComponent(): + state, set_state.current = idom.use_state(True) + if state: + return FirstCondition() + else: + return SecondCondition() + + @idom.component + def FirstCondition(): + used_context_values.append(idom.use_context(some_context) + "-1") + + @idom.component + def SecondCondition(): + used_context_values.append(idom.use_context(some_context) + "-2") + + async with idom.Layout(some_context(SomeComponent(), value="the-value")) as layout: + await layout.render() + assert used_context_values == ["the-value-1"] + set_state.current(False) + await layout.render() + assert used_context_values == ["the-value-1", "the-value-2"] diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index bf77b6b63..ce419c0e4 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -1027,7 +1027,7 @@ async def test_element_keys_inside_components_do_not_reset_state_of_component(): reset in any `Child()` components but there was a bug where that happened. """ - effect_calls_without_state = [] + effect_calls_without_state = set() set_child_key_num = StaticEventHandler() did_call_effect = asyncio.Event() @@ -1051,7 +1051,7 @@ def Child(child_key): async def record_if_state_is_reset(): if state: return - effect_calls_without_state.append(child_key) + effect_calls_without_state.add(child_key) set_state(1) did_call_effect.set() @@ -1063,13 +1063,13 @@ async def record_if_state_is_reset(): async with idom.Layout(Parent()) as layout: await layout.render() await did_call_effect.wait() - assert effect_calls_without_state == ["some-key", "key-0"] + assert effect_calls_without_state == {"some-key", "key-0"} did_call_effect.clear() for i in range(1, 5): await layout.deliver(LayoutEvent(set_child_key_num.target, [])) await layout.render() - assert effect_calls_without_state == ["some-key", "key-0"] + assert effect_calls_without_state == {"some-key", "key-0"} did_call_effect.clear() From 27209116c417a2fcb28bdd777a78150a10d9acfa Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sat, 16 Jul 2022 10:20:23 -0700 Subject: [PATCH 086/253] use strict equality for text, numeric, and binary types (#790) --- .github/pull_request_template.md | 6 +- docs/source/about/changelog.rst | 1 + src/idom/core/hooks.py | 39 +++++++++++- tests/test_core/test_hooks.py | 106 ++++++++++++++++++++++++++++++- 4 files changed, 143 insertions(+), 9 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4cafcee61..a119e699c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,8 +1,4 @@ -# Description - -A summary of the changes. - -# Checklist: +## Checklist Please update this checklist as you complete each item: diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index c2d2384d9..9e4ce9b9c 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -26,6 +26,7 @@ Unreleased **Fixed** - :issue:`789` - Conditionally rendered components cannot use contexts +- :issue:`773` - Use strict equality check for text, numeric, and binary types in hooks **Changed** diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index 0abb47795..45e7c7dd9 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -113,7 +113,7 @@ def dispatch( next_value = new(self.value) else: next_value = new - if next_value is not self.value: + if not strictly_equal(next_value, self.value): self.value = next_value hook.schedule_render() @@ -317,7 +317,7 @@ def render(self) -> VdomDict: return vdom("", *self.children) def should_render(self, new: ContextProvider[_StateType]) -> bool: - if self._value is not new._value: + if not strictly_equal(self._value, new._value): for hook in self._subscribers: hook.set_context_provider(new) hook.schedule_render() @@ -465,7 +465,10 @@ def use_memo( elif ( len(memo.deps) != len(dependencies) # if deps are same length check identity for each item - or any(current is not new for current, new in zip(memo.deps, dependencies)) + or not all( + strictly_equal(current, new) + for current, new in zip(memo.deps, dependencies) + ) ): memo.deps = dependencies changed = True @@ -765,3 +768,33 @@ def _schedule_render(self) -> None: logger.exception( f"Failed to schedule render via {self._schedule_render_callback}" ) + + +def strictly_equal(x: Any, y: Any) -> bool: + """Check if two values are identical or, for a limited set or types, equal. + + Only the following types are checked for equality rather than identity: + + - ``int`` + - ``float`` + - ``complex`` + - ``str`` + - ``bytes`` + - ``bytearray`` + - ``memoryview`` + """ + return x is y or (type(x) in _NUMERIC_TEXT_BINARY_TYPES and x == y) + + +_NUMERIC_TEXT_BINARY_TYPES = { + # numeric + int, + float, + complex, + # text + str, + # binary types + bytes, + bytearray, + memoryview, +} diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index a2eeb9508..9c3d8c2f3 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -5,7 +5,12 @@ import idom from idom import html from idom.config import IDOM_DEBUG_MODE -from idom.core.hooks import COMPONENT_DID_RENDER_EFFECT, LifeCycleHook, current_hook +from idom.core.hooks import ( + COMPONENT_DID_RENDER_EFFECT, + LifeCycleHook, + current_hook, + strictly_equal, +) from idom.core.layout import Layout from idom.core.serve import render_json_patch from idom.testing import DisplayFixture, HookCatcher, assert_idom_did_log, poll @@ -1272,3 +1277,102 @@ def SecondCondition(): set_state.current(False) await layout.render() assert used_context_values == ["the-value-1", "the-value-2"] + + +@pytest.mark.parametrize( + "x, y, result", + [ + ("text", "text", True), + ("text", "not-text", False), + (b"text", b"text", True), + (b"text", b"not-text", False), + (bytearray([1, 2, 3]), bytearray([1, 2, 3]), True), + (bytearray([1, 2, 3]), bytearray([1, 2, 3, 4]), False), + (1.0, 1.0, True), + (1.0, 2.0, False), + (1j, 1j, True), + (1j, 2j, False), + # ints less than 5 and greater than 256 are always identical + (-100000, -100000, True), + (100000, 100000, True), + (123, 456, False), + ], +) +def test_strictly_equal(x, y, result): + assert strictly_equal(x, y) is result + + +STRICT_EQUALITY_VALUE_CONSTRUCTORS = [ + lambda: "string-text", + lambda: b"byte-text", + lambda: bytearray([1, 2, 3]), + lambda: bytearray([1, 2, 3]), + lambda: 1.0, + lambda: 10000000, + lambda: 1j, +] + + +@pytest.mark.parametrize("get_value", STRICT_EQUALITY_VALUE_CONSTRUCTORS) +async def test_use_state_compares_with_strict_equality(get_value): + render_count = idom.Ref(0) + set_state = idom.Ref() + + @idom.component + def SomeComponent(): + _, set_state.current = idom.use_state(get_value()) + render_count.current += 1 + + async with idom.Layout(SomeComponent()) as layout: + await layout.render() + assert render_count.current == 1 + set_state.current(get_value()) + with pytest.raises(asyncio.TimeoutError): + await asyncio.wait_for(layout.render(), timeout=0.1) + + +@pytest.mark.parametrize("get_value", STRICT_EQUALITY_VALUE_CONSTRUCTORS) +async def test_use_effect_compares_with_strict_equality(get_value): + effect_count = idom.Ref(0) + value = idom.Ref("string") + hook = HookCatcher() + + @idom.component + @hook.capture + def SomeComponent(): + @idom.use_effect(dependencies=[value.current]) + def incr_effect_count(): + effect_count.current += 1 + + async with idom.Layout(SomeComponent()) as layout: + await layout.render() + assert effect_count.current == 1 + value.current = "string" # new string instance but same value + hook.latest.schedule_render() + await layout.render() + # effect does not trigger + assert effect_count.current == 1 + + +@pytest.mark.parametrize("get_value", STRICT_EQUALITY_VALUE_CONSTRUCTORS) +async def test_use_context_compares_with_strict_equality(get_value): + hook = HookCatcher() + context = idom.create_context(None) + inner_render_count = idom.Ref(0) + + @idom.component + @hook.capture + def OuterComponent(): + return context(InnerComponent(), value=get_value()) + + @idom.component + def InnerComponent(): + idom.use_context(context) + inner_render_count.current += 1 + + async with idom.Layout(OuterComponent()) as layout: + await layout.render() + assert inner_render_count.current == 1 + hook.latest.schedule_render() + await layout.render() + assert inner_render_count.current == 1 From 30732ccbbcd154ea9d92bdf476dc29026f2c69ac Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 18 Jul 2022 00:59:16 -0700 Subject: [PATCH 087/253] make nox-session reusable workflow (#791) * make nox-session reusable workflow * bump sphinx ver * update job names --- .github/workflows/.nox-session.yml | 48 ++++++++++++ .github/workflows/test.yml | 97 ++++++------------------ docs/source/_custom_js/package-lock.json | 2 +- requirements/build-docs.txt | 2 +- 4 files changed, 74 insertions(+), 75 deletions(-) create mode 100644 .github/workflows/.nox-session.yml diff --git a/.github/workflows/.nox-session.yml b/.github/workflows/.nox-session.yml new file mode 100644 index 000000000..8f68188cc --- /dev/null +++ b/.github/workflows/.nox-session.yml @@ -0,0 +1,48 @@ +name: Nox Session + +on: + workflow_call: + inputs: + session-name: + required: true + type: string + session-arguments: + required: false + type: string + runs-on-array: + required: false + type: string + default: '["ubuntu-latest"]' + python-version-array: + required: false + type: string + default: '["3.x"]' + job-name: + required: false + type: string + default: python-{0} {1} + +jobs: + nox-session: + name: ${{ format(inputs.job-name, matrix.python-version, matrix.runs-on) }} + strategy: + matrix: + runs-on: ${{fromJson(inputs.runs-on-array)}} + python-version: ${{fromJson(inputs.python-version-array)}} + runs-on: ${{ matrix.runs-on }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: "14.x" + - name: Install Specific NPM Version + run: npm install -g npm@8.3 + - name: Use Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install Python Dependencies + run: pip install -r requirements/nox-deps.txt + - name: Run Tests + env: { "CI": "true" } + run: nox -s ${{ inputs.session-name }} --stop-on-first-error -- ${{ inputs.session-arguments }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aca12805a..f6eac70ca 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: Test +name: test on: push: @@ -11,75 +11,26 @@ on: - cron: "0 0 * * *" jobs: - test-python-coverage: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: "14.x" - - name: Install Specific NPM Version - run: npm install -g npm@8.3 - - name: Use Latest Python - uses: actions/setup-python@v2 - with: - python-version: "3.9" - - name: Install Python Dependencies - run: pip install -r requirements/nox-deps.txt - - name: Run Tests - env: { "CI": "true" } - run: nox -s test_python_suite -- --maxfail=3 - test-python-environments: - runs-on: ${{ matrix.os }} - strategy: - matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] - os: [ubuntu-latest, macos-latest, windows-latest] - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: "14.x" - - name: Install Specific NPM Version - run: npm install -g npm@8.3 - - name: Use Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - name: Install Python Dependencies - run: pip install -r requirements/nox-deps.txt - - name: Run Tests - env: { "CI": "true" } - run: nox -s test_python --stop-on-first-error -- --maxfail=3 --no-cov - test-docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: "14.x" - - name: Install Specific NPM Version - run: npm install -g npm@8.3 - - name: Use Latest Python - uses: actions/setup-python@v2 - with: - python-version: "3.9" - - name: Install Python Dependencies - run: pip install -r requirements/nox-deps.txt - - name: Run Tests - env: { "CI": "true" } - run: nox -s test_docs - test-javascript: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: "14.x" - - name: Install Specific NPM Version - run: npm install -g npm@8.3 - - name: Install Python Dependencies - run: pip install -r requirements/nox-deps.txt - - name: Run Tests - env: { "CI": "true" } - run: nox -s test_javascript + python-coverage: + uses: ./.github/workflows/.nox-session.yml + with: + job-name: "python-{0}" + session-name: test_python_suite + session-arguments: --maxfail=3 + python-environments: + uses: ./.github/workflows/.nox-session.yml + with: + session-name: test_python_suite + session-arguments: --maxfail=3 --no-cov + runs-on-array: '["ubuntu-latest", "macos-latest", "windows-latest"]' + python-version-array: '["3.7", "3.8", "3.9", "3.10"]' + docs: + uses: ./.github/workflows/.nox-session.yml + with: + job-name: "python-{0}" + session-name: test_docs + javascript: + uses: ./.github/workflows/.nox-session.yml + with: + job-name: "{1}" + session-name: test_javascript diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index dd27b5c34..e6bf270c5 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.38.1", + "version": "0.39.0", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/requirements/build-docs.txt b/requirements/build-docs.txt index c47d862c0..a0eed26be 100644 --- a/requirements/build-docs.txt +++ b/requirements/build-docs.txt @@ -1,4 +1,4 @@ -sphinx ==4.1.2 +sphinx ==4.2.0 sphinx-autodoc-typehints ==1.7.0 furo ==2021.10.09 setuptools_scm From 3db38815c72839d5445a8000ea6972078f1ac016 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 18 Jul 2022 01:06:58 -0700 Subject: [PATCH 088/253] update error messages (#792) --- .pre-commit-config.yaml | 2 +- tests/test_core/test_vdom.py | 31 ++++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2f88278c6..8232c83e4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/ambv/black - rev: 22.1.0 + rev: 22.6.0 hooks: - id: black - repo: https://github.com/pycqa/isort diff --git a/tests/test_core/test_vdom.py b/tests/test_core/test_vdom.py index b377cc231..008a4f724 100644 --- a/tests/test_core/test_vdom.py +++ b/tests/test_core/test_vdom.py @@ -1,3 +1,5 @@ +import sys + import pytest from fastjsonschema import JsonSchemaException @@ -213,6 +215,9 @@ def test_valid_vdom(value): validate_vdom_json(value) +@pytest.mark.skipif( + sys.version_info < (3, 10), reason="error messages are different in Python<3.10" +) @pytest.mark.parametrize( "value, error_message_pattern", [ @@ -230,34 +235,34 @@ def test_valid_vdom(value): ), ( {"tagName": "tag", "children": None}, - r"data must be array", + r"data\.children must be array", ), ( {"tagName": "tag", "children": [None]}, - r"data must be object or string", + r"data\.children\[{data_x}\] must be object or string", ), ( {"tagName": "tag", "children": [{"tagName": None}]}, - r"data\.tagName must be string", + r"data\.children\[{data_x}\]\.tagName must be string", ), ( {"tagName": "tag", "attributes": None}, - r"data.attributes must be object", + r"data\.attributes must be object", ), ( {"tagName": "tag", "eventHandlers": None}, - r"data must be object", + r"data\.eventHandlers must be object", ), ( {"tagName": "tag", "eventHandlers": {"onEvent": None}}, - r"data must be object", + r"data\.eventHandlers\.{data_key} must be object", ), ( { "tagName": "tag", "eventHandlers": {"onEvent": {}}, }, - r"data must contain \['target'\] properties", + r"data\.eventHandlers\.{data_key}\ must contain \['target'\] properties", ), ( { @@ -269,7 +274,7 @@ def test_valid_vdom(value): } }, }, - r"data\.preventDefault must be boolean", + r"data\.eventHandlers\.{data_key}\.preventDefault must be boolean", ), ( { @@ -281,29 +286,29 @@ def test_valid_vdom(value): } }, }, - r"data\.stopPropagation must be boolean", + r"data\.eventHandlers\.{data_key}\.stopPropagation must be boolean", ), ( {"tagName": "tag", "importSource": None}, - r"data must be object", + r"data\.importSource must be object", ), ( {"tagName": "tag", "importSource": {}}, - r"data must contain \['source'\] properties", + r"data\.importSource must contain \['source'\] properties", ), ( { "tagName": "tag", "importSource": {"source": "something", "fallback": 0}, }, - r"data\.fallback must be object or string or null", + r"data\.importSource\.fallback must be object or string or null", ), ( { "tagName": "tag", "importSource": {"source": "something", "fallback": {"tagName": None}}, }, - r"data.tagName must be string", + r"data\.importSource\.fallback\.tagName must be string", ), ], ) From 3a0d4591c13c42287a007fdb47e493f1449d0122 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Jul 2022 08:45:00 -0700 Subject: [PATCH 089/253] Bump jsdom from 16.3.0 to 16.5.0 in /src/client (#774) --- src/client/package-lock.json | 650 +++++++++--------- .../packages/idom-client-react/package.json | 2 +- 2 files changed, 340 insertions(+), 312 deletions(-) diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 005783522..5402a614b 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -432,8 +432,7 @@ "node_modules/abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, "node_modules/abbrev": { "version": "1.1.1", @@ -445,7 +444,6 @@ "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, "bin": { "acorn": "bin/acorn" }, @@ -457,7 +455,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -467,7 +464,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -570,7 +566,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -642,7 +637,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -661,7 +655,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, "engines": { "node": ">=0.8" } @@ -669,14 +662,12 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, "engines": { "node": "*" } @@ -684,8 +675,7 @@ "node_modules/aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "node_modules/balanced-match": { "version": "1.0.2", @@ -697,7 +687,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -775,14 +764,13 @@ "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "node_modules/bufferutil": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -901,8 +889,7 @@ "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "node_modules/chalk": { "version": "2.4.2", @@ -1072,7 +1059,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -1119,8 +1105,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "node_modules/cosmiconfig": { "version": "7.0.1", @@ -1195,14 +1180,12 @@ "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, "dependencies": { "cssom": "~0.3.6" }, @@ -1213,14 +1196,12 @@ "node_modules/cssstyle/node_modules/cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -1232,7 +1213,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -1263,8 +1243,7 @@ "node_modules/decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, "node_modules/decompress-response": { "version": "6.0.0", @@ -1296,8 +1275,7 @@ "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "node_modules/deepmerge": { "version": "4.2.2", @@ -1343,7 +1321,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, "engines": { "node": ">=0.4.0" } @@ -1367,7 +1344,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", - "dev": true, "engines": { "node": ">=6" } @@ -1403,7 +1379,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, "engines": { "node": ">=0.3.1" } @@ -1438,7 +1413,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -1450,7 +1424,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, "engines": { "node": ">=8" } @@ -1488,7 +1461,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -1588,7 +1560,6 @@ "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -1610,7 +1581,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "optional": true, "engines": { "node": ">=0.10.0" @@ -1654,7 +1624,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -1667,7 +1636,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { "node": ">=4.0" } @@ -1682,7 +1650,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1728,14 +1695,12 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, "engines": [ "node >=0.6.0" ] @@ -1743,8 +1708,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-json-patch": { "version": "3.1.0", @@ -1753,14 +1717,12 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "node_modules/fdir": { "version": "5.1.0", @@ -1817,7 +1779,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, "engines": { "node": "*" } @@ -1826,7 +1787,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -1935,7 +1895,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -2007,7 +1966,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, "engines": { "node": ">=4" } @@ -2017,7 +1975,6 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", - "dev": true, "dependencies": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -2073,7 +2030,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -2147,7 +2103,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -2238,7 +2193,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -2356,7 +2310,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true, "engines": { "node": ">=4" } @@ -2471,8 +2424,7 @@ "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "node_modules/is-reference": { "version": "1.2.1", @@ -2498,8 +2450,7 @@ "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "node_modules/is-valid-identifier": { "version": "2.0.2", @@ -2549,8 +2500,7 @@ "node_modules/isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "node_modules/js-tokens": { "version": "4.0.0", @@ -2559,14 +2509,12 @@ "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "node_modules/jsdom": { "version": "16.3.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.3.0.tgz", "integrity": "sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==", - "dev": true, "dependencies": { "abab": "^2.0.3", "acorn": "^7.1.1", @@ -2622,14 +2570,12 @@ "node_modules/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stringify-nice": { "version": "1.1.4", @@ -2643,8 +2589,7 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/jsonparse": { "version": "1.3.1", @@ -2668,7 +2613,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -2704,7 +2648,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true, "engines": { "node": ">=6" } @@ -2713,7 +2656,6 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -2755,8 +2697,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -2875,7 +2816,6 @@ "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -2884,7 +2824,6 @@ "version": "2.1.30", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, "dependencies": { "mime-db": "1.47.0" }, @@ -3052,7 +2991,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", - "dev": true, "engines": { "node": ">=4" } @@ -3112,7 +3050,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true, + "devOptional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -3291,14 +3229,12 @@ "node_modules/nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" }, "node_modules/oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, "engines": { "node": "*" } @@ -3355,7 +3291,6 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -3553,8 +3488,7 @@ "node_modules/parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", @@ -3616,8 +3550,7 @@ "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "node_modules/periscopic": { "version": "2.0.3", @@ -3853,7 +3786,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, "engines": { "node": ">= 0.8.0" } @@ -3862,7 +3794,6 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "dev": true, "bin": { "prettier": "bin-prettier.js" }, @@ -3932,8 +3863,7 @@ "node_modules/psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "node_modules/pump": { "version": "3.0.0", @@ -3949,7 +3879,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -3958,7 +3887,6 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, "engines": { "node": ">=0.6" } @@ -4076,7 +4004,6 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -4107,7 +4034,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, "dependencies": { "lodash": "^4.17.19" }, @@ -4123,7 +4049,6 @@ "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, "dependencies": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", @@ -4140,7 +4065,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -4153,7 +4077,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -4265,7 +4188,6 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "dev": true, "dependencies": { "mri": "^1.1.0" }, @@ -4277,7 +4199,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -4296,14 +4217,12 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, "dependencies": { "xmlchars": "^2.2.0" }, @@ -4558,7 +4477,6 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -4590,7 +4508,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4696,8 +4613,7 @@ "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tar": { "version": "6.1.11", @@ -4732,7 +4648,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz", "integrity": "sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ==", - "dev": true, "engines": { "node": ">=6" } @@ -4741,7 +4656,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, "dependencies": { "ip-regex": "^2.1.0", "psl": "^1.1.28", @@ -4755,7 +4669,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "dev": true, "dependencies": { "punycode": "^2.1.1" }, @@ -4779,7 +4692,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -4790,14 +4702,12 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "dependencies": { "prelude-ls": "~1.1.2" }, @@ -4832,6 +4742,15 @@ "imurmurhash": "^0.1.4" } }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/untildify": { "version": "2.1.0", "dev": true, @@ -4847,7 +4766,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -4856,7 +4774,7 @@ "version": "5.0.9", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -4890,7 +4808,6 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, "bin": { "uuid": "bin/uuid" } @@ -4899,7 +4816,6 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.1.tgz", "integrity": "sha512-JGxttnOGDFs77FaZ0yMUHIzczzQ5R1IlDeNW6Wymw6gAscwMdAffVOP6TlxLIfReZyK8tahoGwWZaTCJzNFDkg==", - "dev": true, "dependencies": { "dequal": "^2.0.0", "diff": "^5.0.0", @@ -4927,7 +4843,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, "engines": [ "node >=0.6.0" ], @@ -4978,7 +4893,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, "dependencies": { "browser-process-hrtime": "^1.0.0" } @@ -4987,7 +4901,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, "dependencies": { "xml-name-validator": "^3.0.0" }, @@ -5005,7 +4918,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, "engines": { "node": ">=10.4" } @@ -5014,7 +4926,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, "dependencies": { "iconv-lite": "0.4.24" } @@ -5022,14 +4933,12 @@ "node_modules/whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, "node_modules/whatwg-url": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", - "dev": true, "dependencies": { "lodash": "^4.7.0", "tr46": "^2.0.2", @@ -5067,7 +4976,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5094,7 +5002,6 @@ "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, "engines": { "node": ">=8.3.0" }, @@ -5114,14 +5021,12 @@ "node_modules/xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "node_modules/yallist": { "version": "4.0.0", @@ -5174,7 +5079,17 @@ "resolved": "packages/idom-app-react/packages/idom-client-react", "link": true }, - "packages/idom-app-react/packages/idom-client-react": {}, + "packages/idom-app-react/packages/idom-client-react": { + "version": "0.0.1", + "dependencies": { + "fast-json-patch": "^3.0.0-1", + "htm": "^3.0.3", + "jsdom": "16.3.0", + "lodash": "^4.17.21", + "prettier": "^2.5.1", + "uvu": "^0.5.1" + } + }, "packages/idom-client-react": { "version": "0.39.0", "license": "MIT", @@ -5183,7 +5098,7 @@ "htm": "^3.0.3" }, "devDependencies": { - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" @@ -5192,6 +5107,124 @@ "react": ">=16", "react-dom": ">=16" } + }, + "packages/idom-client-react/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "packages/idom-client-react/node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "packages/idom-client-react/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "packages/idom-client-react/node_modules/jsdom": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", + "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.0.5", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.4.4", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "packages/idom-client-react/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "packages/idom-client-react/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "packages/idom-client-react/node_modules/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" + } } }, "dependencies": { @@ -5549,8 +5582,7 @@ "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, "abbrev": { "version": "1.1.1", @@ -5561,14 +5593,12 @@ "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, "requires": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -5577,8 +5607,7 @@ "acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, "address": { "version": "1.1.2", @@ -5654,7 +5683,6 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5713,7 +5741,6 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -5731,26 +5758,22 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "balanced-match": { "version": "1.0.2", @@ -5762,7 +5785,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -5826,14 +5848,13 @@ "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "bufferutil": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "dev": true, + "devOptional": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -5923,8 +5944,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "2.4.2", @@ -6054,7 +6074,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -6095,8 +6114,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "7.0.1", @@ -6150,14 +6168,12 @@ "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" }, "cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, "requires": { "cssom": "~0.3.6" }, @@ -6165,8 +6181,7 @@ "cssom": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" } } }, @@ -6174,7 +6189,6 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -6183,7 +6197,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, "requires": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -6208,8 +6221,7 @@ "decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, "decompress-response": { "version": "6.0.0", @@ -6231,8 +6243,7 @@ "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "deepmerge": { "version": "4.2.2", @@ -6264,8 +6275,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", @@ -6282,8 +6292,7 @@ "dequal": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", - "dev": true + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" }, "detect-port": { "version": "1.3.0", @@ -6308,8 +6317,7 @@ "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, "dom-serializer": { "version": "1.3.2", @@ -6332,7 +6340,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, "requires": { "webidl-conversions": "^5.0.0" }, @@ -6340,8 +6347,7 @@ "webidl-conversions": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" } } }, @@ -6369,7 +6375,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -6455,7 +6460,6 @@ "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dev": true, "requires": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -6468,7 +6472,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "optional": true } } @@ -6512,14 +6515,12 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "estree-walker": { "version": "2.0.2", @@ -6530,8 +6531,7 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -6565,20 +6565,17 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-patch": { "version": "3.1.0" @@ -6586,14 +6583,12 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, "fdir": { "version": "5.1.0", @@ -6634,14 +6629,12 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -6726,7 +6719,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -6782,14 +6774,12 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, "requires": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -6832,7 +6822,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, "requires": { "whatwg-encoding": "^1.0.5" } @@ -6887,7 +6876,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -6956,7 +6944,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -6983,7 +6970,15 @@ }, "dependencies": { "idom-client-react": { - "version": "file:packages/idom-app-react/packages/idom-client-react" + "version": "file:packages/idom-app-react/packages/idom-client-react", + "requires": { + "fast-json-patch": "^3.0.0-1", + "htm": "^3.0.3", + "jsdom": "16.3.0", + "lodash": "^4.17.21", + "prettier": "^2.5.1", + "uvu": "^0.5.1" + } } } }, @@ -6992,10 +6987,95 @@ "requires": { "fast-json-patch": "^3.0.0-1", "htm": "^3.0.3", - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" + }, + "dependencies": { + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "jsdom": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", + "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.0.5", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.4.4", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.1.2" + } + } } }, "ignore-walk": { @@ -7068,8 +7148,7 @@ "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, "is-arrayish": { "version": "0.2.1", @@ -7150,8 +7229,7 @@ "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "is-reference": { "version": "1.2.1", @@ -7171,8 +7249,7 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, "is-valid-identifier": { "version": "2.0.2", @@ -7213,8 +7290,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-tokens": { "version": "4.0.0" @@ -7222,14 +7298,12 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { "version": "16.3.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.3.0.tgz", "integrity": "sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==", - "dev": true, "requires": { "abab": "^2.0.3", "acorn": "^7.1.1", @@ -7274,14 +7348,12 @@ "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-stringify-nice": { "version": "1.1.4", @@ -7292,8 +7364,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "jsonparse": { "version": "1.3.1", @@ -7311,7 +7382,6 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -7343,14 +7413,12 @@ "kleur": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "dev": true + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -7380,8 +7448,7 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.camelcase": { "version": "4.3.0", @@ -7476,14 +7543,12 @@ "mime-db": { "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" }, "mime-types": { "version": "2.1.30", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, "requires": { "mime-db": "1.47.0" } @@ -7606,8 +7671,7 @@ "mri": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", - "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", - "dev": true + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" }, "ms": { "version": "2.0.0", @@ -7649,7 +7713,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "dev": true + "devOptional": true }, "nopt": { "version": "5.0.0", @@ -7784,14 +7848,12 @@ "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { "version": "4.1.1" @@ -7829,7 +7891,6 @@ "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -7969,8 +8030,7 @@ "parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "dev": true + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" }, "parse5-htmlparser2-tree-adapter": { "version": "6.0.1", @@ -8022,8 +8082,7 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "periscopic": { "version": "2.0.3", @@ -8186,14 +8245,12 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "prettier": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "dev": true + "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==" }, "proc-log": { "version": "1.0.0", @@ -8247,8 +8304,7 @@ "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, "pump": { "version": "3.0.0", @@ -8263,14 +8319,12 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "quick-lru": { "version": "5.1.1", @@ -8365,7 +8419,6 @@ "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -8393,7 +8446,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -8405,7 +8457,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, "requires": { "lodash": "^4.17.19" } @@ -8414,7 +8465,6 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, "requires": { "request-promise-core": "1.1.4", "stealthy-require": "^1.1.1", @@ -8425,7 +8475,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -8508,7 +8557,6 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/sade/-/sade-1.7.4.tgz", "integrity": "sha512-y5yauMD93rX840MwUJr7C1ysLFBgMspsdTo4UVrDg3fXDvtwOyIqykhVAAm6fk/3au77773itJStObgK+LKaiA==", - "dev": true, "requires": { "mri": "^1.1.0" } @@ -8516,20 +8564,17 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, "requires": { "xmlchars": "^2.2.0" } @@ -8730,7 +8775,6 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -8755,8 +8799,7 @@ "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, "string_decoder": { "version": "1.1.1", @@ -8842,8 +8885,7 @@ "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "tar": { "version": "6.1.11", @@ -8871,14 +8913,12 @@ "totalist": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz", - "integrity": "sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ==", - "dev": true + "integrity": "sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ==" }, "tough-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "dev": true, "requires": { "ip-regex": "^2.1.0", "psl": "^1.1.28", @@ -8889,7 +8929,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "dev": true, "requires": { "punycode": "^2.1.1" } @@ -8910,7 +8949,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -8918,14 +8956,12 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, "requires": { "prelude-ls": "~1.1.2" } @@ -8957,6 +8993,12 @@ "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "untildify": { "version": "2.1.0", "dev": true, @@ -8968,7 +9010,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -8977,7 +9018,7 @@ "version": "5.0.9", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "dev": true, + "devOptional": true, "requires": { "node-gyp-build": "^4.3.0" } @@ -9008,14 +9049,12 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "uvu": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.1.tgz", "integrity": "sha512-JGxttnOGDFs77FaZ0yMUHIzczzQ5R1IlDeNW6Wymw6gAscwMdAffVOP6TlxLIfReZyK8tahoGwWZaTCJzNFDkg==", - "dev": true, "requires": { "dequal": "^2.0.0", "diff": "^5.0.0", @@ -9037,7 +9076,6 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -9072,7 +9110,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, "requires": { "browser-process-hrtime": "^1.0.0" } @@ -9081,7 +9118,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, "requires": { "xml-name-validator": "^3.0.0" } @@ -9095,14 +9131,12 @@ "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" }, "whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, "requires": { "iconv-lite": "0.4.24" } @@ -9110,14 +9144,12 @@ "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, "whatwg-url": { "version": "8.5.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", - "dev": true, "requires": { "lodash": "^4.7.0", "tr46": "^2.0.2", @@ -9145,8 +9177,7 @@ "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrappy": { "version": "1.0.2", @@ -9170,20 +9201,17 @@ "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "dev": true, "requires": {} }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "yallist": { "version": "4.0.0", diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 179aa7347..3886c6b41 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -6,7 +6,7 @@ }, "description": "A client for IDOM implemented in React", "devDependencies": { - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" From f593ee3067cac004ca07e4c8378f87f8c45341f3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Aug 2022 11:33:53 -0700 Subject: [PATCH 090/253] Bump got from 11.8.3 to 11.8.5 in /src/client (#772) Bumps [got](https://github.com/sindresorhus/got) from 11.8.3 to 11.8.5. - [Release notes](https://github.com/sindresorhus/got/releases) - [Commits](https://github.com/sindresorhus/got/compare/v11.8.3...v11.8.5) --- updated-dependencies: - dependency-name: got dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ryan Morshead --- src/client/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 5402a614b..4705fe177 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1932,9 +1932,9 @@ } }, "node_modules/got": { - "version": "11.8.3", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", - "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", "dev": true, "dependencies": { "@sindresorhus/is": "^4.0.0", @@ -6747,9 +6747,9 @@ } }, "got": { - "version": "11.8.3", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", - "integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", + "version": "11.8.5", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", + "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", "dev": true, "requires": { "@sindresorhus/is": "^4.0.0", From 2f0bb98424dbf7ae0f63afd20b35b2fdd2d2cc07 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sat, 13 Aug 2022 14:06:15 -0700 Subject: [PATCH 091/253] Fix: Accidental mutation of old model causes invalid JSON Patch (#802) * fix #801 accidental mutation of old parent model caused invalid JSON patches * add build_py to cmdclass distutils has also been deprecated --- docs/source/about/changelog.rst | 1 + noxfile.py | 9 +- requirements/pkg-extras.txt | 2 +- setup.py | 24 +- src/idom/core/layout.py | 15 +- tests/test_client.py | 6 +- tests/test_core/test_hooks.py | 54 ++-- tests/test_core/test_layout.py | 294 ++++++++---------- .../{test_dispatcher.py => test_serve.py} | 0 tests/tooling/loop.py | 4 +- 10 files changed, 208 insertions(+), 201 deletions(-) rename tests/test_core/{test_dispatcher.py => test_serve.py} (100%) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 9e4ce9b9c..a83b0cc29 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -27,6 +27,7 @@ Unreleased - :issue:`789` - Conditionally rendered components cannot use contexts - :issue:`773` - Use strict equality check for text, numeric, and binary types in hooks +- :issue:`801` - Accidental mutation of old model causes invalid JSON Patch **Changed** diff --git a/noxfile.py b/noxfile.py index a3588e164..ac9fcf08f 100644 --- a/noxfile.py +++ b/noxfile.py @@ -98,7 +98,7 @@ def example(session: Session) -> None: def docs(session: Session) -> None: """Build and display documentation in the browser (automatically reloads on change)""" install_requirements_file(session, "build-docs") - install_idom_dev(session, extras="all") + install_idom_dev(session) session.run( "python", "scripts/live_docs.py", @@ -188,7 +188,7 @@ def test_python_suite(session: Session) -> None: session.install(".[all]") else: posargs += ["--cov=src/idom", "--cov-report", "term"] - install_idom_dev(session, extras="all") + install_idom_dev(session) session.run("pytest", *posargs) @@ -234,7 +234,7 @@ def test_python_build(session: Session) -> None: def test_docs(session: Session) -> None: """Verify that the docs build and that doctests pass""" install_requirements_file(session, "build-docs") - install_idom_dev(session, extras="all") + install_idom_dev(session) session.run( "sphinx-build", "-a", # re-write all output files @@ -370,7 +370,8 @@ def install_requirements_file(session: Session, name: str) -> None: session.install("-r", str(file_path)) -def install_idom_dev(session: Session, extras: str = "stable") -> None: +def install_idom_dev(session: Session, extras: str = "all") -> None: + session.run("pip", "--version") if "--no-install" not in session.posargs: session.install("-e", f".[{extras}]") else: diff --git a/requirements/pkg-extras.txt b/requirements/pkg-extras.txt index e7257ccd8..2b2079706 100644 --- a/requirements/pkg-extras.txt +++ b/requirements/pkg-extras.txt @@ -12,7 +12,7 @@ uvicorn[standard] >=0.13.4 # extra=flask flask -markupsafe<2.1 +markupsafe>=1.1.1,<2.1 flask-cors flask-sock diff --git a/setup.py b/setup.py index f89c04e07..ba3b0e453 100644 --- a/setup.py +++ b/setup.py @@ -5,13 +5,12 @@ import subprocess import sys import traceback -from distutils import log -from distutils.command.build import build # type: ignore -from distutils.command.sdist import sdist # type: ignore +from logging import StreamHandler, getLogger from pathlib import Path from setuptools import find_packages, setup from setuptools.command.develop import develop +from setuptools.command.sdist import sdist if sys.platform == "win32": @@ -22,6 +21,15 @@ def list2cmdline(cmd_list): return " ".join(map(pipes.quote, cmd_list)) +log = getLogger() +log.addHandler(StreamHandler(sys.stdout)) + + +# ----------------------------------------------------------------------------- +# Basic Constants +# ----------------------------------------------------------------------------- + + # the name of the project NAME = "idom" @@ -167,10 +175,18 @@ def run(self): package["cmdclass"] = { "sdist": build_javascript_first(sdist), - "build": build_javascript_first(build), "develop": build_javascript_first(develop), } +if sys.version_info < (3, 10, 6): + from distutils.command.build import build + + package["cmdclass"]["build"] = build_javascript_first(build) +else: + from setuptools.command.build_py import build_py + + package["cmdclass"]["build_py"] = build_javascript_first(build_py) + # ----------------------------------------------------------------------------- # Install It diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index a02be353e..d257b3995 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -230,10 +230,17 @@ def _render_component( else: key, index = new_state.key, new_state.index parent.children_by_key[key] = new_state - # need to do insertion in case where old_state is None and we're appending - parent.model.current["children"][index : index + 1] = [ - new_state.model.current - ] + # need to add this model to parent's children without mutating parent model + old_parent_model = parent.model.current + old_parent_children = old_parent_model["children"] + parent.model.current = { + **old_parent_model, + "children": [ + *old_parent_children[:index], + new_state.model.current, + *old_parent_children[index + 1 :], + ], + } finally: # avoid double render self._rendering_queue.remove_if_pending(life_cycle_state.id) diff --git a/tests/test_client.py b/tests/test_client.py index 86b5a61a7..ff7d826e2 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -5,6 +5,7 @@ from playwright.async_api import Browser import idom +from idom.backend.utils import find_available_port from idom.testing import BackendFixture, DisplayFixture @@ -12,6 +13,7 @@ async def test_automatic_reconnect(browser: Browser): + port = find_available_port("localhost") page = await browser.new_page() # we need to wait longer here because the automatic reconnect is not instant @@ -22,7 +24,7 @@ def OldComponent(): return idom.html.p({"id": "old-component"}, "old") async with AsyncExitStack() as exit_stack: - server = await exit_stack.enter_async_context(BackendFixture(port=8000)) + server = await exit_stack.enter_async_context(BackendFixture(port=port)) display = await exit_stack.enter_async_context( DisplayFixture(server, driver=page) ) @@ -43,7 +45,7 @@ def NewComponent(): return idom.html.p({"id": f"new-component-{state}"}, f"new-{state}") async with AsyncExitStack() as exit_stack: - server = await exit_stack.enter_async_context(BackendFixture(port=8000)) + server = await exit_stack.enter_async_context(BackendFixture(port=port)) display = await exit_stack.enter_async_context( DisplayFixture(server, driver=page) ) diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index 9c3d8c2f3..e0bcba2e7 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -11,12 +11,10 @@ current_hook, strictly_equal, ) -from idom.core.layout import Layout -from idom.core.serve import render_json_patch +from idom.core.layout import Layout, LayoutUpdate from idom.testing import DisplayFixture, HookCatcher, assert_idom_did_log, poll from idom.testing.logs import assert_idom_did_not_log from idom.utils import Ref -from tests.tooling.asserts import assert_same_items async def test_must_be_rendering_in_layout_to_use_hooks(): @@ -42,31 +40,35 @@ def SimpleStatefulComponent(): sse = SimpleStatefulComponent() async with idom.Layout(sse) as layout: - patch_1 = await render_json_patch(layout) - assert patch_1.path == "" - assert_same_items( - patch_1.changes, - [ - {"op": "add", "path": "/tagName", "value": ""}, - { - "op": "add", - "path": "/children", - "value": [{"children": ["0"], "tagName": "div"}], - }, - ], + update_1 = await layout.render() + assert update_1 == LayoutUpdate( + path="", + old=None, + new={ + "tagName": "", + "children": [{"tagName": "div", "children": ["0"]}], + }, ) - patch_2 = await render_json_patch(layout) - assert patch_2.path == "" - assert patch_2.changes == [ - {"op": "replace", "path": "/children/0/children/0", "value": "1"} - ] - - patch_3 = await render_json_patch(layout) - assert patch_3.path == "" - assert patch_3.changes == [ - {"op": "replace", "path": "/children/0/children/0", "value": "2"} - ] + update_2 = await layout.render() + assert update_2 == LayoutUpdate( + path="", + old=update_1.new, + new={ + "tagName": "", + "children": [{"tagName": "div", "children": ["1"]}], + }, + ) + + update_3 = await layout.render() + assert update_3 == LayoutUpdate( + path="", + old=update_2.new, + new={ + "tagName": "", + "children": [{"tagName": "div", "children": ["2"]}], + }, + ) async def test_set_state_callback_identity_is_preserved(): diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index ce419c0e4..4349faabc 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -12,8 +12,7 @@ from idom.config import IDOM_DEBUG_MODE from idom.core.component import component from idom.core.hooks import use_effect, use_state -from idom.core.layout import Layout, LayoutEvent -from idom.core.serve import render_json_patch +from idom.core.layout import Layout, LayoutEvent, LayoutUpdate from idom.testing import ( HookCatcher, StaticEventHandler, @@ -69,7 +68,7 @@ def Component(): async def test_simple_layout(): - set_state_hook = idom.Ref(None) + set_state_hook = idom.Ref() @idom.component def SimpleComponent(): @@ -77,24 +76,21 @@ def SimpleComponent(): return idom.vdom(tag) async with idom.Layout(SimpleComponent()) as layout: - path, changes = await render_json_patch(layout) - - assert path == "" - assert_same_items( - changes, - [ - {"op": "add", "path": "/children", "value": [{"tagName": "div"}]}, - {"op": "add", "path": "/tagName", "value": ""}, - ], + update_1 = await layout.render() + assert update_1 == LayoutUpdate( + path="", + old=None, + new={"tagName": "", "children": [{"tagName": "div"}]}, ) set_state_hook.current("table") - path, changes = await render_json_patch(layout) - assert path == "" - assert changes == [ - {"op": "replace", "path": "/children/0/tagName", "value": "table"} - ] + update_2 = await layout.render() + assert update_2 == LayoutUpdate( + path="", + old=update_1.new, + new={"tagName": "", "children": [{"tagName": "table"}]}, + ) async def test_component_can_return_none(): @@ -113,55 +109,55 @@ async def test_nested_component_layout(): @idom.component def Parent(): state, parent_set_state.current = idom.hooks.use_state(0) - return idom.html.div(state, Child(key="c")) + return idom.html.div(state, Child()) @idom.component def Child(): state, child_set_state.current = idom.hooks.use_state(0) return idom.html.div(state) - async with idom.Layout(Parent(key="p")) as layout: - path, changes = await render_json_patch(layout) - - assert path == "" - assert_same_items( - changes, - [ + def make_parent_model(state, model): + return { + "tagName": "", + "children": [ { - "op": "add", - "path": "/children", - "value": [ - { - "children": [ - "0", - { - "children": [{"children": ["0"], "tagName": "div"}], - "tagName": "", - }, - ], - "tagName": "div", - } - ], - }, - {"op": "add", "path": "/tagName", "value": ""}, + "tagName": "div", + "children": [str(state), model], + } ], + } + + def make_child_model(state): + return { + "tagName": "", + "children": [{"tagName": "div", "children": [str(state)]}], + } + + async with idom.Layout(Parent()) as layout: + update_1 = await layout.render() + assert update_1 == LayoutUpdate( + path="", + old=None, + new=make_parent_model(0, make_child_model(0)), ) parent_set_state.current(1) - path, changes = await render_json_patch(layout) - assert path == "" - assert changes == [ - {"op": "replace", "path": "/children/0/children/0", "value": "1"} - ] + update_2 = await layout.render() + assert update_2 == LayoutUpdate( + path="", + old=update_1.new, + new=make_parent_model(1, make_child_model(0)), + ) child_set_state.current(1) - path, changes = await render_json_patch(layout) - assert path == "/children/0/children/1" - assert changes == [ - {"op": "replace", "path": "/children/0/children/0", "value": "1"} - ] + update_3 = await layout.render() + assert update_3 == LayoutUpdate( + path="/children/0/children/1", + old=update_2.new["children"][0]["children"][1], + new=make_child_model(1), + ) @pytest.mark.skipif( @@ -184,39 +180,35 @@ def BadChild(): with assert_idom_did_log(match_error="error from bad child"): async with idom.Layout(Main()) as layout: - patch = await render_json_patch(layout) - assert_same_items( - patch.changes, - [ - { - "op": "add", - "path": "/children", - "value": [ - { - "tagName": "div", - "children": [ - { - "tagName": "", - "children": [ - {"tagName": "div", "children": ["hello"]} - ], - }, - { - "tagName": "", - "error": "ValueError: error from bad child", - }, - { - "tagName": "", - "children": [ - {"tagName": "div", "children": ["hello"]} - ], - }, - ], - } - ], - }, - {"op": "add", "path": "/tagName", "value": ""}, - ], + assert (await layout.render()) == LayoutUpdate( + path="", + old=None, + new={ + "tagName": "", + "children": [ + { + "tagName": "div", + "children": [ + { + "tagName": "", + "children": [ + {"tagName": "div", "children": ["hello"]} + ], + }, + { + "tagName": "", + "error": "ValueError: error from bad child", + }, + { + "tagName": "", + "children": [ + {"tagName": "div", "children": ["hello"]} + ], + }, + ], + } + ], + }, ) @@ -240,36 +232,32 @@ def BadChild(): with assert_idom_did_log(match_error="error from bad child"): async with idom.Layout(Main()) as layout: - patch = await render_json_patch(layout) - assert_same_items( - patch.changes, - [ - { - "op": "add", - "path": "/children", - "value": [ - { - "children": [ - { - "children": [ - {"children": ["hello"], "tagName": "div"} - ], - "tagName": "", - }, - {"error": "", "tagName": ""}, - { - "children": [ - {"children": ["hello"], "tagName": "div"} - ], - "tagName": "", - }, - ], - "tagName": "div", - } - ], - }, - {"op": "add", "path": "/tagName", "value": ""}, - ], + assert (await layout.render()) == LayoutUpdate( + path="", + old=None, + new={ + "tagName": "", + "children": [ + { + "children": [ + { + "children": [ + {"children": ["hello"], "tagName": "div"} + ], + "tagName": "", + }, + {"error": "", "tagName": ""}, + { + "children": [ + {"children": ["hello"], "tagName": "div"} + ], + "tagName": "", + }, + ], + "tagName": "div", + } + ], + }, ) @@ -283,32 +271,28 @@ def Child(): return {"tagName": "div", "children": {"tagName": "h1"}} async with idom.Layout(Main()) as layout: - patch = await render_json_patch(layout) - assert_same_items( - patch.changes, - [ - { - "op": "add", - "path": "/children", - "value": [ - { - "children": [ - { - "children": [ - { - "children": [{"tagName": "h1"}], - "tagName": "div", - } - ], - "tagName": "", - } - ], - "tagName": "div", - } - ], - }, - {"op": "add", "path": "/tagName", "value": ""}, - ], + assert (await layout.render()) == LayoutUpdate( + path="", + old=None, + new={ + "tagName": "", + "children": [ + { + "children": [ + { + "children": [ + { + "children": [{"tagName": "h1"}], + "tagName": "div", + } + ], + "tagName": "", + } + ], + "tagName": "div", + } + ], + }, ) @@ -493,7 +477,7 @@ def Child(): hook.latest.schedule_render() - update = await render_json_patch(layout) + update = await layout.render() assert update.path == "/children/0/children/0/children/0" @@ -620,22 +604,18 @@ def Inner(): return idom.html.div("hello") async with idom.Layout(Outer()) as layout: - update = await render_json_patch(layout) - assert_same_items( - update.changes, - [ - { - "op": "add", - "path": "/children", - "value": [ - { - "children": [{"children": ["hello"], "tagName": "div"}], - "tagName": "", - } - ], - }, - {"op": "add", "path": "/tagName", "value": ""}, - ], + assert (await layout.render()) == LayoutUpdate( + path="", + old=None, + new={ + "tagName": "", + "children": [ + { + "children": [{"children": ["hello"], "tagName": "div"}], + "tagName": "", + } + ], + }, ) diff --git a/tests/test_core/test_dispatcher.py b/tests/test_core/test_serve.py similarity index 100% rename from tests/test_core/test_dispatcher.py rename to tests/test_core/test_serve.py diff --git a/tests/tooling/loop.py b/tests/tooling/loop.py index 043908694..6169f5176 100644 --- a/tests/tooling/loop.py +++ b/tests/tooling/loop.py @@ -69,9 +69,7 @@ def one_task_finished(future): if is_current: loop.run_until_complete( - wait_for( - asyncio.gather(*to_cancel, loop=loop, return_exceptions=True), TIMEOUT - ) + wait_for(asyncio.gather(*to_cancel, return_exceptions=True), TIMEOUT) ) else: # user was responsible for cancelling all tasks From b06977a10213998642c0561f29d727b6b1a694c8 Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Sat, 13 Aug 2022 20:41:59 -0700 Subject: [PATCH 092/253] Use LXML for html_to_vdom (#795) Co-authored-by: Ryan Morshead --- docs/source/about/changelog.rst | 2 + requirements/pkg-deps.txt | 1 + src/idom/backend/utils.py | 2 +- src/idom/utils.py | 242 +++++++++++++++++++++----------- src/idom/widgets.py | 2 +- tests/test_utils.py | 73 ++++++++-- 6 files changed, 228 insertions(+), 94 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index a83b0cc29..8a8c5f614 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -25,6 +25,7 @@ Unreleased **Fixed** +- :issue:`777` - Fix edge cases where ``html_to_vdom`` can fail to convert HTML - :issue:`789` - Conditionally rendered components cannot use contexts - :issue:`773` - Use strict equality check for text, numeric, and binary types in hooks - :issue:`801` - Accidental mutation of old model causes invalid JSON Patch @@ -38,6 +39,7 @@ Unreleased **Added** - :pull:`123` - ``asgiref`` as a dependency +- :pull:`795` - ``lxml`` as a dependency v0.39.0 diff --git a/requirements/pkg-deps.txt b/requirements/pkg-deps.txt index f13b33bf9..5e4835f12 100644 --- a/requirements/pkg-deps.txt +++ b/requirements/pkg-deps.txt @@ -6,3 +6,4 @@ fastjsonschema >=2.14.5 requests >=2 colorlog >=6 asgiref >=3 +lxml >= 4 diff --git a/src/idom/backend/utils.py b/src/idom/backend/utils.py index b891ec793..35e4e75dd 100644 --- a/src/idom/backend/utils.py +++ b/src/idom/backend/utils.py @@ -35,7 +35,7 @@ def run( implementation: BackendImplementation[Any] | None = None, ) -> None: """Run a component with a development server""" - logger.warn( + logger.warning( "You are running a development server. " "Change this before deploying in production!" ) diff --git a/src/idom/utils.py b/src/idom/utils.py index e8f9cfd01..ec114b2c3 100644 --- a/src/idom/utils.py +++ b/src/idom/utils.py @@ -1,8 +1,15 @@ -from html.parser import HTMLParser as _HTMLParser -from typing import Any, Callable, Dict, Generic, List, Optional, Tuple, TypeVar +from itertools import chain +from typing import Any, Callable, Generic, Iterable, List, TypeVar, Union + +from lxml import etree +from lxml.html import fragments_fromstring + +import idom +from idom.core.types import VdomDict _RefValue = TypeVar("_RefValue") +_ModelTransform = Callable[[VdomDict], Any] _UNDEFINED: Any = object() @@ -49,11 +56,9 @@ def __repr__(self) -> str: return f"{type(self).__name__}({current})" -_ModelTransform = Callable[[Dict[str, Any]], Any] - - -def html_to_vdom(source: str, *transforms: _ModelTransform) -> Dict[str, Any]: - """Transform HTML into a DOM model +def html_to_vdom(html: str, *transforms: _ModelTransform, strict: bool = True) -> VdomDict: + """Transform HTML into a DOM model. Unique keys can be provided to HTML elements + using a ``key=...`` attribute within your HTML tag. Parameters: source: @@ -62,81 +67,154 @@ def html_to_vdom(source: str, *transforms: _ModelTransform) -> Dict[str, Any]: Functions of the form ``transform(old) -> new`` where ``old`` is a VDOM dictionary which will be replaced by ``new``. For example, you could use a transform function to add highlighting to a ```` block. + strict: + If ``True``, raise an exception if the HTML does not perfectly follow HTML5 + syntax. """ - parser = HtmlParser() - parser.feed(source) - root = parser.model() - to_visit = [root] - while to_visit: - node = to_visit.pop(0) - if isinstance(node, dict) and "children" in node: - transformed = [] - for child in node["children"]: - if isinstance(child, dict): - for t in transforms: - child = t(child) - if child is not None: - transformed.append(child) - to_visit.append(child) - node["children"] = transformed - if "attributes" in node and not node["attributes"]: - del node["attributes"] - if "children" in node and not node["children"]: - del node["children"] - return root - - -class HtmlParser(_HTMLParser): - """HTML to VDOM parser - - Example: - - .. code-block:: - - parser = HtmlParser() - - parser.feed(an_html_string) - parser.feed(another_html_string) - ... - - vdom = parser.model() + if not isinstance(html, str): # pragma: no cover + raise TypeError(f"Expected html to be a string, not {type(html).__name__}") + + # If the user provided a string, convert it to a list of lxml.etree nodes + parser = etree.HTMLParser( + remove_comments=True, + remove_pis=True, + remove_blank_text=True, + recover=not strict, + ) + try: + nodes: List = fragments_fromstring(html, no_leading_text=True, parser=parser) + except etree.XMLSyntaxError as e: + if not strict: + raise e # pragma: no cover + raise HTMLParseError( + "An error has occurred while parsing the HTML.\n\n" + "This HTML may be malformatted, or may not perfectly adhere to HTML5.\n" + "If you believe the exception above was due to something intentional, " + "you can disable the strict parameter on html_to_vdom().\n" + "Otherwise, repair your broken HTML and try again." + ) from e + has_root_node = len(nodes) == 1 + + # Find or create a root node + if has_root_node: + root_node = nodes[0] + else: + # etree.Element requires a non-empty tag - we correct this below + root_node = etree.Element("TEMP", None, None) + for child in nodes: + root_node.append(child) + + # Convert the lxml node to a VDOM dict + vdom = _etree_to_vdom(root_node, transforms) + + # Change the artificially created root node to a React Fragment, instead of a div + if not has_root_node: + vdom["tagName"] = "" + + return vdom + + +def _etree_to_vdom( + node: etree._Element, transforms: Iterable[_ModelTransform] +) -> VdomDict: + """Recusively transform an lxml etree node into a DOM model + + Parameters: + source: + The ``lxml.etree._Element`` node + transforms: + Functions of the form ``transform(old) -> new`` where ``old`` is a VDOM + dictionary which will be replaced by ``new``. For example, you could use a + transform function to add highlighting to a ```` block. """ + if not isinstance(node, etree._Element): # pragma: no cover + raise TypeError( + f"Expected node to be a etree._Element, not {type(node).__name__}" + ) - def model(self) -> Dict[str, Any]: - """Get the current state of parsed VDOM model""" - return self._node_stack[0] - - def feed(self, data: str) -> None: - """Feed in HTML that will update the :meth:`HtmlParser.model`""" - self._node_stack.append(self._make_vdom("div", {})) - super().feed(data) - - def reset(self) -> None: - """Reset the state of the parser""" - self._node_stack: List[Dict[str, Any]] = [] - super().reset() - - def handle_starttag(self, tag: str, attrs: List[Tuple[str, Optional[str]]]) -> None: - new = self._make_vdom(tag, dict(attrs)) - current = self._node_stack[-1] - current["children"].append(new) - self._node_stack.append(new) - - def handle_endtag(self, tag: str) -> None: - del self._node_stack[-1] - - def handle_data(self, data: str) -> None: - self._node_stack[-1]["children"].append(data) - - @staticmethod - def _make_vdom(tag: str, attrs: Dict[str, Any]) -> Dict[str, Any]: - if "style" in attrs: - style = attrs["style"] - if isinstance(style, str): - style_dict = {} - for k, v in (part.split(":", 1) for part in style.split(";") if part): - title_case_key = k.title().replace("-", "") - camel_case_key = title_case_key[:1].lower() + title_case_key[1:] - style_dict[camel_case_key] = v - attrs["style"] = style_dict - return {"tagName": tag, "attributes": attrs, "children": []} + # This will recursively call _etree_to_vdom() on all children + children = _generate_vdom_children(node, transforms) + + # Convert the lxml node to a VDOM dict + attributes = dict(node.items()) + key = attributes.pop("key", None) + + if hasattr(idom.html, node.tag): + vdom = getattr(idom.html, node.tag)(attributes, *children, key=key) + else: + vdom: VdomDict = {"tagName": node.tag} + if children: + vdom["children"] = children + if attributes: + vdom["attributes"] = attributes + if key is not None: + vdom["key"] = key + + # Perform any necessary mutations on the VDOM attributes to meet VDOM spec + _mutate_vdom(vdom) + + # Apply any provided transforms. + for transform in transforms: + vdom = transform(vdom) + + return vdom + + +def _mutate_vdom(vdom: VdomDict): + """Performs any necessary mutations on the VDOM attributes to meet VDOM spec. + + Currently, this function only transforms the ``style`` attribute into a dictionary whose keys are + camelCase so as to be renderable by React. + + This function may be extended in the future. + """ + # Determine if the style attribute needs to be converted to a dict + if ( + "attributes" in vdom + and "style" in vdom["attributes"] + and isinstance(vdom["attributes"]["style"], str) + ): + # Convince type checker that it's safe to mutate attributes + assert isinstance(vdom["attributes"], dict) + + # Convert style attribute from str -> dict with camelCase keys + vdom["attributes"]["style"] = { + _hypen_to_camel_case(key.strip()): value.strip() + for key, value in ( + part.split(":", 1) + for part in vdom["attributes"]["style"].split(";") + if ":" in part + ) + } + + +def _generate_vdom_children( + node: etree._Element, transforms: Iterable[_ModelTransform] +) -> List[Union[VdomDict, str]]: + """Generates a list of VDOM children from an lxml node. + + Inserts inner text and/or tail text inbetween VDOM children, if necessary. + """ + return ( # Get the inner text of the current node + [node.text] if node.text else [] + ) + list( + chain( + *( + # Recursively convert each child node to VDOM + [_etree_to_vdom(child, transforms)] + # Insert the tail text between each child node + + ([child.tail] if child.tail else []) + for child in node.iterchildren(None) + ) + ) + ) + + +def _hypen_to_camel_case(string: str) -> str: + """Convert a hypenated string to camelCase.""" + first, _, remainder = string.partition("-") + return first.lower() + remainder.title().replace("-", "") + + +class HTMLParseError(etree.LxmlSyntaxError): + """Raised when an HTML document cannot be parsed using strict parsing.""" diff --git a/src/idom/widgets.py b/src/idom/widgets.py index a089b9d21..b66e89348 100644 --- a/src/idom/widgets.py +++ b/src/idom/widgets.py @@ -80,7 +80,7 @@ def use_linked_inputs( value, set_value = idom.hooks.use_state(initial_value) def sync_inputs(event: Dict[str, Any]) -> None: - new_value = event["value"] + new_value = event["target"]["value"] set_value(new_value) if not new_value and ignore_empty: return None diff --git a/tests/test_utils.py b/tests/test_utils.py index cca97a0ac..861fc315d 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,7 +1,7 @@ import pytest import idom -from idom.utils import html_to_vdom +from idom.utils import HTMLParseError, html_to_vdom def test_basic_ref_behavior(): @@ -60,18 +60,15 @@ def test_ref_repr(): ], ) def test_html_to_vdom(case): - assert html_to_vdom(case["source"]) == { - "tagName": "div", - "children": [case["model"]], - } + assert html_to_vdom(case["source"]) == case["model"] def test_html_to_vdom_transform(): - source = "

hello world and universe

" + source = "

hello world and universelmao

" def make_links_blue(node): if node["tagName"] == "a": - node["attributes"]["style"] = {"color": "blue"} + node["attributes"] = {"style": {"color": "blue"}} return node expected = { @@ -89,10 +86,66 @@ def make_links_blue(node): "children": ["universe"], "attributes": {"style": {"color": "blue"}}, }, + "lmao", + ], + } + + assert html_to_vdom(source, make_links_blue) == expected + + +def test_non_html_tag_behavior(): + source = "" + + expected = { + "tagName": "my-tag", + "attributes": {"data-x": "something"}, + "children": [ + {"tagName": "my-other-tag", "key": "a-key"}, ], } - assert html_to_vdom(source, make_links_blue) == { - "tagName": "div", - "children": [expected], + assert html_to_vdom(source, strict=False) == expected + + with pytest.raises(HTMLParseError): + html_to_vdom(source, strict=True) + + +def test_html_to_vdom_with_null_tag(): + source = "

hello
world

" + + expected = { + "tagName": "p", + "children": [ + "hello", + {"tagName": "br"}, + "world", + ], } + + assert html_to_vdom(source) == expected + + +def test_html_to_vdom_with_style_attr(): + source = '

Hello World.

' + + expected = { + "attributes": {"style": {"backgroundColor": "green", "color": "red"}}, + "children": ["Hello World."], + "tagName": "p", + } + + assert html_to_vdom(source) == expected + + +def test_html_to_vdom_with_no_parent_node(): + source = "

Hello

World
" + + expected = { + "tagName": "", + "children": [ + {"tagName": "p", "children": ["Hello"]}, + {"tagName": "div", "children": ["World"]}, + ], + } + + assert html_to_vdom(source) == expected From 842389f9886a25a7e121fc1abab9a9f6f0dd9aeb Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sat, 13 Aug 2022 20:45:51 -0700 Subject: [PATCH 093/253] version 0.40.0 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 4ef2eb086..9b0025a78 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.39.0 +0.40.0 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 8a8c5f614..23462ab45 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.40.0 +------- +:octicon:`milestone` *released on 2022-08-13* + **Fixed** - :issue:`777` - Fix edge cases where ``html_to_vdom`` can fail to convert HTML diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 4705fe177..1871e2f6c 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.39.0", + "version": "0.40.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.39.0", + "version": "0.40.0", "license": "MIT", "workspaces": [ "./packages/*" @@ -5065,7 +5065,7 @@ } }, "packages/idom-app-react": { - "version": "0.39.0", + "version": "0.40.0", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5091,7 +5091,7 @@ } }, "packages/idom-client-react": { - "version": "0.39.0", + "version": "0.40.0", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index a81d10f18..d9f71c365 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.39.0", + "version": "0.40.0", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 83973e74a..2218572b2 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.39.0" + "version": "0.40.0" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 3886c6b41..5f6516708 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.39.0" + "version": "0.40.0" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index e7994185d..f9466a8bb 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.39.0" # DO NOT MODIFY +__version__ = "0.40.0" # DO NOT MODIFY __all__ = [ "component", From a1ebebd40b81a3429e66bf14ed329d61226c343e Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Fri, 2 Sep 2022 16:04:03 -0700 Subject: [PATCH 094/253] Remove old "missing react hooks" note (#805) --- docs/source/reference/hooks-api.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/source/reference/hooks-api.rst b/docs/source/reference/hooks-api.rst index 286508a6c..f9e9340c1 100644 --- a/docs/source/reference/hooks-api.rst +++ b/docs/source/reference/hooks-api.rst @@ -7,12 +7,6 @@ Components. Their usage should always follow the :ref:`Rules of Hooks`. For most cases the :ref:`Basic Hooks` should be enough, however the remaining :ref:`Supplementary Hooks` should fulfill less common scenarios. -.. note:: - - Not all of React's built-in hooks have been implemented. - `In the future `_ they will be - added, but if you have a particular need for a missing hook post an issue. - Basic Hooks =========== From d682407d70ce0464ca25e71b1942fe89331b17cc Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 11 Sep 2022 21:35:22 -0700 Subject: [PATCH 095/253] fix append to stale children ref (#807) --- docs/source/about/changelog.rst | 8 ++++--- src/idom/core/layout.py | 15 ++++++++----- tests/test_core/test_layout.py | 40 +++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 23462ab45..a54e4de40 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,11 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Fixed** +- :issue:`806` - child models after a component fail to render -v0.40.0 -------- + +v0.40.0 (yanked) +---------------- :octicon:`milestone` *released on 2022-08-13* **Fixed** diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index d257b3995..a7d21b87c 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -361,7 +361,7 @@ def _render_model_children( [old_state.children_by_key[key] for key in old_keys] ) - new_children = new_state.model.current["children"] = [] + new_state.model.current["children"] = [] for index, (child, child_type, key) in enumerate(child_type_key_tuples): old_child_state = old_state.children_by_key.get(key) if child_type is _DICT_TYPE: @@ -388,7 +388,7 @@ def _render_model_children( index, ) self._render_model(exit_stack, old_child_state, new_child_state, child) - new_children.append(new_child_state.model.current) + new_state.append_child(new_child_state.model.current) new_state.children_by_key[key] = new_child_state elif child_type is _COMPONENT_TYPE: child = cast(ComponentType, child) @@ -428,7 +428,7 @@ def _render_model_children( old_child_state = old_state.children_by_key.get(key) if old_child_state is not None: self._unmount_model_states([old_child_state]) - new_children.append(child) + new_state.append_child(child) def _render_model_children_without_old_state( self, @@ -446,12 +446,12 @@ def _render_model_children_without_old_state( f"Duplicate keys {duplicate_keys} at {new_state.patch_path or '/'!r}" ) - new_children = new_state.model.current["children"] = [] + new_state.model.current["children"] = [] for index, (child, child_type, key) in enumerate(child_type_key_tuples): if child_type is _DICT_TYPE: child_state = _make_element_model_state(new_state, index, key) self._render_model(exit_stack, None, child_state, child) - new_children.append(child_state.model.current) + new_state.append_child(child_state.model.current) new_state.children_by_key[key] = child_state elif child_type is _COMPONENT_TYPE: child_state = _make_component_model_state( @@ -459,7 +459,7 @@ def _render_model_children_without_old_state( ) self._render_component(exit_stack, None, child_state, child) else: - new_children.append(child) + new_state.append_child(child) def _unmount_model_states(self, old_states: List[_ModelState]) -> None: to_unmount = old_states[::-1] # unmount in reversed order of rendering @@ -661,6 +661,9 @@ def parent(self) -> _ModelState: assert parent is not None, "detached model state" return parent + def append_child(self, child: Any) -> None: + self.model.current["children"].append(child) + def __repr__(self) -> str: # pragma: no cover return f"ModelState({ {s: getattr(self, s, None) for s in self.__slots__} })" diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 4349faabc..60d39e65e 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -1207,3 +1207,43 @@ def bad_should_render(new): await layout.render() root_hook.latest.schedule_render() await layout.render() + + +async def test_does_render_children_after_component(): + """Regression test for bug where layout was appending children to a stale ref + + The stale reference was created when a component got rendered. Thus, everything + after the component failed to display. + """ + + @idom.component + def Parent(): + return html.div( + html.p("first"), + Child(), + html.p("third"), + ) + + @idom.component + def Child(): + return html.p("second") + + async with idom.Layout(Parent()) as layout: + update = await layout.render() + print(update.new) + assert update.new == { + "tagName": "", + "children": [ + { + "tagName": "div", + "children": [ + {"tagName": "p", "children": ["first"]}, + { + "tagName": "", + "children": [{"tagName": "p", "children": ["second"]}], + }, + {"tagName": "p", "children": ["third"]}, + ], + } + ], + } From 824eeb506cd7e2c93475f76b3931d1d6d690af9d Mon Sep 17 00:00:00 2001 From: rmorshea Date: Sun, 11 Sep 2022 21:37:57 -0700 Subject: [PATCH 096/253] version 0.40.1 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 9b0025a78..d0a191543 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.40.0 +0.40.1 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index a54e4de40..d0f46a155 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.40.1 +------- +:octicon:`milestone` *released on 2022-09-11* + **Fixed** - :issue:`806` - child models after a component fail to render diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 1871e2f6c..a18eb4b05 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.40.0", + "version": "0.40.1", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.40.0", + "version": "0.40.1", "license": "MIT", "workspaces": [ "./packages/*" @@ -5065,7 +5065,7 @@ } }, "packages/idom-app-react": { - "version": "0.40.0", + "version": "0.40.1", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5091,7 +5091,7 @@ } }, "packages/idom-client-react": { - "version": "0.40.0", + "version": "0.40.1", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index d9f71c365..f4804e48b 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.40.0", + "version": "0.40.1", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 2218572b2..5177edd36 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.40.0" + "version": "0.40.1" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 5f6516708..52de83c7a 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.40.0" + "version": "0.40.1" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index f9466a8bb..c95e6bec2 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.40.0" # DO NOT MODIFY +__version__ = "0.40.1" # DO NOT MODIFY __all__ = [ "component", From 7caa4aba687928a85e61d8504b82889cf7dc1ab5 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 13 Sep 2022 01:37:43 -0700 Subject: [PATCH 097/253] bypass jsonpatch (#809) --- docs/source/about/changelog.rst | 6 ++-- src/idom/core/_fixed_jsonpatch.py | 56 ------------------------------- src/idom/core/serve.py | 4 +-- 3 files changed, 6 insertions(+), 60 deletions(-) delete mode 100644 src/idom/core/_fixed_jsonpatch.py diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index d0f46a155..f5b06fbe1 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,9 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Changed** + +- :pull:`809` - Avoid the use of JSON patch for diffing models. v0.40.1 @@ -32,7 +34,7 @@ v0.40.1 **Fixed** -- :issue:`806` - child models after a component fail to render +- :issue:`806` - Child models after a component fail to render v0.40.0 (yanked) diff --git a/src/idom/core/_fixed_jsonpatch.py b/src/idom/core/_fixed_jsonpatch.py deleted file mode 100644 index 702bc4dc6..000000000 --- a/src/idom/core/_fixed_jsonpatch.py +++ /dev/null @@ -1,56 +0,0 @@ -# type: ignore - -"""A patched version of jsonpatch - -We need this because of: https://github.com/stefankoegl/python-json-patch/issues/138 - -The core of this patch is in `DiffBuilder._item_removed`. The rest is just boilerplate -that's been copied over with little to no changes. -""" - -from jsonpatch import _ST_REMOVE -from jsonpatch import DiffBuilder as _DiffBuilder -from jsonpatch import JsonPatch as _JsonPatch -from jsonpatch import RemoveOperation, _path_join, basestring -from jsonpointer import JsonPointer - - -def apply_patch(doc, patch, in_place=False, pointer_cls=JsonPointer): - if isinstance(patch, basestring): - patch = JsonPatch.from_string(patch, pointer_cls=pointer_cls) - else: - patch = JsonPatch(patch, pointer_cls=pointer_cls) - return patch.apply(doc, in_place) - - -def make_patch(src, dst, pointer_cls=JsonPointer): - return JsonPatch.from_diff(src, dst, pointer_cls=pointer_cls) - - -class JsonPatch(_JsonPatch): - @classmethod - def from_diff( - cls, - src, - dst, - optimization=True, - dumps=None, - pointer_cls=JsonPointer, - ): - json_dumper = dumps or cls.json_dumper - builder = DiffBuilder(src, dst, json_dumper, pointer_cls=pointer_cls) - builder._compare_values("", None, src, dst) - ops = list(builder.execute()) - return cls(ops, pointer_cls=pointer_cls) - - -class DiffBuilder(_DiffBuilder): - def _item_removed(self, path, key, item): - new_op = RemoveOperation( - { - "op": "remove", - "path": _path_join(path, key), - } - ) - new_index = self.insert(new_op) - self.store_index(item, new_index, _ST_REMOVE) diff --git a/src/idom/core/serve.py b/src/idom/core/serve.py index fd21c55bf..69071555f 100644 --- a/src/idom/core/serve.py +++ b/src/idom/core/serve.py @@ -6,8 +6,8 @@ from typing import Any, Awaitable, Callable, Dict, List, NamedTuple, cast from anyio import create_task_group +from jsonpatch import apply_patch -from ._fixed_jsonpatch import apply_patch, make_patch # type: ignore from .layout import LayoutEvent, LayoutUpdate from .types import LayoutType, VdomJson @@ -74,7 +74,7 @@ def apply_to(self, model: VdomJson) -> VdomJson: @classmethod def create_from(cls, update: LayoutUpdate) -> VdomJsonPatch: """Return a patch given an layout update""" - return cls(update.path, make_patch(update.old or {}, update.new).patch) + return cls(update.path, [{"op": "replace", "path": "", "value": update.new}]) async def _single_outgoing_loop( From b17a9513fbaea0e5081c99a4b449e67b51b6e270 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Tue, 13 Sep 2022 15:47:27 -0700 Subject: [PATCH 098/253] version 0.40.2 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index d0a191543..385bb682d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.40.1 +0.40.2 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index f5b06fbe1..b1f8c805e 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.40.2 +------- +:octicon:`milestone` *released on 2022-09-13* + **Changed** - :pull:`809` - Avoid the use of JSON patch for diffing models. diff --git a/src/client/package-lock.json b/src/client/package-lock.json index a18eb4b05..b438dfa63 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.40.1", + "version": "0.40.2", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.40.1", + "version": "0.40.2", "license": "MIT", "workspaces": [ "./packages/*" @@ -5065,7 +5065,7 @@ } }, "packages/idom-app-react": { - "version": "0.40.1", + "version": "0.40.2", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -5091,7 +5091,7 @@ } }, "packages/idom-client-react": { - "version": "0.40.1", + "version": "0.40.2", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index f4804e48b..a956f8ab8 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.40.1", + "version": "0.40.2", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 5177edd36..913386552 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.40.1" + "version": "0.40.2" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 52de83c7a..ca074c26c 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.40.1" + "version": "0.40.2" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index c95e6bec2..bf47f17e9 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -22,7 +22,7 @@ __author__ = "idom-team" -__version__ = "0.40.1" # DO NOT MODIFY +__version__ = "0.40.2" # DO NOT MODIFY __all__ = [ "component", From dbd88e2278ed9dc5006fb1c8bbb9b2aca1968ba6 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sat, 17 Sep 2022 18:20:20 -0700 Subject: [PATCH 099/253] remove extra element in testing (#812) --- src/idom/testing/display.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py index 0715f7a51..4a7608d32 100644 --- a/src/idom/testing/display.py +++ b/src/idom/testing/display.py @@ -4,7 +4,13 @@ from types import TracebackType from typing import Any -from playwright.async_api import Browser, BrowserContext, Page, async_playwright +from playwright.async_api import ( + Browser, + BrowserContext, + ElementHandle, + Page, + async_playwright, +) from idom import html from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT @@ -30,22 +36,24 @@ def __init__( self.page = driver else: self._browser = driver - self._next_view_id = 0 async def show( self, component: RootComponentConstructor, ) -> None: - self._next_view_id += 1 - view_id = f"display-{self._next_view_id}" - self.backend.mount(lambda: html.div({"id": view_id}, component())) - + self.backend.mount(component) await self.goto("/") - await self.page.wait_for_selector(f"#{view_id}", state="attached") + await self.root_element() # check that root element is attached async def goto(self, path: str, query: Any | None = None) -> None: await self.page.goto(self.backend.url(path, query)) + async def root_element(self) -> ElementHandle: + element = await self.page.wait_for_selector(f"#app", state="attached") + if element is None: + raise RuntimeError("Root element not attached") # pragma: no cover + return element + async def __aenter__(self) -> DisplayFixture: es = self._exit_stack = AsyncExitStack() From 1254aaa9f00a8ff77385dcec705e3f5b5160bf1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Oct 2022 14:21:11 -0700 Subject: [PATCH 100/253] Bump vm2 from 3.9.9 to 3.9.11 in /src/client (#814) Bumps [vm2](https://github.com/patriksimek/vm2) from 3.9.9 to 3.9.11. - [Release notes](https://github.com/patriksimek/vm2/releases) - [Changelog](https://github.com/patriksimek/vm2/blob/master/CHANGELOG.md) - [Commits](https://github.com/patriksimek/vm2/compare/3.9.9...3.9.11) --- updated-dependencies: - dependency-name: vm2 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/client/package-lock.json | 478 +++++++++++------------------------ 1 file changed, 145 insertions(+), 333 deletions(-) diff --git a/src/client/package-lock.json b/src/client/package-lock.json index b438dfa63..bbd6a2acd 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -942,12 +942,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cheerio/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "node_modules/chokidar": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", @@ -1273,9 +1267,9 @@ } }, "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "node_modules/deepmerge": { "version": "4.2.2", @@ -1557,12 +1551,12 @@ } }, "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dependencies": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1" }, @@ -1571,7 +1565,7 @@ "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=4.0" + "node": ">=6.0" }, "optionalDependencies": { "source-map": "~0.6.1" @@ -1633,9 +1627,9 @@ } }, "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { "node": ">=4.0" } @@ -1722,7 +1716,7 @@ "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fdir": { "version": "5.1.0", @@ -2306,14 +2300,6 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "engines": { - "node": ">=4" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -2512,35 +2498,35 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "node_modules/jsdom": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.3.0.tgz", - "integrity": "sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", + "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", "dependencies": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.0.5", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", "html-encoding-sniffer": "^2.0.1", "is-potential-custom-element-name": "^1.0.0", "nwsapi": "^2.2.0", - "parse5": "5.1.1", + "parse5": "6.0.1", "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "ws": "^7.4.4", "xml-name-validator": "^3.0.0" }, "engines": { @@ -2555,6 +2541,17 @@ } } }, + "node_modules/jsdom/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -2655,7 +2652,7 @@ "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -3486,9 +3483,9 @@ } }, "node_modules/parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", @@ -3499,12 +3496,6 @@ "parse5": "^6.0.1" } }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3785,7 +3776,7 @@ "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "engines": { "node": ">= 0.8.0" } @@ -3891,6 +3882,11 @@ "node": ">=0.6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -4085,6 +4081,11 @@ "node": ">=0.8" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/resolve": { "version": "1.20.0", "dev": true, @@ -4653,13 +4654,14 @@ } }, "node_modules/tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" @@ -4707,7 +4709,7 @@ "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -4743,10 +4745,9 @@ } }, "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "engines": { "node": ">= 4.0.0" } @@ -4770,6 +4771,15 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/utf-8-validate": { "version": "5.0.9", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", @@ -4853,9 +4863,9 @@ } }, "node_modules/vm2": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz", - "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==", + "version": "3.9.11", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", + "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", "dev": true, "dependencies": { "acorn": "^8.7.0", @@ -5084,7 +5094,7 @@ "dependencies": { "fast-json-patch": "^3.0.0-1", "htm": "^3.0.3", - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" @@ -5107,124 +5117,6 @@ "react": ">=16", "react-dom": ">=16" } - }, - "packages/idom-client-react/node_modules/acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "packages/idom-client-react/node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "packages/idom-client-react/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "packages/idom-client-react/node_modules/jsdom": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", - "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.0.5", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.9", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.4.4", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "packages/idom-client-react/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "packages/idom-client-react/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "packages/idom-client-react/node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } } }, "dependencies": { @@ -5970,14 +5862,6 @@ "parse5": "^6.0.1", "parse5-htmlparser2-tree-adapter": "^6.0.1", "tslib": "^2.2.0" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } } }, "cheerio-select": { @@ -6241,9 +6125,9 @@ } }, "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, "deepmerge": { "version": "4.2.2", @@ -6457,12 +6341,12 @@ "dev": true }, "escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "requires": { "esprima": "^4.0.1", - "estraverse": "^4.2.0", + "estraverse": "^5.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" @@ -6518,9 +6402,9 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "estree-walker": { "version": "2.0.2", @@ -6588,7 +6472,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "fdir": { "version": "5.1.0", @@ -6974,7 +6858,7 @@ "requires": { "fast-json-patch": "^3.0.0-1", "htm": "^3.0.3", - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" @@ -6991,91 +6875,6 @@ "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" - }, - "dependencies": { - "acorn": { - "version": "8.7.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", - "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "jsdom": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", - "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.0.5", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.9", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.4.4", - "xml-name-validator": "^3.0.0" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - } } }, "ignore-walk": { @@ -7145,11 +6944,6 @@ "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -7301,36 +7095,43 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.3.0.tgz", - "integrity": "sha512-zggeX5UuEknpdZzv15+MS1dPYG0J/TftiiNunOeNxSl3qr8Z6cIlQpN0IdJa44z9aFxZRIVqRncvEhQ7X5DtZg==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", + "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", "requires": { - "abab": "^2.0.3", - "acorn": "^7.1.1", + "abab": "^2.0.5", + "acorn": "^8.0.5", "acorn-globals": "^6.0.0", "cssom": "^0.4.4", - "cssstyle": "^2.2.0", + "cssstyle": "^2.3.0", "data-urls": "^2.0.0", - "decimal.js": "^10.2.0", + "decimal.js": "^10.2.1", "domexception": "^2.0.1", - "escodegen": "^1.14.1", + "escodegen": "^2.0.0", "html-encoding-sniffer": "^2.0.1", "is-potential-custom-element-name": "^1.0.0", "nwsapi": "^2.2.0", - "parse5": "5.1.1", + "parse5": "6.0.1", "request": "^2.88.2", - "request-promise-native": "^1.0.8", - "saxes": "^5.0.0", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", "symbol-tree": "^3.2.4", - "tough-cookie": "^3.0.1", + "tough-cookie": "^4.0.0", "w3c-hr-time": "^1.0.2", "w3c-xmlserializer": "^2.0.0", "webidl-conversions": "^6.1.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0", - "ws": "^7.2.3", + "ws": "^7.4.4", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + } } }, "json-buffer": { @@ -7418,7 +7219,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -8028,9 +7829,9 @@ } }, "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "parse5-htmlparser2-tree-adapter": { "version": "6.0.1", @@ -8039,14 +7840,6 @@ "dev": true, "requires": { "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } } }, "path-exists": { @@ -8245,7 +8038,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==" }, "prettier": { "version": "2.5.1", @@ -8326,6 +8119,11 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -8482,6 +8280,11 @@ } } }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "resolve": { "version": "1.20.0", "dev": true, @@ -8916,13 +8719,14 @@ "integrity": "sha512-+Y17F0YzxfACxTyjfhnJQEe7afPA0GSpYlFkl2VFMxYP7jshQf9gXV7cH47EfToBumFThfKBvfAcoUn6fdNeRQ==" }, "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" } }, "tr46": { @@ -8961,7 +8765,7 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "requires": { "prelude-ls": "~1.1.2" } @@ -8994,10 +8798,9 @@ } }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" }, "untildify": { "version": "2.1.0", @@ -9014,6 +8817,15 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "utf-8-validate": { "version": "5.0.9", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", @@ -9083,9 +8895,9 @@ } }, "vm2": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.9.tgz", - "integrity": "sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw==", + "version": "3.9.11", + "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", + "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", "dev": true, "requires": { "acorn": "^8.7.0", From f59af5500af30c90a41a51bced3c3144c02586fb Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 4 Oct 2022 10:55:09 -0700 Subject: [PATCH 101/253] Update badge image link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 740c301bc..b6304e748 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# IDOM · [![Tests](https://github.com/idom-team/idom/workflows/Test/badge.svg?event=push)](https://github.com/idom-team/idom/actions?query=workflow%3ATest) [![PyPI Version](https://img.shields.io/pypi/v/idom.svg)](https://pypi.python.org/pypi/idom) [![License](https://img.shields.io/badge/License-MIT-purple.svg)](https://github.com/idom-team/idom/blob/main/LICENSE) +# IDOM · [![Tests](https://github.com/idom-team/idom/workflows/test/badge.svg)](https://github.com/idom-team/idom/actions?query=workflow%3ATest) [![PyPI Version](https://img.shields.io/pypi/v/idom.svg)](https://pypi.python.org/pypi/idom) [![License](https://img.shields.io/badge/License-MIT-purple.svg)](https://github.com/idom-team/idom/blob/main/LICENSE) IDOM connects your Python web framework of choice to a ReactJS frontend, allowing you to create **interactive websites without needing JavaScript!** From 6fe9fa2957b8a0926cab38c12cd8632f0e9bbb87 Mon Sep 17 00:00:00 2001 From: Kurtsley <73447098+Kurtsley@users.noreply.github.com> Date: Tue, 4 Oct 2022 20:53:35 -0500 Subject: [PATCH 102/253] changed first name to last name and email (#815) --- .../dangers-of-mutability/_examples/dict_update.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py index 9a2aad5e6..92085c0b6 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py @@ -28,13 +28,13 @@ def handle_email_change(event): ), ), html.label( - "First name: ", + "Last name: ", html.input( {"value": person["last_name"], "onChange": handle_last_name_change}, ), ), html.label( - "First name: ", + "Email: ", html.input( {"value": person["email"], "onChange": handle_email_change}, ), From d7a71b3cf717505d25a6b0c91300e66f6adcf9fa Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Fri, 7 Oct 2022 00:37:20 -0700 Subject: [PATCH 103/253] allow string return type (#817) --- .github/workflows/test.yml | 4 ++-- noxfile.py | 2 +- src/idom/_option.py | 2 +- src/idom/core/component.py | 8 ++++---- src/idom/core/hooks.py | 6 +----- src/idom/core/layout.py | 2 +- src/idom/core/types.py | 2 +- src/idom/testing/display.py | 3 +-- src/idom/utils.py | 15 ++++++++++----- tests/test_core/test_layout.py | 13 ++----------- tests/test_html.py | 15 +++------------ tests/tooling/hooks.py | 11 +++++++++++ 12 files changed, 38 insertions(+), 45 deletions(-) create mode 100644 tests/tooling/hooks.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f6eac70ca..d5fa75b7a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,11 +11,11 @@ on: - cron: "0 0 * * *" jobs: - python-coverage: + python-exhaustive: uses: ./.github/workflows/.nox-session.yml with: job-name: "python-{0}" - session-name: test_python_suite + session-name: test_python session-arguments: --maxfail=3 python-environments: uses: ./.github/workflows/.nox-session.yml diff --git a/noxfile.py b/noxfile.py index ac9fcf08f..a50ba1912 100644 --- a/noxfile.py +++ b/noxfile.py @@ -200,7 +200,7 @@ def test_python_types(session: Session) -> None: install_requirements_file(session, "check-types") install_requirements_file(session, "pkg-deps") install_requirements_file(session, "pkg-extras") - session.run("mypy", "--strict", "src/idom") + session.run("mypy", "--show-error-codes", "--strict", "src/idom") @nox.session diff --git a/src/idom/_option.py b/src/idom/_option.py index e0a303ac9..1367e6bd9 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -103,7 +103,7 @@ def __init__(self, new_opt: Option[_O], name: str) -> None: self._new_opt = new_opt @property # type: ignore - def _current(self) -> _O: # type: ignore + def _current(self) -> _O: warnings.warn( f"{self.name!r} has been renamed to {self._new_opt.name!r}", DeprecationWarning, diff --git a/src/idom/core/component.py b/src/idom/core/component.py index 5ef0f1844..0bf62c9a7 100644 --- a/src/idom/core/component.py +++ b/src/idom/core/component.py @@ -2,13 +2,13 @@ import inspect from functools import wraps -from typing import Any, Callable, Dict, Optional, Tuple, Union +from typing import Any, Callable, Dict, Optional, Tuple from .types import ComponentType, VdomDict def component( - function: Callable[..., Union[ComponentType, VdomDict | None]] + function: Callable[..., ComponentType | VdomDict | str | None] ) -> Callable[..., Component]: """A decorator for defining a new component. @@ -39,7 +39,7 @@ class Component: def __init__( self, - function: Callable[..., ComponentType | VdomDict | None], + function: Callable[..., ComponentType | VdomDict | str | None], key: Optional[Any], args: Tuple[Any, ...], kwargs: Dict[str, Any], @@ -51,7 +51,7 @@ def __init__( self._kwargs = kwargs self._sig = sig - def render(self) -> VdomDict | ComponentType | None: + def render(self) -> ComponentType | VdomDict | str | None: return self.type(*self._args, **self._kwargs) def should_render(self, new: Component) -> bool: diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index 45e7c7dd9..428f9a963 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -23,7 +23,6 @@ from typing_extensions import Protocol -from idom.config import IDOM_DEBUG_MODE from idom.utils import Ref from ._thread_local import ThreadLocal @@ -226,9 +225,6 @@ def use_debug_value( :func:`id` is different). By default these are inferred based on local variables that are referenced by the given function. """ - if not IDOM_DEBUG_MODE.current: - return # pragma: no cover - old: Ref[Any] = _use_const(lambda: Ref(object())) memo_func = message if callable(message) else lambda: message new = use_memo(memo_func, dependencies) @@ -541,7 +537,7 @@ def _try_to_infer_closure_values( else: return None else: - return cast("Sequence[Any] | None", values) + return values def current_hook() -> LifeCycleHook: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index a7d21b87c..db861142d 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -234,7 +234,7 @@ def _render_component( old_parent_model = parent.model.current old_parent_children = old_parent_model["children"] parent.model.current = { - **old_parent_model, + **old_parent_model, # type: ignore[misc] "children": [ *old_parent_children[:index], new_state.model.current, diff --git a/src/idom/core/types.py b/src/idom/core/types.py index 3943a154b..a2b7cc902 100644 --- a/src/idom/core/types.py +++ b/src/idom/core/types.py @@ -44,7 +44,7 @@ class ComponentType(Protocol): This is used to see if two component instances share the same definition. """ - def render(self) -> VdomDict | ComponentType | None: + def render(self) -> VdomDict | ComponentType | str | None: """Render the component's view model.""" def should_render(self: _OwnType, new: _OwnType) -> bool: diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py index 4a7608d32..5e315111e 100644 --- a/src/idom/testing/display.py +++ b/src/idom/testing/display.py @@ -12,7 +12,6 @@ async_playwright, ) -from idom import html from idom.config import IDOM_TESTING_DEFAULT_TIMEOUT from idom.types import RootComponentConstructor @@ -49,7 +48,7 @@ async def goto(self, path: str, query: Any | None = None) -> None: await self.page.goto(self.backend.url(path, query)) async def root_element(self) -> ElementHandle: - element = await self.page.wait_for_selector(f"#app", state="attached") + element = await self.page.wait_for_selector("#app", state="attached") if element is None: raise RuntimeError("Root element not attached") # pragma: no cover return element diff --git a/src/idom/utils.py b/src/idom/utils.py index ec114b2c3..e176da660 100644 --- a/src/idom/utils.py +++ b/src/idom/utils.py @@ -56,7 +56,9 @@ def __repr__(self) -> str: return f"{type(self).__name__}({current})" -def html_to_vdom(html: str, *transforms: _ModelTransform, strict: bool = True) -> VdomDict: +def html_to_vdom( + html: str, *transforms: _ModelTransform, strict: bool = True +) -> VdomDict: """Transform HTML into a DOM model. Unique keys can be provided to HTML elements using a ``key=...`` attribute within your HTML tag. @@ -82,7 +84,9 @@ def html_to_vdom(html: str, *transforms: _ModelTransform, strict: bool = True) - recover=not strict, ) try: - nodes: List = fragments_fromstring(html, no_leading_text=True, parser=parser) + nodes: list[etree._Element] = fragments_fromstring( + html, no_leading_text=True, parser=parser + ) except etree.XMLSyntaxError as e: if not strict: raise e # pragma: no cover @@ -139,10 +143,11 @@ def _etree_to_vdom( attributes = dict(node.items()) key = attributes.pop("key", None) + vdom: VdomDict if hasattr(idom.html, node.tag): vdom = getattr(idom.html, node.tag)(attributes, *children, key=key) else: - vdom: VdomDict = {"tagName": node.tag} + vdom = {"tagName": node.tag} if children: vdom["children"] = children if attributes: @@ -160,7 +165,7 @@ def _etree_to_vdom( return vdom -def _mutate_vdom(vdom: VdomDict): +def _mutate_vdom(vdom: VdomDict) -> None: """Performs any necessary mutations on the VDOM attributes to meet VDOM spec. Currently, this function only transforms the ``style`` attribute into a dictionary whose keys are @@ -216,5 +221,5 @@ def _hypen_to_camel_case(string: str) -> str: return first.lower() + remainder.title().replace("-", "") -class HTMLParseError(etree.LxmlSyntaxError): +class HTMLParseError(etree.LxmlSyntaxError): # type: ignore[misc] """Raised when an HTML document cannot be parsed using strict parsing.""" diff --git a/tests/test_core/test_layout.py b/tests/test_core/test_layout.py index 60d39e65e..42c9d00c3 100644 --- a/tests/test_core/test_layout.py +++ b/tests/test_core/test_layout.py @@ -20,7 +20,7 @@ capture_idom_logs, ) from idom.utils import Ref -from tests.tooling.asserts import assert_same_items +from tests.tooling.hooks import use_toggle @pytest.fixture(autouse=True) @@ -495,11 +495,6 @@ def SomeComponent(): ) -def use_toggle(init=False): - state, set_state = idom.hooks.use_state(init) - return state, lambda: set_state(lambda old: not old) - - async def test_model_key_preserves_callback_identity_for_common_elements(caplog): called_good_trigger = idom.Ref(False) good_handler = StaticEventHandler() @@ -818,13 +813,9 @@ async def test_elements_and_components_with_the_same_key_can_be_interchanged(): set_toggle = idom.Ref() effects = [] - def use_toggle(): - state, set_state = idom.hooks.use_state(True) - return state, lambda: set_state(not state) - @idom.component def Root(): - toggle, set_toggle.current = use_toggle() + toggle, set_toggle.current = use_toggle(True) if toggle: return SomeComponent("x") else: diff --git a/tests/test_html.py b/tests/test_html.py index d4fe685d8..269e9e5a7 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -1,18 +1,9 @@ import pytest -from idom import component, config, html, use_state +from idom import component, config, html from idom.testing import DisplayFixture, poll from idom.utils import Ref - - -def use_toggle(initial=True): - state, set_state = use_state(initial) - return state, lambda: set_state(not state) - - -def use_counter(initial_value): - state, set_state = use_state(initial_value) - return state, lambda: set_state(state + 1) +from tests.tooling.hooks import use_counter, use_toggle async def test_script_mount_unmount(display: DisplayFixture): @@ -20,7 +11,7 @@ async def test_script_mount_unmount(display: DisplayFixture): @component def Root(): - is_mounted, toggle_is_mounted.current = use_toggle() + is_mounted, toggle_is_mounted.current = use_toggle(True) return html.div( html.div({"id": "mount-state", "data-value": False}), HasScript() if is_mounted else html.div(), diff --git a/tests/tooling/hooks.py b/tests/tooling/hooks.py new file mode 100644 index 000000000..f6488af8a --- /dev/null +++ b/tests/tooling/hooks.py @@ -0,0 +1,11 @@ +from idom import use_state + + +def use_toggle(init=False): + state, set_state = use_state(init) + return state, lambda: set_state(lambda old: not old) + + +def use_counter(initial_value): + state, set_state = use_state(initial_value) + return state, lambda: set_state(state + 1) From cba66aa29a1125eca6f0e852757d1108be97259d Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Fri, 7 Oct 2022 01:05:07 -0700 Subject: [PATCH 104/253] Fix model state ID logging (#818) --- src/idom/core/layout.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index db861142d..5f7d667ad 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -136,7 +136,7 @@ async def render(self) -> LayoutUpdate: except KeyError: logger.debug( "Did not render component with model state ID " - "{model_state_id!r} - component already unmounted" + f"{model_state_id!r} - component already unmounted" ) else: return self._create_layout_update(model_state) From 688a16d1635513debca9ea2d4be73d7e1bc9352a Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 10 Oct 2022 17:40:04 -0700 Subject: [PATCH 105/253] schedule test once a week rather than one per day it seems unnecessary to run this every day. we can up the cadence later if needed --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d5fa75b7a..b679d4f6f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,7 @@ on: branches: - main schedule: - - cron: "0 0 * * *" + - cron: "0 0 * * 0" jobs: python-exhaustive: From 50e42c012ed765988552f82b1e8e37fc5fdd8b2f Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Mon, 17 Oct 2022 20:54:35 -0700 Subject: [PATCH 106/253] set event loop policy for windows (#820) --- tests/conftest.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index f0400ebf9..2e328adb2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,5 +1,6 @@ from __future__ import annotations +import asyncio import os import pytest @@ -50,14 +51,14 @@ async def page(browser): @pytest.fixture(scope="session") async def browser(pytestconfig: Config): - if os.name == "nt": # pragma: no cover - pytest.skip("Browser tests not supported on Windows") async with async_playwright() as pw: yield await pw.chromium.launch(headless=not bool(pytestconfig.option.headed)) @pytest.fixture(scope="session") def event_loop(): + if os.name == "nt": # pragma: no cover + asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) with open_event_loop() as loop: yield loop From 64c9e82ac693c7790c4560592e7765874670c324 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 30 Oct 2022 12:12:04 -0700 Subject: [PATCH 107/253] add use_connection hook (#823) * add use_connection hook * add changelog entry * upgrade uvicorn * fix type annotation * remove unused imports * update docstring * increase type delay * configure default delay --- docs/source/_custom_js/package-lock.json | 6 +- docs/source/about/changelog.rst | 13 ++- requirements/pkg-extras.txt | 4 +- src/idom/__init__.py | 6 +- src/idom/backend/_asgi.py | 2 +- src/idom/backend/default.py | 12 +-- src/idom/backend/fastapi.py | 10 +-- src/idom/backend/flask.py | 73 ++++++++-------- src/idom/backend/hooks.py | 26 ++++++ src/idom/backend/sanic.py | 106 ++++++++++++----------- src/idom/backend/starlette.py | 51 ++++++----- src/idom/backend/tornado.py | 59 +++++-------- src/idom/backend/types.py | 29 +++++-- src/idom/types.py | 7 +- tests/test_backend/test_common.py | 43 ++++++++- tests/test_client.py | 3 +- tests/test_core/test_events.py | 3 +- tests/test_core/test_hooks.py | 3 +- tests/test_widgets.py | 9 +- tests/tooling/common.py | 2 + 20 files changed, 276 insertions(+), 191 deletions(-) create mode 100644 src/idom/backend/hooks.py create mode 100644 tests/tooling/common.py diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index e6bf270c5..b648d4992 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.39.0", + "version": "0.40.2", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { @@ -27,7 +27,7 @@ "htm": "^3.0.3" }, "devDependencies": { - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" @@ -604,7 +604,7 @@ "requires": { "fast-json-patch": "^3.0.0-1", "htm": "^3.0.3", - "jsdom": "16.3.0", + "jsdom": "16.5.0", "lodash": "^4.17.21", "prettier": "^2.5.1", "uvu": "^0.5.1" diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index b1f8c805e..2940723de 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,18 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Changed** + +- :pull:`823` - The hooks ``use_location`` and ``use_scope`` are no longer + implementation specific and are now available as top-level imports. Instead of each + backend defining these hooks, backends establish a ``ConnectionContext`` with this + information. + +**Added** + +- :pull:`823` - There is a new ``use_connection`` hook which returns a ``Connection`` + object. This ``Connection`` object contains a ``location`` and ``scope``, along with + a ``carrier`` which is unique to each backend implementation. v0.40.2 diff --git a/requirements/pkg-extras.txt b/requirements/pkg-extras.txt index 2b2079706..7d7a59bdb 100644 --- a/requirements/pkg-extras.txt +++ b/requirements/pkg-extras.txt @@ -1,6 +1,6 @@ # extra=starlette starlette >=0.13.6 -uvicorn[standard] >=0.13.4 +uvicorn[standard] >=0.19.0 # extra=sanic sanic >=21 @@ -8,7 +8,7 @@ sanic-cors # extra=fastapi fastapi >=0.63.0 -uvicorn[standard] >=0.13.4 +uvicorn[standard] >=0.19.0 # extra=flask flask diff --git a/src/idom/__init__.py b/src/idom/__init__.py index bf47f17e9..afbc83eed 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -1,4 +1,5 @@ from . import backend, config, html, logging, sample, types, web +from .backend.hooks import use_connection, use_location, use_scope from .backend.utils import run from .core import hooks from .core.component import component @@ -25,6 +26,7 @@ __version__ = "0.40.2" # DO NOT MODIFY __all__ = [ + "backend", "component", "config", "create_context", @@ -38,16 +40,18 @@ "Ref", "run", "sample", - "backend", "Stop", "types", "use_callback", + "use_connection", "use_context", "use_debug_value", "use_effect", + "use_location", "use_memo", "use_reducer", "use_ref", + "use_scope", "use_state", "vdom", "web", diff --git a/src/idom/backend/_asgi.py b/src/idom/backend/_asgi.py index 9e01a21e7..94eaa2b88 100644 --- a/src/idom/backend/_asgi.py +++ b/src/idom/backend/_asgi.py @@ -21,7 +21,7 @@ async def serve_development_asgi( host=host, port=port, loop="asyncio", - debug=True, + reload=True, ) ) diff --git a/src/idom/backend/default.py b/src/idom/backend/default.py index 0cd593388..1f8db0126 100644 --- a/src/idom/backend/default.py +++ b/src/idom/backend/default.py @@ -5,7 +5,7 @@ from idom.types import RootComponentConstructor -from .types import BackendImplementation, Location +from .types import BackendImplementation from .utils import all_implementations @@ -35,16 +35,6 @@ async def serve_development_app( ) -def use_scope() -> Any: - """Return the current ASGI/WSGI scope""" - return _default_implementation().use_scope() - - -def use_location() -> Location: - """Return the current route as a string""" - return _default_implementation().use_location() - - _DEFAULT_IMPLEMENTATION: BackendImplementation[Any] | None = None diff --git a/src/idom/backend/fastapi.py b/src/idom/backend/fastapi.py index cc8c84580..2e68d705a 100644 --- a/src/idom/backend/fastapi.py +++ b/src/idom/backend/fastapi.py @@ -8,16 +8,10 @@ serve_development_app = starlette.serve_development_app """Alias for :func:`idom.backend.starlette.serve_development_app`""" -# see: https://github.com/idom-team/flake8-idom-hooks/issues/12 -use_location = starlette.use_location # noqa: ROH101 +use_connection = starlette.use_connection """Alias for :func:`idom.backend.starlette.use_location`""" -# see: https://github.com/idom-team/flake8-idom-hooks/issues/12 -use_scope = starlette.use_scope # noqa: ROH101 -"""Alias for :func:`idom.backend.starlette.use_scope`""" - -# see: https://github.com/idom-team/flake8-idom-hooks/issues/12 -use_websocket = starlette.use_websocket # noqa: ROH101 +use_websocket = starlette.use_websocket """Alias for :func:`idom.backend.starlette.use_websocket`""" Options = starlette.Options diff --git a/src/idom/backend/flask.py b/src/idom/backend/flask.py index 55e20618b..56db466b4 100644 --- a/src/idom/backend/flask.py +++ b/src/idom/backend/flask.py @@ -25,8 +25,9 @@ from werkzeug.serving import BaseWSGIServer, make_server import idom -from idom.backend.types import Location -from idom.core.hooks import Context, create_context, use_context +from idom.backend.hooks import ConnectionContext +from idom.backend.hooks import use_connection as _use_connection +from idom.backend.types import Connection, Location from idom.core.layout import LayoutEvent, LayoutUpdate from idom.core.serve import serve_json_patch from idom.core.types import ComponentType, RootComponentConstructor @@ -37,8 +38,6 @@ logger = logging.getLogger(__name__) -ConnectionContext: Context[Connection | None] = create_context(None) - def configure( app: Flask, component: RootComponentConstructor, options: Options | None = None @@ -107,45 +106,25 @@ def run_server() -> None: raise RuntimeError("Failed to shutdown server.") -def use_location() -> Location: - """Get the current route as a string""" - conn = use_connection() - search = conn.request.query_string.decode() - return Location(pathname="/" + conn.path, search="?" + search if search else "") - - -def use_scope() -> dict[str, Any]: - """Get the current WSGI environment""" - return use_request().environ +def use_websocket() -> WebSocket: + """A handle to the current websocket""" + return use_connection().carrier.websocket def use_request() -> Request: """Get the current ``Request``""" - return use_connection().request + return use_connection().carrier.request -def use_connection() -> Connection: +def use_connection() -> Connection[_FlaskCarrier]: """Get the current :class:`Connection`""" - connection = use_context(ConnectionContext) - if connection is None: - raise RuntimeError( # pragma: no cover - "No connection. Are you running with a Flask server?" + conn = _use_connection() + if not isinstance(conn.carrier, _FlaskCarrier): + raise TypeError( # pragma: no cover + f"Connection has unexpected carrier {conn.carrier}. " + "Are you running with a Flask server?" ) - return connection - - -@dataclass -class Connection: - """A simple wrapper for holding connection information""" - - request: Request - """The current request object""" - - websocket: WebSocket - """A handle to the current websocket""" - - path: str - """The current path being served""" + return conn @dataclass @@ -230,11 +209,20 @@ async def recv_coro() -> Any: return await async_recv_queue.get() async def main() -> None: + search = request.query_string.decode() await serve_json_patch( idom.Layout( ConnectionContext( - component, value=Connection(request, websocket, path) - ) + component, + value=Connection( + scope=request.environ, + location=Location( + pathname=f"/{path}", + search=f"?{search}" if search else "", + ), + carrier=_FlaskCarrier(request, websocket), + ), + ), ), send_coro, recv_coro, @@ -283,3 +271,14 @@ class _DispatcherThreadInfo(NamedTuple): dispatch_future: "asyncio.Future[Any]" thread_send_queue: "ThreadQueue[LayoutUpdate]" async_recv_queue: "AsyncQueue[LayoutEvent]" + + +@dataclass +class _FlaskCarrier: + """A simple wrapper for holding a Flask request and WebSocket""" + + request: Request + """The current request object""" + + websocket: WebSocket + """A handle to the current websocket""" diff --git a/src/idom/backend/hooks.py b/src/idom/backend/hooks.py new file mode 100644 index 000000000..c5b5d7c9a --- /dev/null +++ b/src/idom/backend/hooks.py @@ -0,0 +1,26 @@ +from __future__ import annotations + +from typing import Any, MutableMapping + +from idom.core.hooks import Context, create_context, use_context + +from .types import Connection, Location + + +# backend implementations should establish this context at the root of an app +ConnectionContext: Context[Connection[Any] | None] = create_context(None) + + +def use_connection() -> Connection[Any]: + conn = use_context(ConnectionContext) + if conn is None: + raise RuntimeError("No backend established a connection.") # pragma: no cover + return conn + + +def use_scope() -> MutableMapping[str, Any]: + return use_connection().scope + + +def use_location() -> Location: + return use_connection().location diff --git a/src/idom/backend/sanic.py b/src/idom/backend/sanic.py index aa0b45405..1a58c5d1c 100644 --- a/src/idom/backend/sanic.py +++ b/src/idom/backend/sanic.py @@ -4,18 +4,16 @@ import json import logging from dataclasses import dataclass -from typing import Any, Dict, Tuple, Union +from typing import Any, Dict, MutableMapping, Tuple, Union from urllib import parse as urllib_parse from uuid import uuid4 from sanic import Blueprint, Sanic, request, response from sanic.config import Config -from sanic.models.asgi import ASGIScope +from sanic.server.websockets.connection import WebSocketConnection from sanic_cors import CORS -from websockets.legacy.protocol import WebSocketCommonProtocol -from idom.backend.types import Location -from idom.core.hooks import Context, create_context, use_context +from idom.backend.types import Connection, Location from idom.core.layout import Layout, LayoutEvent from idom.core.serve import ( RecvCoroutine, @@ -27,13 +25,13 @@ from idom.core.types import RootComponentConstructor from ._asgi import serve_development_asgi +from .hooks import ConnectionContext +from .hooks import use_connection as _use_connection from .utils import safe_client_build_dir_path, safe_web_modules_dir_path logger = logging.getLogger(__name__) -ConnectionContext: Context[Connection | None] = create_context(None) - def configure( app: Sanic, component: RootComponentConstructor, options: Options | None = None @@ -65,50 +63,25 @@ async def serve_development_app( await serve_development_asgi(app, host, port, started) -def use_location() -> Location: - """Get the current route as a string""" - conn = use_connection() - search = conn.request.query_string - return Location(pathname="/" + conn.path, search="?" + search if search else "") - - -def use_scope() -> ASGIScope: - """Get the current ASGI scope""" - app = use_request().app - try: - asgi_app = app._asgi_app - except AttributeError: # pragma: no cover - raise RuntimeError("No scope. Sanic may not be running with an ASGI server") - return asgi_app.transport.scope - - def use_request() -> request.Request: """Get the current ``Request``""" - return use_connection().request - - -def use_connection() -> Connection: - """Get the current :class:`Connection`""" - connection = use_context(ConnectionContext) - if connection is None: - raise RuntimeError( # pragma: no cover - "No connection. Are you running with a Sanic server?" - ) - return connection + return use_connection().carrier.request -@dataclass -class Connection: - """A simple wrapper for holding connection information""" +def use_websocket() -> WebSocketConnection: + """Get the current websocket""" + return use_connection().carrier.websocket - request: request.Request - """The current request object""" - websocket: WebSocketCommonProtocol - """A handle to the current websocket""" - - path: str - """The current path being served""" +def use_connection() -> Connection[_SanicCarrier]: + """Get the current :class:`Connection`""" + conn = _use_connection() + if not isinstance(conn.carrier, _SanicCarrier): + raise TypeError( # pragma: no cover + f"Connection has unexpected carrier {conn.carrier}. " + "Are you running with a Sanic server?" + ) + return conn @dataclass @@ -165,12 +138,36 @@ def _setup_single_view_dispatcher_route( blueprint: Blueprint, constructor: RootComponentConstructor ) -> None: async def model_stream( - request: request.Request, socket: WebSocketCommonProtocol, path: str = "" + request: request.Request, socket: WebSocketConnection, path: str = "" ) -> None: + app = request.app + try: + asgi_app = app._asgi_app + except AttributeError: # pragma: no cover + logger.warning("No scope. Sanic may not be running with an ASGI server") + scope: MutableMapping[str, Any] = {} + else: + scope = asgi_app.transport.scope + send, recv = _make_send_recv_callbacks(socket) - conn = Connection(request, socket, path) await serve_json_patch( - Layout(ConnectionContext(constructor(), value=conn)), + Layout( + ConnectionContext( + constructor(), + value=Connection( + scope=scope, + location=Location( + pathname=f"/{path}", + search=( + f"?{request.query_string}" + if request.query_string + else "" + ), + ), + carrier=_SanicCarrier(request, socket), + ), + ) + ), send, recv, ) @@ -180,7 +177,7 @@ async def model_stream( def _make_send_recv_callbacks( - socket: WebSocketCommonProtocol, + socket: WebSocketConnection, ) -> Tuple[SendCoroutine, RecvCoroutine]: async def sock_send(value: VdomJsonPatch) -> None: await socket.send(json.dumps(value)) @@ -192,3 +189,14 @@ async def sock_recv() -> LayoutEvent: return LayoutEvent(**json.loads(data)) return sock_send, sock_recv + + +@dataclass +class _SanicCarrier: + """A simple wrapper for holding connection information""" + + request: request.Request + """The current request object""" + + websocket: WebSocketConnection + """A handle to the current websocket""" diff --git a/src/idom/backend/starlette.py b/src/idom/backend/starlette.py index ebee12dd0..c5c622979 100644 --- a/src/idom/backend/starlette.py +++ b/src/idom/backend/starlette.py @@ -12,9 +12,9 @@ from starlette.types import Receive, Scope, Send from starlette.websockets import WebSocket, WebSocketDisconnect -from idom.backend.types import Location +from idom.backend.hooks import ConnectionContext +from idom.backend.types import Connection, Location from idom.config import IDOM_WEB_MODULES_DIR -from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent from idom.core.serve import ( RecvCoroutine, @@ -25,13 +25,13 @@ from idom.core.types import RootComponentConstructor from ._asgi import serve_development_asgi +from .hooks import ConnectionContext +from .hooks import use_connection as _use_connection from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path logger = logging.getLogger(__name__) -WebSocketContext: Context[WebSocket | None] = create_context(None) - def configure( app: Starlette, @@ -68,27 +68,19 @@ async def serve_development_app( await serve_development_asgi(app, host, port, started) -def use_location() -> Location: - """Get the current route as a string""" - scope = use_scope() - pathname = "/" + scope["path_params"].get("path", "") - search = scope["query_string"].decode() - return Location(pathname, "?" + search if search else "") - - -def use_scope() -> Scope: - """Get the current ASGI scope dictionary""" - return use_websocket().scope - - def use_websocket() -> WebSocket: """Get the current WebSocket object""" - websocket = use_context(WebSocketContext) - if websocket is None: - raise RuntimeError( # pragma: no cover - "No websocket. Are you running with a Starllette server?" + return use_connection().carrier + + +def use_connection() -> Connection[WebSocket]: + conn = _use_connection() + if not isinstance(conn.carrier, WebSocket): + raise TypeError( # pragma: no cover + f"Connection has unexpected carrier {conn.carrier}. " + "Are you running with a Flask server?" ) - return websocket + return conn @dataclass @@ -154,9 +146,22 @@ def _setup_single_view_dispatcher_route( async def model_stream(socket: WebSocket) -> None: await socket.accept() send, recv = _make_send_recv_callbacks(socket) + + pathname = "/" + socket.scope["path_params"].get("path", "") + search = socket.scope["query_string"].decode() + try: await serve_json_patch( - Layout(WebSocketContext(constructor(), value=socket)), + Layout( + ConnectionContext( + constructor(), + value=Connection( + scope=socket.scope, + location=Location(pathname, f"?{search}" if search else ""), + carrier=socket, + ), + ) + ), send, recv, ) diff --git a/src/idom/backend/tornado.py b/src/idom/backend/tornado.py index febd4db3a..c70c07f51 100644 --- a/src/idom/backend/tornado.py +++ b/src/idom/backend/tornado.py @@ -16,19 +16,17 @@ from tornado.websocket import WebSocketHandler from tornado.wsgi import WSGIContainer -from idom.backend.types import Location +from idom.backend.types import Connection, Location from idom.config import IDOM_WEB_MODULES_DIR -from idom.core.hooks import Context, create_context, use_context from idom.core.layout import Layout, LayoutEvent from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.core.types import ComponentConstructor +from .hooks import ConnectionContext +from .hooks import use_connection as _use_connection from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path -ConnectionContext: Context[Connection | None] = create_context(None) - - def configure( app: Application, component: ComponentConstructor, @@ -84,41 +82,19 @@ async def serve_development_app( await server.close_all_connections() -def use_location() -> Location: - """Get the current route as a string""" - conn = use_connection() - search = conn.request.query - return Location(pathname="/" + conn.path, search="?" + search if search else "") - - -def use_scope() -> dict[str, Any]: - """Get the current WSGI environment dictionary""" - return WSGIContainer.environ(use_request()) - - def use_request() -> HTTPServerRequest: """Get the current ``HTTPServerRequest``""" - return use_connection().request + return use_connection().carrier -def use_connection() -> Connection: - connection = use_context(ConnectionContext) - if connection is None: - raise RuntimeError( # pragma: no cover - "No connection. Are you running with a Tornado server?" +def use_connection() -> Connection[HTTPServerRequest]: + conn = _use_connection() + if not isinstance(conn.carrier, HTTPServerRequest): + raise TypeError( # pragma: no cover + f"Connection has unexpected carrier {conn.carrier}. " + "Are you running with a Flask server?" ) - return connection - - -@dataclass -class Connection: - """A simple wrapper for holding connection information""" - - request: HTTPServerRequest - """The current request object""" - - path: str - """The current path being served""" + return conn @dataclass @@ -217,7 +193,18 @@ async def recv() -> LayoutEvent: Layout( ConnectionContext( self._component_constructor(), - value=Connection(self.request, path), + value=Connection( + scope=WSGIContainer.environ(self.request), + location=Location( + pathname=f"/{path}", + search=( + f"?{self.request.query}" + if self.request.query + else "" + ), + ), + carrier=self.request, + ), ) ), send, diff --git a/src/idom/backend/types.py b/src/idom/backend/types.py index 8a793b4f1..7ecf43350 100644 --- a/src/idom/backend/types.py +++ b/src/idom/backend/types.py @@ -2,7 +2,7 @@ import asyncio from dataclasses import dataclass -from typing import Any, MutableMapping, TypeVar +from typing import Any, Generic, MutableMapping, TypeVar from typing_extensions import Protocol, runtime_checkable @@ -36,11 +36,25 @@ async def serve_development_app( ) -> None: """Run an application using a development server""" - def use_scope(self) -> MutableMapping[str, Any]: - """Get an ASGI scope or WSGI environment dictionary""" - def use_location(self) -> Location: - """Get the current location (URL)""" +_Carrier = TypeVar("_Carrier") + + +@dataclass +class Connection(Generic[_Carrier]): + """Represents a connection with a client""" + + scope: MutableMapping[str, Any] + """An ASGI scope or WSGI environment dictionary""" + + location: Location + """The current location (URL)""" + + carrier: _Carrier + """How the connection is mediated. For example, a websocket. + + This typically depends on the backend implementation. + """ @dataclass @@ -55,4 +69,7 @@ class Location: """the path of the URL for the location""" search: str = "" - """A search or query string - a '?' followed by the parameters of the URL.""" + """A search or query string - a '?' followed by the parameters of the URL. + + If there are no search parameters this should be an empty string + """ diff --git a/src/idom/types.py b/src/idom/types.py index 80670ea35..ecb5732b7 100644 --- a/src/idom/types.py +++ b/src/idom/types.py @@ -4,7 +4,8 @@ - :mod:`idom.backend.types` """ -from .backend.types import BackendImplementation, Location +from .backend.types import BackendImplementation, Connection, Location +from .core.component import Component from .core.hooks import Context from .core.types import ( ComponentConstructor, @@ -27,8 +28,11 @@ __all__ = [ + "BackendImplementation", + "Component", "ComponentConstructor", "ComponentType", + "Connection", "Context", "EventHandlerDict", "EventHandlerFunc", @@ -45,5 +49,4 @@ "VdomChildren", "VdomDict", "VdomJson", - "BackendImplementation", ] diff --git a/tests/test_backend/test_common.py b/tests/test_backend/test_common.py index cefeaa185..93a40081f 100644 --- a/tests/test_backend/test_common.py +++ b/tests/test_backend/test_common.py @@ -5,7 +5,7 @@ import idom from idom import html from idom.backend import default as default_implementation -from idom.backend.types import Location +from idom.backend.types import Connection, Location from idom.backend.utils import all_implementations from idom.testing import BackendFixture, DisplayFixture, poll @@ -64,12 +64,26 @@ async def test_module_from_template(display: DisplayFixture): await display.page.wait_for_selector(".VictoryContainer") +async def test_use_connection(display: DisplayFixture): + conn = idom.Ref() + + @idom.component + def ShowScope(): + conn.current = idom.use_connection() + return html.pre({"id": "scope"}, str(conn.current)) + + await display.show(ShowScope) + + await display.page.wait_for_selector("#scope") + assert isinstance(conn.current, Connection) + + async def test_use_scope(display: DisplayFixture): scope = idom.Ref() @idom.component def ShowScope(): - scope.current = display.backend.implementation.use_scope() + scope.current = idom.use_scope() return html.pre({"id": "scope"}, str(scope.current)) await display.show(ShowScope) @@ -88,8 +102,8 @@ async def poll_location(): @idom.component def ShowRoute(): - location.current = display.backend.implementation.use_location() - return html.pre({"id": "scope"}, str(location.current)) + location.current = idom.use_location() + return html.pre(str(location.current)) await display.show(ShowRoute) @@ -105,3 +119,24 @@ def ShowRoute(): ]: await display.goto(loc.pathname + loc.search) await poll_location.until_equals(loc) + + +@pytest.mark.parametrize("hook_name", ["use_request", "use_websocket"]) +async def test_use_request(display: DisplayFixture, hook_name): + hook = getattr(display.backend.implementation, hook_name, None) + if hook is None: + pytest.skip(f"{display.backend.implementation} has no '{hook_name}' hook") + + hook_val = idom.Ref() + + @idom.component + def ShowRoute(): + hook_val.current = hook() + return html.pre({"id": "hook"}, str(hook_val.current)) + + await display.show(ShowRoute) + + await display.page.wait_for_selector("#hook") + + # we can't easily narrow this check + assert hook_val.current is not None diff --git a/tests/test_client.py b/tests/test_client.py index ff7d826e2..0e48e3390 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -7,6 +7,7 @@ import idom from idom.backend.utils import find_available_port from idom.testing import BackendFixture, DisplayFixture +from tests.tooling.common import DEFAULT_TYPE_DELAY JS_DIR = Path(__file__).parent / "js" @@ -121,6 +122,6 @@ async def handle_change(event): await display.show(SomeComponent) inp = await display.page.wait_for_selector("#test-input") - await inp.type("hello") + await inp.type("hello", delay=DEFAULT_TYPE_DELAY) assert (await inp.evaluate("node => node.value")) == "hello" diff --git a/tests/test_core/test_events.py b/tests/test_core/test_events.py index 9b8cd2ae0..89f1dfa4c 100644 --- a/tests/test_core/test_events.py +++ b/tests/test_core/test_events.py @@ -8,6 +8,7 @@ to_event_handler_function, ) from idom.testing import DisplayFixture, poll +from tests.tooling.common import DEFAULT_TYPE_DELAY def test_event_handler_repr(): @@ -155,7 +156,7 @@ async def on_key_down(value): await display.show(Input) inp = await display.page.wait_for_selector("#input") - await inp.type("hello") + await inp.type("hello", delay=DEFAULT_TYPE_DELAY) # the default action of updating the element's value did not take place assert (await inp.evaluate("node => node.value")) == "" diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index e0bcba2e7..78fce87a4 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -15,6 +15,7 @@ from idom.testing import DisplayFixture, HookCatcher, assert_idom_did_log, poll from idom.testing.logs import assert_idom_did_not_log from idom.utils import Ref +from tests.tooling.common import DEFAULT_TYPE_DELAY async def test_must_be_rendering_in_layout_to_use_hooks(): @@ -246,7 +247,7 @@ async def on_change(event): await display.show(Input) button = await display.page.wait_for_selector("#input") - await button.type("this is a test") + await button.type("this is a test", delay=DEFAULT_TYPE_DELAY) await display.page.wait_for_selector("#complete") assert message_ref.current == "this is a test" diff --git a/tests/test_widgets.py b/tests/test_widgets.py index b557c8f93..2df28c656 100644 --- a/tests/test_widgets.py +++ b/tests/test_widgets.py @@ -3,6 +3,7 @@ import idom from idom.testing import DisplayFixture, poll +from tests.tooling.common import DEFAULT_TYPE_DELAY HERE = Path(__file__).parent @@ -86,13 +87,13 @@ def SomeComponent(): input_1 = await display.page.wait_for_selector("#i_1") input_2 = await display.page.wait_for_selector("#i_2") - await input_1.type("hello", delay=20) + await input_1.type("hello", delay=DEFAULT_TYPE_DELAY) assert (await input_1.evaluate("e => e.value")) == "hello" assert (await input_2.evaluate("e => e.value")) == "hello" await input_2.focus() - await input_2.type(" world", delay=20) + await input_2.type(" world", delay=DEFAULT_TYPE_DELAY) assert (await input_1.evaluate("e => e.value")) == "hello world" assert (await input_2.evaluate("e => e.value")) == "hello world" @@ -114,14 +115,14 @@ def SomeComponent(): input_1 = await display.page.wait_for_selector("#i_1") input_2 = await display.page.wait_for_selector("#i_2") - await input_1.type("hello", delay=20) + await input_1.type("hello", delay=DEFAULT_TYPE_DELAY) poll_value = poll(lambda: value.current) await poll_value.until_equals("hello") await input_2.focus() - await input_2.type(" world", delay=20) + await input_2.type(" world", delay=DEFAULT_TYPE_DELAY) await poll_value.until_equals("hello world") diff --git a/tests/tooling/common.py b/tests/tooling/common.py new file mode 100644 index 000000000..c995eacde --- /dev/null +++ b/tests/tooling/common.py @@ -0,0 +1,2 @@ +# see: https://github.com/microsoft/playwright-python/issues/1614 +DEFAULT_TYPE_DELAY = 100 # miliseconds From 8ff09d2179e790a581218b62025f3589b276c3bb Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 30 Oct 2022 21:19:15 -0700 Subject: [PATCH 108/253] Vite (#824) * add use_connection hook * remove unused imports * switch to using vite * fix test * fix cov * fix unused imports * check backend route priorities * fix tests * fix warning * fix asyncio deprectation warning * fix type annotation * fix style * strip url prefix from location * remove unused imports * remove default for search --- docs/source/about/changelog.rst | 12 + src/client/{public => }/index.html | 8 +- src/client/package-lock.json | 8419 +++-------------- src/client/package.json | 10 +- .../packages/idom-client-react/src/server.js | 20 +- src/client/snowpack.config.js | 11 - src/client/vite.config.js | 12 + src/idom/backend/_urls.py | 7 + src/idom/backend/default.py | 7 +- src/idom/backend/flask.py | 69 +- src/idom/backend/sanic.py | 52 +- src/idom/backend/starlette.py | 45 +- src/idom/backend/tornado.py | 40 +- src/idom/backend/types.py | 9 +- src/idom/backend/utils.py | 12 +- src/idom/core/layout.py | 2 +- src/idom/testing/display.py | 12 +- tests/test_backend/test_common.py | 29 +- tests/test_backend/test_utils.py | 15 +- tests/test_html.py | 4 +- 20 files changed, 1409 insertions(+), 7386 deletions(-) rename src/client/{public => }/index.html (62%) delete mode 100644 src/client/snowpack.config.js create mode 100644 src/client/vite.config.js create mode 100644 src/idom/backend/_urls.py diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 2940723de..fd5124c17 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -29,6 +29,18 @@ Unreleased implementation specific and are now available as top-level imports. Instead of each backend defining these hooks, backends establish a ``ConnectionContext`` with this information. +- :pull:`824` - IDOM's built-in backend server now expose the following routes: + + - ``/_idom/assets/`` + - ``/_idom/stream/`` + - ``/_idom/modules/`` + - ``//`` + + This should allow the browser to cache static resources. Even if your ``url_prefix`` + is ``/_idom``, your app should still work as expected. Though if you're using + ``idom-router``, IDOM's server routes will always take priority. +- :pull:`824` - Backend implementations now strip any URL prefix in the pathname for + ``use_location``. **Added** diff --git a/src/client/public/index.html b/src/client/index.html similarity index 62% rename from src/client/public/index.html rename to src/client/index.html index 51aa70f39..622ec0a51 100644 --- a/src/client/public/index.html +++ b/src/client/index.html @@ -2,12 +2,16 @@ - + IDOM
- diff --git a/src/client/package-lock.json b/src/client/package-lock.json index bbd6a2acd..1eb01bd0f 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -11,3642 +11,1090 @@ "./packages/*" ], "devDependencies": { - "snowpack": "^3.8.8" + "vite": "^3.1.8" } }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "node_modules/@esbuild/android-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", + "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", + "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.9.0" + "node": ">=12" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "dev": true + "node_modules/abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, - "node_modules/@npmcli/arborist": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", - "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", - "dev": true, - "dependencies": { - "@isaacs/string-locale-compare": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^1.0.2", - "@npmcli/metavuln-calculator": "^1.1.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.1", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.2", - "bin-links": "^2.2.1", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "proc-log": "^1.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "bin": { - "arborist": "bin/index.js" + "acorn": "bin/acorn" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "node": ">=0.4.0" } }, - "node_modules/@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dependencies": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" - }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "engines": { - "node": ">= 10" + "node": ">=0.4.0" } }, - "node_modules/@npmcli/map-workspaces": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", - "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", - "dev": true, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=10" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@npmcli/metavuln-calculator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", - "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", - "dev": true, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dependencies": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" + "safer-buffer": "~2.1.0" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "engines": { - "node": ">=10" + "node": ">=0.8" } }, - "node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", - "dev": true - }, - "node_modules/@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "node_modules/@npmcli/package-json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", - "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "engines": { + "node": "*" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "dependencies": { - "infer-owner": "^1.0.4" - } + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, - "node_modules/@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", - "dev": true, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dependencies": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" + "tweetnacl": "^0.14.3" } }, - "node_modules/@rollup/plugin-commonjs": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", - "integrity": "sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==", - "dev": true, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" + }, + "node_modules/bufferutil": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", + "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" + "node-gyp-build": "^4.3.0" }, "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^2.30.0" + "node": ">=6.14.2" } }, - "node_modules/@rollup/plugin-inject": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", - "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "estree-walker": "^2.0.1", - "magic-string": "^0.25.7" - }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" - } + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "node_modules/@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "@rollup/pluginutils": "^3.0.8" + "delayed-stream": "~1.0.0" }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "engines": { + "node": ">= 0.8" } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", - "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", - "dev": true, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.17.0" + "cssom": "~0.3.6" }, "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "node": ">=8" } }, - "node_modules/@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" + "assert-plus": "^1.0.0" }, - "peerDependencies": { - "rollup": "^1.20.0 || ^2.0.0" + "engines": { + "node": ">=0.10" } }, - "node_modules/@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dependencies": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" }, "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0" + "node": ">=10" } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "node_modules/decimal.js": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", + "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "node": ">=0.4.0" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, + "node_modules/dequal": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", + "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "engines": { - "node": ">= 6" + "node": ">=0.3.1" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "engines": { + "node": ">=8" + } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dependencies": { - "@types/node": "*" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "node_modules/esbuild-android-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", + "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@types/node": "*" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "node_modules/esbuild-android-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", + "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "bin": { - "acorn": "bin/acorn" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "node": ">=12" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/esbuild-darwin-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", + "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.4.0" + "node": ">=12" } }, - "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", + "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.12.0" + "node": ">=12" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/esbuild-freebsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", + "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "debug": "4" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">= 6.0.0" + "node": ">=12" } }, - "node_modules/agent-base/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", + "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "node_modules/agent-base/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "node_modules/esbuild-linux-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", + "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8.0.0" + "node": ">=12" } }, - "node_modules/agentkeepalive/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/esbuild-linux-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", + "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "node_modules/agentkeepalive/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/esbuild-linux-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", + "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "node": ">=12" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/esbuild-linux-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", + "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", + "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", + "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", + "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "node_modules/esbuild-linux-s390x": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", + "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.8" + "node": ">=12" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "node_modules/esbuild-netbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", + "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" + "node": ">=12" } }, - "node_modules/big-integer": { - "version": "1.6.48", + "node_modules/esbuild-openbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", + "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Unlicense", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=0.6" + "node": ">=12" } }, - "node_modules/bin-links": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", - "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", + "node_modules/esbuild-sunos-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", + "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/esbuild-windows-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", + "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "node_modules/bplist-parser": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "big-integer": "^1.6.7" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/esbuild-windows-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", + "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/esbuild-windows-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", + "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" - }, - "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "devOptional": true, - "hasInstallScript": true, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", "dependencies": { - "node-gyp-build": "^4.3.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=6.14.2" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 10" + "node": ">=4" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { - "node": ">=10.6.0" + "node": ">=4.0" } }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "engines": [ + "node >=0.6.0" + ] }, - "node_modules/callsites": { + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-patch": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dev": true, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + "node": ">= 0.12" } }, - "node_modules/cheerio-select": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", - "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "dependencies": { - "css-select": "^4.3.0", - "css-what": "^6.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.3.1", - "domutils": "^2.8.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "assert-plus": "^1.0.0" } }, - "node_modules/chownr": { + "node_modules/har-schema": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/cli-spinners": { - "version": "2.5.0", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "function-bind": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } + "node_modules/htm": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.0.4.tgz", + "integrity": "sha512-VRdvxX3tmrXuT/Ovt59NMp/ORMFi4bceFMDjos1PV4E0mV+5votuID8R60egR9A4U8nLt238R/snlJGz3UYiTQ==" }, - "node_modules/cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", - "dev": true, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dependencies": { - "mkdirp-infer-owner": "^2.0.0" + "whatwg-encoding": "^1.0.5" }, "engines": { "node": ">=10" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8", + "npm": ">=1.3.7" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "color-name": "1.1.3" + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-browser-id": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "bplist-parser": "^0.1.0", - "pify": "^2.3.0", - "untildify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/dequal": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", - "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", - "dev": true, - "dependencies": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "bin": { - "detect": "bin/detect-port", - "detect-port": "bin/detect-port" - }, - "engines": { - "node": ">= 4.2.1" - } - }, - "node_modules/dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", - "dev": true, - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", - "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", - "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esinstall": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/esinstall/-/esinstall-1.1.7.tgz", - "integrity": "sha512-irDsrIF7fZ5BCQEAV5gmH+4nsK6JhnkI9C9VloXdmzJLbM1EcshPw8Ap95UUGc4ZJdzGeOrjV+jgKjQ/Z7Q3pg==", - "dev": true, - "dependencies": { - "@rollup/plugin-commonjs": "^16.0.0", - "@rollup/plugin-inject": "^4.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-node-resolve": "^10.0.0", - "@rollup/plugin-replace": "^2.4.2", - "builtin-modules": "^3.2.0", - "cjs-module-lexer": "^1.2.1", - "es-module-lexer": "^0.6.0", - "execa": "^5.1.1", - "is-valid-identifier": "^2.0.2", - "kleur": "^4.1.1", - "mkdirp": "^1.0.3", - "picomatch": "^2.3.0", - "resolve": "^1.20.0", - "rimraf": "^3.0.0", - "rollup": "~2.37.1", - "rollup-plugin-polyfill-node": "^0.6.2", - "slash": "~3.0.0", - "validate-npm-package-name": "^3.0.0", - "vm2": "^3.9.2" - } - }, - "node_modules/esinstall/node_modules/es-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", - "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", - "dev": true - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-json-patch": { - "version": "3.1.0", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fdir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-5.1.0.tgz", - "integrity": "sha512-IgTtZwL52tx2wqWeuGDzXYTnNsEjNLahZpJw30hCQDyVnoHXwY5acNDnjGImTTL1R0z1PCyLw20VAbE5qLic3Q==", - "dev": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/generic-names": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", - "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", - "dev": true, - "dependencies": { - "loader-utils": "^3.2.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/htm": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/htm/-/htm-3.0.4.tgz", - "integrity": "sha512-VRdvxX3tmrXuT/Ovt59NMp/ORMFi4bceFMDjos1PV4E0mV+5votuID8R60egR9A4U8nLt238R/snlJGz3UYiTQ==" - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/httpie": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/httpie/-/httpie-1.1.2.tgz", - "integrity": "sha512-VQ82oXG95oY1fQw/XecHuvcFBA+lZQ9Vwj1RfLcO8a7HpDd4cc2ukwpJt+TUlFaLUAzZErylxWu6wclJ1rUhUQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/https-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/idom-app-react": { - "resolved": "packages/idom-app-react", - "link": true - }, - "node_modules/idom-client-react": { - "resolved": "packages/idom-client-react", - "link": true - }, - "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-valid-identifier": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-valid-identifier/-/is-valid-identifier-2.0.2.tgz", - "integrity": "sha512-mpS5EGqXOwzXtKAg6I44jIAqeBfntFLxpAth1rrKbxtKyI6LPktyDYpHBI+tHlduhhX/SF26mFXmxQu995QVqg==", - "dev": true, - "dependencies": { - "assert": "^1.4.1" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/jsdom": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", - "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.0.5", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.9", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0", - "ws": "^7.4.4", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stringify-nice": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/jsonschema": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.11.tgz", - "integrity": "sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/just-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", - "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", - "dev": true - }, - "node_modules/just-diff-apply": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", - "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz", - "integrity": "sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "license": "MIT", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/meriyah": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-3.1.6.tgz", - "integrity": "sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg==", - "dev": true, - "engines": { - "node": ">=10.4.0" - } - }, - "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dependencies": { - "mime-db": "1.47.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mri": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", - "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "devOptional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, - "dependencies": { - "semver": "^7.1.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "node_modules/npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", - "dev": true, - "dependencies": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "npm-packlist": "bin/index.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "dependencies": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "node_modules/npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", - "dev": true, - "dependencies": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/idom-app-react": { + "resolved": "packages/idom-app-react", + "link": true }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } + "node_modules/idom-client-react": { + "resolved": "packages/idom-client-react", + "link": true }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { - "boolbase": "^1.0.0" + "has": "^1.0.3" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/number-is-nan": { + "node_modules/is-potential-custom-element-name": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, - "node_modules/object-assign": { - "version": "4.1.1", + "node_modules/js-tokens": { + "version": "4.0.0", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "node_modules/jsdom": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.0.tgz", + "integrity": "sha512-QxZH0nmDTnTTVI0YDm4RUlaUPl5dcyn62G5TMDNfMmTW+J1u1v9gCR8WR+WZ6UghAa7nKJjDOFaI00eMMWvJFQ==", "dependencies": { - "mimic-fn": "^2.1.0" + "abab": "^2.0.5", + "acorn": "^8.0.5", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "html-encoding-sniffer": "^2.0.1", + "is-potential-custom-element-name": "^1.0.0", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "request": "^2.88.2", + "request-promise-native": "^1.0.9", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0", + "ws": "^7.4.4", + "xml-name-validator": "^3.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "node": ">=10" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "canvas": "^2.5.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "node_modules/jsdom/node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dependencies": { - "aggregate-error": "^3.0.0" + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.6.0" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, + "node_modules/kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dependencies": { - "p-finally": "^1.0.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "dev": true, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "peer": true, "dependencies": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { - "pacote": "lib/bin.js" - }, + "loose-envify": "cli.js" + } + }, + "node_modules/mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, + "node_modules/mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dependencies": { - "callsites": "^3.0.0" + "mime-db": "1.47.0" }, "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/parse-conflict-json": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", - "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" + "node_modules/mri": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", + "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==", + "engines": { + "node": ">=4" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" + "node_modules/node-gyp-build": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", + "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", + "optional": true, + "peer": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + "node_modules/nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, + "node_modules/object-assign": { + "version": "4.1.1", + "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "node_modules/periscopic": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-2.0.3.tgz", - "integrity": "sha512-FuCZe61mWxQOJAQFEfmt9FjzebRlcpFz8sFPbyaCKtdusPkMEbA9ey0eARnRav5zAhmXznhaQkKGFAPn7X9NUw==", - "dev": true, - "dependencies": { - "estree-walker": "^2.0.2", - "is-reference": "^1.1.4" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/postcss": { - "version": "8.4.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", - "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", "dev": true, "funding": [ { @@ -3659,7 +1107,7 @@ } ], "dependencies": { - "nanoid": "^3.3.1", + "nanoid": "^3.3.4", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -3667,103 +1115,6 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-modules": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", - "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", - "dev": true, - "dependencies": { - "generic-names": "^4.0.0", - "icss-replace-symbols": "^1.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "node_modules/preact": { "version": "10.7.0", "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", @@ -3789,56 +1140,7 @@ "prettier": "bin-prettier.js" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/proc-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", - "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==", - "dev": true - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/promise-all-reject-late": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/promise-call-limit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", - "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" + "node": ">=10.13.0" } }, "node_modules/prop-types": { @@ -3856,16 +1158,6 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -3887,18 +1179,6 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/react": { "version": "16.14.0", "license": "MIT", @@ -3931,70 +1211,6 @@ "license": "MIT", "peer": true }, - "node_modules/read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", - "dev": true - }, - "node_modules/read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "dev": true, - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, "node_modules/request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -4087,102 +1303,20 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { - "rimraf": "bin.js" + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "2.37.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.37.1.tgz", - "integrity": "sha512-V3ojEeyGeSdrMSuhP3diBb06P+qV4gKQeanbDv+Qh/BZbhdZ7kHV0xAt8Yjk4GFshq/WjO7R4c7DFM20AwTFVQ==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" - } - }, - "node_modules/rollup-plugin-polyfill-node": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.6.2.tgz", - "integrity": "sha512-gMCVuR0zsKq0jdBn8pSXN1Ejsc458k2QsFFvQdbHoM0Pot5hEnck+pBP/FDwFS6uAi77pD3rDTytsaUStsOMlA==", - "dev": true, - "dependencies": { - "@rollup/plugin-inject": "^4.0.0" - } - }, - "node_modules/rollup/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/sade": { @@ -4240,225 +1374,6 @@ "object-assign": "^4.1.1" } }, - "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/skypack": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/skypack/-/skypack-0.3.2.tgz", - "integrity": "sha512-je1pix0QYER6iHuUGbgcafRJT5TI+EGUIBfzBLMqo3Wi22I2SzB9TVHQqwKCw8pzJMuHqhVTFEHc3Ey+ra25Sw==", - "dev": true, - "dependencies": { - "cacache": "^15.0.0", - "cachedir": "^2.3.0", - "esinstall": "^1.0.0", - "etag": "^1.8.1", - "find-up": "^5.0.0", - "got": "^11.1.4", - "kleur": "^4.1.0", - "mkdirp": "^1.0.3", - "p-queue": "^6.2.1", - "rimraf": "^3.0.0", - "rollup": "^2.23.0", - "validate-npm-package-name": "^3.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/snowpack": { - "version": "3.8.8", - "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.8.8.tgz", - "integrity": "sha512-Y/4V8FdzzYpwmJU2TgXRRFytz+GFSliWULK9J5O6C72KyK60w20JKqCdRtVs1S6BuobCedF5vSBD1Gvtm+gsJg==", - "dev": true, - "dependencies": { - "@npmcli/arborist": "^2.6.4", - "bufferutil": "^4.0.2", - "cachedir": "^2.3.0", - "cheerio": "1.0.0-rc.10", - "chokidar": "^3.4.0", - "cli-spinners": "^2.5.0", - "compressible": "^2.0.18", - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "default-browser-id": "^2.0.0", - "detect-port": "^1.3.0", - "es-module-lexer": "^0.3.24", - "esbuild": "~0.9.0", - "esinstall": "^1.1.7", - "estree-walker": "^2.0.2", - "etag": "^1.8.1", - "execa": "^5.1.1", - "fdir": "^5.0.0", - "find-cache-dir": "^3.3.1", - "find-up": "^5.0.0", - "glob": "^7.1.7", - "httpie": "^1.1.2", - "is-plain-object": "^5.0.0", - "is-reference": "^1.2.1", - "isbinaryfile": "^4.0.6", - "jsonschema": "~1.2.5", - "kleur": "^4.1.1", - "magic-string": "^0.25.7", - "meriyah": "^3.1.6", - "mime-types": "^2.1.26", - "mkdirp": "^1.0.3", - "npm-run-path": "^4.0.1", - "open": "^8.2.1", - "pacote": "^11.3.4", - "periscopic": "^2.0.3", - "picomatch": "^2.3.0", - "postcss": "^8.3.5", - "postcss-modules": "^4.0.0", - "resolve": "^1.20.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "rollup": "~2.37.1", - "signal-exit": "^3.0.3", - "skypack": "^0.3.2", - "slash": "~3.0.0", - "source-map": "^0.7.3", - "strip-ansi": "^6.0.0", - "strip-comments": "^2.0.1", - "utf-8-validate": "^5.0.3", - "ws": "^7.3.0", - "yargs-parser": "^20.0.0" - }, - "bin": { - "snowpack": "index.bin.js", - "sp": "index.bin.js" - }, - "engines": { - "node": ">=10.19.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dev": true, - "dependencies": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/socks-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socks-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", @@ -4468,12 +1383,6 @@ "node": ">=0.10.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -4493,18 +1402,6 @@ "node": ">=0.10.0" } }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -4513,138 +1410,23 @@ "node": ">=0.10.0" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", - "dev": true - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, "engines": { - "node": ">= 10" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" + }, "node_modules/totalist": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz", @@ -4678,18 +1460,6 @@ "node": ">=8" } }, - "node_modules/treeverse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", - "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", - "dev": true - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -4717,33 +1487,6 @@ "node": ">= 0.8.0" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -4752,17 +1495,6 @@ "node": ">= 4.0.0" } }, - "node_modules/untildify": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "os-homedir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -4784,8 +1516,9 @@ "version": "5.0.9", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "devOptional": true, "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -4793,27 +1526,6 @@ "node": ">=6.14.2" } }, - "node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -4840,15 +1552,6 @@ "node": ">=8" } }, - "node_modules/validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "dependencies": { - "builtins": "^1.0.3" - } - }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -4862,41 +1565,97 @@ "extsprintf": "^1.2.0" } }, - "node_modules/vm2": { - "version": "3.9.11", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", - "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", + "node_modules/vite": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", + "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" + "esbuild": "^0.15.9", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": "~2.78.0" }, "bin": { - "vm2": "bin/vm2" + "vite": "bin/vite.js" }, "engines": { - "node": ">=6.0" + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/vm2/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "node_modules/vite/node_modules/esbuild": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", + "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", "dev": true, + "hasInstallScript": true, "bin": { - "acorn": "bin/acorn" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/vm2/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.12", + "@esbuild/linux-loong64": "0.15.12", + "esbuild-android-64": "0.15.12", + "esbuild-android-arm64": "0.15.12", + "esbuild-darwin-64": "0.15.12", + "esbuild-darwin-arm64": "0.15.12", + "esbuild-freebsd-64": "0.15.12", + "esbuild-freebsd-arm64": "0.15.12", + "esbuild-linux-32": "0.15.12", + "esbuild-linux-64": "0.15.12", + "esbuild-linux-arm": "0.15.12", + "esbuild-linux-arm64": "0.15.12", + "esbuild-linux-mips64le": "0.15.12", + "esbuild-linux-ppc64le": "0.15.12", + "esbuild-linux-riscv64": "0.15.12", + "esbuild-linux-s390x": "0.15.12", + "esbuild-netbsd-64": "0.15.12", + "esbuild-openbsd-64": "0.15.12", + "esbuild-sunos-64": "0.15.12", + "esbuild-windows-32": "0.15.12", + "esbuild-windows-64": "0.15.12", + "esbuild-windows-arm64": "0.15.12" + } + }, + "node_modules/vite/node_modules/rollup": { + "version": "2.78.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", + "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { - "node": ">=0.4.0" + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/w3c-hr-time": { @@ -4918,12 +1677,6 @@ "node": ">=10" } }, - "node_modules/walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", - "dev": true - }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -4958,30 +1711,6 @@ "node": ">=10" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -4990,24 +1719,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "node_modules/ws": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", @@ -5038,42 +1749,6 @@ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/idom-app-react": { "version": "0.40.2", "license": "MIT", @@ -5082,406 +1757,63 @@ "preact": "^10.7.0" }, "devDependencies": { - "prettier": "^2.5.1" - } - }, - "packages/idom-app-react/node_modules/idom-client-react": { - "resolved": "packages/idom-app-react/packages/idom-client-react", - "link": true - }, - "packages/idom-app-react/packages/idom-client-react": { - "version": "0.0.1", - "dependencies": { - "fast-json-patch": "^3.0.0-1", - "htm": "^3.0.3", - "jsdom": "16.5.0", - "lodash": "^4.17.21", - "prettier": "^2.5.1", - "uvu": "^0.5.1" - } - }, - "packages/idom-client-react": { - "version": "0.40.2", - "license": "MIT", - "dependencies": { - "fast-json-patch": "^3.0.0-1", - "htm": "^3.0.3" - }, - "devDependencies": { - "jsdom": "16.5.0", - "lodash": "^4.17.21", - "prettier": "^2.5.1", - "uvu": "^0.5.1" - }, - "peerDependencies": { - "react": ">=16", - "react-dom": ">=16" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "@isaacs/string-locale-compare": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz", - "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", - "dev": true - }, - "@npmcli/arborist": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", - "integrity": "sha512-CLnD+zXG9oijEEzViimz8fbOoFVb7hoypiaf7p6giJhvYtrxLAyY3cZAMPIFQvsG731+02eMDp3LqVBNo7BaZA==", - "dev": true, - "requires": { - "@isaacs/string-locale-compare": "^1.0.1", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^1.0.2", - "@npmcli/metavuln-calculator": "^1.1.0", - "@npmcli/move-file": "^1.1.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^1.0.1", - "@npmcli/package-json": "^1.0.1", - "@npmcli/run-script": "^1.8.2", - "bin-links": "^2.2.1", - "cacache": "^15.0.3", - "common-ancestor-path": "^1.0.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.1.5", - "npm-pick-manifest": "^6.1.0", - "npm-registry-fetch": "^11.0.0", - "pacote": "^11.3.5", - "parse-conflict-json": "^1.1.1", - "proc-log": "^1.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "ssri": "^8.0.1", - "treeverse": "^1.0.4", - "walk-up-path": "^1.0.0" - } - }, - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - } - }, - "@npmcli/installed-package-contents": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", - "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", - "dev": true, - "requires": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "@npmcli/map-workspaces": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-1.0.4.tgz", - "integrity": "sha512-wVR8QxhyXsFcD/cORtJwGQodeeaDf0OxcHie8ema4VgFeqwYkFsDPnSrIRSytX8xR6nKPAH89WnwTcaU608b/Q==", - "dev": true, - "requires": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^7.1.6", - "minimatch": "^3.0.4", - "read-package-json-fast": "^2.0.1" - } - }, - "@npmcli/metavuln-calculator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/metavuln-calculator/-/metavuln-calculator-1.1.1.tgz", - "integrity": "sha512-9xe+ZZ1iGVaUovBVFI9h3qW+UuECUzhvZPxK9RaEA2mjU26o5D0JloGYWwLYvQELJNmBdQB6rrpuN8jni6LwzQ==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "pacote": "^11.1.11", - "semver": "^7.3.2" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "@npmcli/name-from-folder": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/name-from-folder/-/name-from-folder-1.0.1.tgz", - "integrity": "sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==", - "dev": true - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "@npmcli/package-json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-1.0.1.tgz", - "integrity": "sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.1" - } - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" - } - }, - "@rollup/plugin-commonjs": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-16.0.0.tgz", - "integrity": "sha512-LuNyypCP3msCGVQJ7ki8PqYdpjfEkE/xtFa5DqlF+7IBD0JsfMZ87C58heSwIMint58sAUZbt3ITqOmdQv/dXw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "commondir": "^1.0.1", - "estree-walker": "^2.0.1", - "glob": "^7.1.6", - "is-reference": "^1.2.1", - "magic-string": "^0.25.7", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-inject": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-4.0.4.tgz", - "integrity": "sha512-4pbcU4J/nS+zuHk+c+OL3WtmEQhqxlZ9uqfjQMQDOHOPld7PsCd8k5LWs8h5wjwJN7MgnAn768F2sDxEP4eNFQ==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "estree-walker": "^2.0.1", - "magic-string": "^0.25.7" - } - }, - "@rollup/plugin-json": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", - "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.0.8" - } - }, - "@rollup/plugin-node-resolve": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-10.0.0.tgz", - "integrity": "sha512-sNijGta8fqzwA1VwUEtTvWCx2E7qC70NMsDh4ZG13byAXYigBNZMxALhKUSycBks5gupJdq0lFrKumFrRZ8H3A==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.17.0" - } - }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", - "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" - } - }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", - "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, - "dependencies": { - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true - } - } - }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" + "prettier": "^2.5.1" } }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true + "packages/idom-app-react/node_modules/idom-client-react": { + "resolved": "packages/idom-app-react/packages/idom-client-react", + "link": true }, - "@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" + "packages/idom-app-react/packages/idom-client-react": { + "version": "0.0.1", + "dependencies": { + "fast-json-patch": "^3.0.0-1", + "htm": "^3.0.3", + "jsdom": "16.5.0", + "lodash": "^4.17.21", + "prettier": "^2.5.1", + "uvu": "^0.5.1" } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "requires": { - "@types/node": "*" + "packages/idom-client-react": { + "version": "0.40.2", + "license": "MIT", + "dependencies": { + "fast-json-patch": "^3.0.0-1", + "htm": "^3.0.3" + }, + "devDependencies": { + "jsdom": "16.5.0", + "lodash": "^4.17.21", + "prettier": "^2.5.1", + "uvu": "^0.5.1" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" } - }, - "@types/node": { - "version": "17.0.23", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.23.tgz", - "integrity": "sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + } + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.12.tgz", + "integrity": "sha512-IC7TqIqiyE0MmvAhWkl/8AEzpOtbhRNDo7aph47We1NbE5w2bt/Q+giAhe0YYeVpYnIhGMcuZY92qDK6dQauvA==", "dev": true, - "requires": { - "@types/node": "*" - } + "optional": true }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "@esbuild/linux-loong64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.12.tgz", + "integrity": "sha512-tZEowDjvU7O7I04GYvWQOS4yyP9E/7YlsB0jjw1Ycukgr2ycEzKyIk5tms5WnLBymaewc6VmRKnn5IJWgK4eFw==", "dev": true, - "requires": { - "@types/node": "*" - } + "optional": true }, "abab": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -5501,76 +1833,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" }, - "address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "agentkeepalive": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", - "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -5582,53 +1844,6 @@ "uri-js": "^4.2.2" } }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -5637,16 +1852,6 @@ "safer-buffer": "~2.1.0" } }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -5667,12 +1872,6 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -5681,62 +1880,6 @@ "tweetnacl": "^0.14.3" } }, - "big-integer": { - "version": "1.6.48", - "dev": true - }, - "bin-links": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-2.3.0.tgz", - "integrity": "sha512-JzrOLHLwX2zMqKdyYZjkDgQGT+kHDkIhv2/IK2lJ00qLxV4TmFoHi8drDBb6H5Zrz1YfgHkai4e2MGPqnoUhqA==", - "dev": true, - "requires": { - "cmd-shim": "^4.0.1", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^1.0.0", - "read-cmd-shim": "^2.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^3.0.3" - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "bplist-parser": { - "version": "0.1.1", - "dev": true, - "requires": { - "big-integer": "^1.6.7" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", @@ -5746,214 +1889,17 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", - "devOptional": true, + "optional": true, + "peer": true, "requires": { "node-gyp-build": "^4.3.0" } }, - "builtin-modules": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", - "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", - "dev": true - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", - "dev": true - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } - } - }, - "cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dev": true, - "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - } - }, - "cheerio-select": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", - "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", - "dev": true, - "requires": { - "css-select": "^4.3.0", - "css-what": "^6.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.3.1", - "domutils": "^2.8.0" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-spinners": { - "version": "2.5.0", - "dev": true - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "cmd-shim": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-4.1.0.tgz", - "integrity": "sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw==", - "dev": true, - "requires": { - "mkdirp-infer-owner": "^2.0.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -5962,93 +1908,11 @@ "delayed-stream": "~1.0.0" } }, - "common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -6087,139 +1951,31 @@ "whatwg-url": "^8.0.0" } }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "debuglog": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", - "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", - "dev": true - }, "decimal.js": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==" }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "default-browser-id": { - "version": "2.0.0", - "dev": true, - "requires": { - "bplist-parser": "^0.1.0", - "pify": "^2.3.0", - "untildify": "^2.0.0" - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, "dequal": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz", "integrity": "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" }, - "detect-port": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.3.0.tgz", - "integrity": "sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ==", - "dev": true, - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - } - }, - "dezalgo": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", - "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", - "dev": true, - "requires": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, "diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, "domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", @@ -6235,26 +1991,6 @@ } } }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -6264,81 +2000,145 @@ "safer-buffer": "^2.1.0" } }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "esbuild-android-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.12.tgz", + "integrity": "sha512-MJKXwvPY9g0rGps0+U65HlTsM1wUs9lbjt5CU19RESqycGFDRijMDQsh68MtbzkqWSRdEtiKS1mtPzKneaAI0Q==", "dev": true, - "optional": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } + "optional": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "esbuild-android-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.12.tgz", + "integrity": "sha512-Hc9SEcZbIMhhLcvhr1DH+lrrec9SFTiRzfJ7EGSBZiiw994gfkVV6vG0sLWqQQ6DD7V4+OggB+Hn0IRUdDUqvA==", "dev": true, - "requires": { - "once": "^1.4.0" - } + "optional": true }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true + "esbuild-darwin-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.12.tgz", + "integrity": "sha512-qkmqrTVYPFiePt5qFjP8w/S+GIUMbt6k8qmiPraECUWfPptaPJUGkCKrWEfYFRWB7bY23FV95rhvPyh/KARP8Q==", + "dev": true, + "optional": true }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true + "esbuild-darwin-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.12.tgz", + "integrity": "sha512-z4zPX02tQ41kcXMyN3c/GfZpIjKoI/BzHrdKUwhC/Ki5BAhWv59A9M8H+iqaRbwpzYrYidTybBwiZAIWCLJAkw==", + "dev": true, + "optional": true }, - "err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true + "esbuild-freebsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.12.tgz", + "integrity": "sha512-XFL7gKMCKXLDiAiBjhLG0XECliXaRLTZh6hsyzqUqPUf/PY4C6EJDTKIeqqPKXaVJ8+fzNek88285krSz1QECw==", + "dev": true, + "optional": true }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "esbuild-freebsd-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.12.tgz", + "integrity": "sha512-jwEIu5UCUk6TjiG1X+KQnCGISI+ILnXzIzt9yDVrhjug2fkYzlLbl0K43q96Q3KB66v6N1UFF0r5Ks4Xo7i72g==", "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } + "optional": true }, - "es-module-lexer": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.3.26.tgz", - "integrity": "sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==", - "dev": true + "esbuild-linux-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.12.tgz", + "integrity": "sha512-uSQuSEyF1kVzGzuIr4XM+v7TPKxHjBnLcwv2yPyCz8riV8VUCnO/C4BF3w5dHiVpCd5Z1cebBtZJNlC4anWpwA==", + "dev": true, + "optional": true }, - "esbuild": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.9.7.tgz", - "integrity": "sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==", - "dev": true + "esbuild-linux-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.12.tgz", + "integrity": "sha512-QcgCKb7zfJxqT9o5z9ZUeGH1k8N6iX1Y7VNsEi5F9+HzN1OIx7ESxtQXDN9jbeUSPiRH1n9cw6gFT3H4qbdvcA==", + "dev": true, + "optional": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "esbuild-linux-arm": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.12.tgz", + "integrity": "sha512-Wf7T0aNylGcLu7hBnzMvsTfEXdEdJY/hY3u36Vla21aY66xR0MS5I1Hw8nVquXjTN0A6fk/vnr32tkC/C2lb0A==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.12.tgz", + "integrity": "sha512-HtNq5xm8fUpZKwWKS2/YGwSfTF+339L4aIA8yphNKYJckd5hVdhfdl6GM2P3HwLSCORS++++7++//ApEwXEuAQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.12.tgz", + "integrity": "sha512-Qol3+AvivngUZkTVFgLpb0H6DT+N5/zM3V1YgTkryPYFeUvuT5JFNDR3ZiS6LxhyF8EE+fiNtzwlPqMDqVcc6A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.12.tgz", + "integrity": "sha512-4D8qUCo+CFKaR0cGXtGyVsOI7w7k93Qxb3KFXWr75An0DHamYzq8lt7TNZKoOq/Gh8c40/aKaxvcZnTgQ0TJNg==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.12.tgz", + "integrity": "sha512-G9w6NcuuCI6TUUxe6ka0enjZHDnSVK8bO+1qDhMOCtl7Tr78CcZilJj8SGLN00zO5iIlwNRZKHjdMpfFgNn1VA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.12.tgz", + "integrity": "sha512-Lt6BDnuXbXeqSlVuuUM5z18GkJAZf3ERskGZbAWjrQoi9xbEIsj/hEzVnSAFLtkfLuy2DE4RwTcX02tZFunXww==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.12.tgz", + "integrity": "sha512-jlUxCiHO1dsqoURZDQts+HK100o0hXfi4t54MNRMCAqKGAV33JCVvMplLAa2FwviSojT/5ZG5HUfG3gstwAG8w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.12.tgz", + "integrity": "sha512-1o1uAfRTMIWNOmpf8v7iudND0L6zRBYSH45sofCZywrcf7NcZA+c7aFsS1YryU+yN7aRppTqdUK1PgbZVaB1Dw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.12.tgz", + "integrity": "sha512-nkl251DpoWoBO9Eq9aFdoIt2yYmp4I3kvQjba3jFKlMXuqQ9A4q+JaqdkCouG3DHgAGnzshzaGu6xofGcXyPXg==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.12.tgz", + "integrity": "sha512-WlGeBZHgPC00O08luIp5B2SP4cNCp/PcS+3Pcg31kdcJPopHxLkdCXtadLU9J82LCfw4TVls21A6lilQ9mzHrw==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.12.tgz", + "integrity": "sha512-VActO3WnWZSN//xjSfbiGOSyC+wkZtI8I4KlgrTo5oHJM6z3MZZBCuFaZHd8hzf/W9KPhF0lY8OqlmWC9HO5AA==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.12.tgz", + "integrity": "sha512-Of3MIacva1OK/m4zCNIvBfz8VVROBmQT+gRX6pFTLPngFYcj6TFH/12VveAqq1k9VB2l28EoVMNMUCcmsfwyuA==", + "dev": true, + "optional": true }, "escodegen": { "version": "2.0.0", @@ -6360,42 +2160,6 @@ } } }, - "esinstall": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/esinstall/-/esinstall-1.1.7.tgz", - "integrity": "sha512-irDsrIF7fZ5BCQEAV5gmH+4nsK6JhnkI9C9VloXdmzJLbM1EcshPw8Ap95UUGc4ZJdzGeOrjV+jgKjQ/Z7Q3pg==", - "dev": true, - "requires": { - "@rollup/plugin-commonjs": "^16.0.0", - "@rollup/plugin-inject": "^4.0.2", - "@rollup/plugin-json": "^4.0.0", - "@rollup/plugin-node-resolve": "^10.0.0", - "@rollup/plugin-replace": "^2.4.2", - "builtin-modules": "^3.2.0", - "cjs-module-lexer": "^1.2.1", - "es-module-lexer": "^0.6.0", - "execa": "^5.1.1", - "is-valid-identifier": "^2.0.2", - "kleur": "^4.1.1", - "mkdirp": "^1.0.3", - "picomatch": "^2.3.0", - "resolve": "^1.20.0", - "rimraf": "^3.0.0", - "rollup": "~2.37.1", - "rollup-plugin-polyfill-node": "^0.6.2", - "slash": "~3.0.0", - "validate-npm-package-name": "^3.0.0", - "vm2": "^3.9.2" - }, - "dependencies": { - "es-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", - "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", - "dev": true - } - } - }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -6406,46 +2170,11 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, - "estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -6474,42 +2203,6 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, - "fdir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-5.1.0.tgz", - "integrity": "sha512-IgTtZwL52tx2wqWeuGDzXYTnNsEjNLahZpJw30hCQDyVnoHXwY5acNDnjGImTTL1R0z1PCyLw20VAbE5qLic3Q==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -6525,21 +2218,6 @@ "mime-types": "^2.1.12" } }, - "fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", @@ -6549,54 +2227,8 @@ }, "function-bind": { "version": "1.1.1", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "generic-names": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", - "integrity": "sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==", - "dev": true, - "requires": { - "loader-utils": "^3.2.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "getpass": { @@ -6607,54 +2239,6 @@ "assert-plus": "^1.0.0" } }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, - "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", - "dev": true - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -6663,165 +2247,42 @@ "har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "htm": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/htm/-/htm-3.0.4.tgz", - "integrity": "sha512-VRdvxX3tmrXuT/Ovt59NMp/ORMFi4bceFMDjos1PV4E0mV+5votuID8R60egR9A4U8nLt238R/snlJGz3UYiTQ==" - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" } }, - "http2-wrapper": { + "has": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "function-bind": "^1.1.1" } }, - "httpie": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/httpie/-/httpie-1.1.2.tgz", - "integrity": "sha512-VQ82oXG95oY1fQw/XecHuvcFBA+lZQ9Vwj1RfLcO8a7HpDd4cc2ukwpJt+TUlFaLUAzZErylxWu6wclJ1rUhUQ==", - "dev": true + "htm": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/htm/-/htm-3.0.4.tgz", + "integrity": "sha512-VRdvxX3tmrXuT/Ovt59NMp/ORMFi4bceFMDjos1PV4E0mV+5votuID8R60egR9A4U8nLt238R/snlJGz3UYiTQ==" }, - "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", - "dev": true, + "html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "requires": { - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "whatwg-encoding": "^1.0.5" } }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "dev": true, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "ms": "^2.0.0" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "iconv-lite": { @@ -6832,19 +2293,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, "idom-app-react": { "version": "file:packages/idom-app-react", "requires": { @@ -6877,217 +2325,33 @@ "uvu": "^0.5.1" } }, - "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, "is-core-module": { - "version": "2.2.0", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" } }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true - }, "is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, - "is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "requires": { - "@types/estree": "*" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-valid-identifier": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-valid-identifier/-/is-valid-identifier-2.0.2.tgz", - "integrity": "sha512-mpS5EGqXOwzXtKAg6I44jIAqeBfntFLxpAth1rrKbxtKyI6LPktyDYpHBI+tHlduhhX/SF26mFXmxQu995QVqg==", - "dev": true, - "requires": { - "assert": "^1.4.1" - } - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-tokens": { - "version": "4.0.0" + "version": "4.0.0", + "peer": true }, "jsbn": { "version": "0.1.1", @@ -7134,18 +2398,6 @@ } } }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -7156,29 +2408,11 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, - "json-stringify-nice": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz", - "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==", - "dev": true - }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, - "jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true - }, - "jsonschema": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.11.tgz", - "integrity": "sha512-XNZHs3N1IOa3lPKm//npxMhOdaoPw+MvEV0NIgxcER83GTJcG13rehtWmpBCfEt8DrtYwIkMTs8bdXoYs4fvnQ==", - "dev": true - }, "jsprim": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", @@ -7190,283 +2424,43 @@ "verror": "1.10.0" } }, - "just-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-3.1.1.tgz", - "integrity": "sha512-sdMWKjRq8qWZEjDcVA6llnUT8RDEBIfOiGpYFPYa9u+2c39JCsejktSP7mj5eRid5EIvTzIpQ2kDOCw1Nq9BjQ==", - "dev": true - }, - "just-diff-apply": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/just-diff-apply/-/just-diff-apply-3.1.2.tgz", - "integrity": "sha512-TCa7ZdxCeq6q3Rgms2JCRHTCfWAETPZ8SzYUbkYF6KR3I03sN29DaOIC+xyWboIcMvjAsD5iG2u/RWzHD8XpgQ==", - "dev": true - }, - "keyv": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.1.1.tgz", - "integrity": "sha512-tGv1yP6snQVDSM4X6yxrv2zzq/EvpW+oYiUz6aueW1u9CtS8RzUQYxxmFwgZlO2jSgCxQbchhxaqXXp2hnKGpQ==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", - "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "loose-envify": { - "version": "1.4.0", - "peer": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "meriyah": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-3.1.6.tgz", - "integrity": "sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg==", - "dev": true - }, - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" - }, - "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "requires": { - "mime-db": "1.47.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, - "minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", - "dev": true, - "requires": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" - } + "kleur": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.4.tgz", + "integrity": "sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==" }, - "minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "requires": { - "minipass": "^3.0.0" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" } }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, + "loose-envify": { + "version": "1.4.0", + "peer": true, "requires": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==" }, - "mkdirp-infer-owner": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz", - "integrity": "sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==", - "dev": true, + "mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "requires": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "mime-db": "1.47.0" } }, "mri": { @@ -7474,177 +2468,18 @@ "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.6.tgz", "integrity": "sha512-oi1b3MfbyGa7FJMP9GmLTttni5JoICpYBRlq+x5V16fZbLsnL9N3wFqqIm/nIG43FjUFkFh9Epzp/kzUGUnJxQ==" }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "nanoid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", - "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - } - }, "node-gyp-build": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "devOptional": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, - "npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-install-checks": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "dev": true, - "requires": { - "semver": "^7.1.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true - }, - "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "npm-registry-fetch": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-11.0.0.tgz", - "integrity": "sha512-jmlgSxoDNuhAtxUIG6pVwwtz840i994dL14FoNVZisrmZW5kWd63IUTNv1m/hyRSGSqWjCUp/YZlS1BJyNp9XA==", - "dev": true, - "requires": { - "make-fetch-happen": "^9.0.1", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "optional": true, + "peer": true }, "nwsapi": { "version": "2.2.0", @@ -7657,36 +2492,8 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, "object-assign": { - "version": "4.1.1" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } + "version": "4.1.1", + "peer": true }, "optionator": { "version": "0.8.3", @@ -7701,335 +2508,39 @@ "word-wrap": "~1.2.3" } }, - "os-homedir": { - "version": "1.0.2", - "dev": true - }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - } - }, - "p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "dev": true, - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", - "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", - "dev": true, - "requires": { - "@npmcli/git": "^2.1.0", - "@npmcli/installed-package-contents": "^1.0.6", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.8.2", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^11.0.0", - "promise-retry": "^2.0.1", - "read-package-json-fast": "^2.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.1.0" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-conflict-json": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-conflict-json/-/parse-conflict-json-1.1.1.tgz", - "integrity": "sha512-4gySviBiW5TRl7XHvp1agcS7SOe0KZOjC//71dzZVWJrY9hCrgtvl5v3SyIxCZ4fZF47TxD9nfzmxcx76xmbUw==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "just-diff": "^3.0.1", - "just-diff-apply": "^3.0.0" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, "parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "periscopic": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-2.0.3.tgz", - "integrity": "sha512-FuCZe61mWxQOJAQFEfmt9FjzebRlcpFz8sFPbyaCKtdusPkMEbA9ey0eARnRav5zAhmXznhaQkKGFAPn7X9NUw==", - "dev": true, - "requires": { - "estree-walker": "^2.0.2", - "is-reference": "^1.1.4" - } - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, "postcss": { - "version": "8.4.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", - "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", - "dev": true, - "requires": { - "nanoid": "^3.3.1", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-modules": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz", - "integrity": "sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==", - "dev": true, - "requires": { - "generic-names": "^4.0.0", - "icss-replace-symbols": "^1.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" - } - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "requires": {} - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - }, - "postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "version": "8.4.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", + "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", "dev": true, "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" } }, - "postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "preact": { "version": "10.7.0", "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", @@ -8045,46 +2556,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==" }, - "proc-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-1.0.0.tgz", - "integrity": "sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-all-reject-late": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", - "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==", - "dev": true - }, - "promise-call-limit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-call-limit/-/promise-call-limit-1.0.1.tgz", - "integrity": "sha512-3+hgaa19jzCGLuSCbieeRsu5C2joKfYn8pY6JAuXFRVfF4IO+L7UPpFWNTeWT9pM7uhskvbPPd/oEOktCn317Q==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "requires": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - } - }, "prop-types": { "version": "15.7.2", "peer": true, @@ -8099,16 +2570,6 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -8124,12 +2585,6 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, "react": { "version": "16.14.0", "peer": true, @@ -8153,66 +2608,6 @@ "version": "16.13.1", "peer": true }, - "read-cmd-shim": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz", - "integrity": "sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw==", - "dev": true - }, - "read-package-json-fast": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", - "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "readdir-scoped-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", - "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", - "dev": true, - "requires": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -8286,74 +2681,14 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "resolve": { - "version": "1.20.0", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "responselike": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", - "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "requires": { - "lowercase-keys": "^2.0.0" - } - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rollup": { - "version": "2.37.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.37.1.tgz", - "integrity": "sha512-V3ojEeyGeSdrMSuhP3diBb06P+qV4gKQeanbDv+Qh/BZbhdZ7kHV0xAt8Yjk4GFshq/WjO7R4c7DFM20AwTFVQ==", - "dev": true, - "requires": { - "fsevents": "~2.1.2" - }, - "dependencies": { - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - } - } - }, - "rollup-plugin-polyfill-node": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-polyfill-node/-/rollup-plugin-polyfill-node-0.6.2.tgz", - "integrity": "sha512-gMCVuR0zsKq0jdBn8pSXN1Ejsc458k2QsFFvQdbHoM0Pot5hEnck+pBP/FDwFS6uAi77pD3rDTytsaUStsOMlA==", - "dev": true, - "requires": { - "@rollup/plugin-inject": "^4.0.0" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "sade": { @@ -8390,190 +2725,12 @@ "object-assign": "^4.1.1" } }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "skypack": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/skypack/-/skypack-0.3.2.tgz", - "integrity": "sha512-je1pix0QYER6iHuUGbgcafRJT5TI+EGUIBfzBLMqo3Wi22I2SzB9TVHQqwKCw8pzJMuHqhVTFEHc3Ey+ra25Sw==", - "dev": true, - "requires": { - "cacache": "^15.0.0", - "cachedir": "^2.3.0", - "esinstall": "^1.0.0", - "etag": "^1.8.1", - "find-up": "^5.0.0", - "got": "^11.1.4", - "kleur": "^4.1.0", - "mkdirp": "^1.0.3", - "p-queue": "^6.2.1", - "rimraf": "^3.0.0", - "rollup": "^2.23.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true - }, - "snowpack": { - "version": "3.8.8", - "resolved": "https://registry.npmjs.org/snowpack/-/snowpack-3.8.8.tgz", - "integrity": "sha512-Y/4V8FdzzYpwmJU2TgXRRFytz+GFSliWULK9J5O6C72KyK60w20JKqCdRtVs1S6BuobCedF5vSBD1Gvtm+gsJg==", - "dev": true, - "requires": { - "@npmcli/arborist": "^2.6.4", - "bufferutil": "^4.0.2", - "cachedir": "^2.3.0", - "cheerio": "1.0.0-rc.10", - "chokidar": "^3.4.0", - "cli-spinners": "^2.5.0", - "compressible": "^2.0.18", - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "default-browser-id": "^2.0.0", - "detect-port": "^1.3.0", - "es-module-lexer": "^0.3.24", - "esbuild": "~0.9.0", - "esinstall": "^1.1.7", - "estree-walker": "^2.0.2", - "etag": "^1.8.1", - "execa": "^5.1.1", - "fdir": "^5.0.0", - "find-cache-dir": "^3.3.1", - "find-up": "^5.0.0", - "fsevents": "^2.3.2", - "glob": "^7.1.7", - "httpie": "^1.1.2", - "is-plain-object": "^5.0.0", - "is-reference": "^1.2.1", - "isbinaryfile": "^4.0.6", - "jsonschema": "~1.2.5", - "kleur": "^4.1.1", - "magic-string": "^0.25.7", - "meriyah": "^3.1.6", - "mime-types": "^2.1.26", - "mkdirp": "^1.0.3", - "npm-run-path": "^4.0.1", - "open": "^8.2.1", - "pacote": "^11.3.4", - "periscopic": "^2.0.3", - "picomatch": "^2.3.0", - "postcss": "^8.3.5", - "postcss-modules": "^4.0.0", - "resolve": "^1.20.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "rollup": "~2.37.1", - "signal-exit": "^3.0.3", - "skypack": "^0.3.2", - "slash": "~3.0.0", - "source-map": "^0.7.3", - "strip-ansi": "^6.0.0", - "strip-comments": "^2.0.1", - "utf-8-validate": "^5.0.3", - "ws": "^7.3.0", - "yargs-parser": "^20.0.0" - } - }, - "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -8590,129 +2747,22 @@ "tweetnacl": "~0.14.0" } }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, "totalist": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/totalist/-/totalist-2.0.0.tgz", @@ -8737,18 +2787,6 @@ "punycode": "^2.1.1" } }, - "treeverse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/treeverse/-/treeverse-1.0.4.tgz", - "integrity": "sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==", - "dev": true - }, - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -8770,45 +2808,11 @@ "prelude-ls": "~1.1.2" } }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "requires": { - "unique-slug": "^2.0.0" - } - }, - "unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - }, "universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" }, - "untildify": { - "version": "2.1.0", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -8830,34 +2834,12 @@ "version": "5.0.9", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", - "devOptional": true, + "optional": true, + "peer": true, "requires": { "node-gyp-build": "^4.3.0" } }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -8875,15 +2857,6 @@ "totalist": "^2.0.0" } }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -8894,27 +2867,57 @@ "extsprintf": "^1.2.0" } }, - "vm2": { - "version": "3.9.11", - "resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.11.tgz", - "integrity": "sha512-PFG8iJRSjvvBdisowQ7iVF580DXb1uCIiGaXgm7tynMR1uTBlv7UJlB1zdv5KJ+Tmq1f0Upnj3fayoEOPpCBKg==", + "vite": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.1.8.tgz", + "integrity": "sha512-m7jJe3nufUbuOfotkntGFupinL/fmuTNuQmiVE7cH2IZMuf4UbfbGYMUT3jVWgGYuRVLY9j8NnrRqgw5rr5QTg==", "dev": true, "requires": { - "acorn": "^8.7.0", - "acorn-walk": "^8.2.0" + "esbuild": "^0.15.9", + "fsevents": "~2.3.2", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": "~2.78.0" }, "dependencies": { - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "dev": true + "esbuild": { + "version": "0.15.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.12.tgz", + "integrity": "sha512-PcT+/wyDqJQsRVhaE9uX/Oq4XLrFh0ce/bs2TJh4CSaw9xuvI+xFrH2nAYOADbhQjUgAhNWC5LKoUsakm4dxng==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.12", + "@esbuild/linux-loong64": "0.15.12", + "esbuild-android-64": "0.15.12", + "esbuild-android-arm64": "0.15.12", + "esbuild-darwin-64": "0.15.12", + "esbuild-darwin-arm64": "0.15.12", + "esbuild-freebsd-64": "0.15.12", + "esbuild-freebsd-arm64": "0.15.12", + "esbuild-linux-32": "0.15.12", + "esbuild-linux-64": "0.15.12", + "esbuild-linux-arm": "0.15.12", + "esbuild-linux-arm64": "0.15.12", + "esbuild-linux-mips64le": "0.15.12", + "esbuild-linux-ppc64le": "0.15.12", + "esbuild-linux-riscv64": "0.15.12", + "esbuild-linux-s390x": "0.15.12", + "esbuild-netbsd-64": "0.15.12", + "esbuild-openbsd-64": "0.15.12", + "esbuild-sunos-64": "0.15.12", + "esbuild-windows-32": "0.15.12", + "esbuild-windows-64": "0.15.12", + "esbuild-windows-arm64": "0.15.12" + } }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true + "rollup": { + "version": "2.78.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.78.1.tgz", + "integrity": "sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } } } }, @@ -8934,12 +2937,6 @@ "xml-name-validator": "^3.0.0" } }, - "walk-up-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", - "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", - "dev": true - }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -8968,47 +2965,11 @@ "webidl-conversions": "^6.1.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, "ws": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", @@ -9024,30 +2985,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true } } } diff --git a/src/client/package.json b/src/client/package.json index a956f8ab8..4da909e0f 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -1,14 +1,11 @@ { - "devDependencies": { - "snowpack": "^3.8.8" - }, "license": "MIT", "repository": { "type": "git", "url": "https://github.com/idom-team/idom" }, "scripts": { - "build": "snowpack build", + "build": "vite build", "check-format": "npm --workspaces run check-format", "format": "npm --workspaces run format", "publish": "npm --workspaces publish", @@ -17,5 +14,8 @@ "version": "0.40.2", "workspaces": [ "./packages/*" - ] + ], + "devDependencies": { + "vite": "^3.1.8" + } } diff --git a/src/client/packages/idom-client-react/src/server.js b/src/client/packages/idom-client-react/src/server.js index 7531802fb..b9925f4d5 100644 --- a/src/client/packages/idom-client-react/src/server.js +++ b/src/client/packages/idom-client-react/src/server.js @@ -25,26 +25,22 @@ export function mountWithLayoutServer( } export function LayoutServerInfo({ host, port, path, query, secure }) { - const wsProtocol = "ws" + (secure ? "s" : ""); - const httpProtocol = "http" + (secure ? "s" : ""); + const wsProtocol = `ws${secure ? "s" : ""}`; + const wsBaseUrl = `${wsProtocol}://${host}:${port}`; - let url = host + ":" + port + (path || new URL(document.baseURI).pathname); - - if (url.endsWith("/")) { - url = url.slice(0, -1); + let pathName = path || new URL(document.baseURI).pathname; + if (pathName.endsWith("/")) { + pathName = pathName.slice(0, -1); } - const wsBaseUrl = wsProtocol + "://" + url; - const httpBaseUrl = httpProtocol + "://" + url; - if (query) { - query = "?" + query; + query = `?${query}`; } else { query = ""; } this.path = { - stream: wsBaseUrl + "/_api/stream" + query, - module: (source) => httpBaseUrl + `/_api/modules/${source}`, + stream: `${wsBaseUrl}/_idom/stream${pathName}${query}`, + module: (source) => `/_idom/modules/${source}`, }; } diff --git a/src/client/snowpack.config.js b/src/client/snowpack.config.js deleted file mode 100644 index 5076548e2..000000000 --- a/src/client/snowpack.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - workspaceRoot: false, - testOptions: { files: ["**/tests/**/*", "**/*.test.*"] }, - buildOptions: { out: "../idom/_client" }, - mount: { public: { url: "/", static: true } }, - optimize: { bundle: true, target: "es2018" }, - alias: { - react: "preact/compat", - "react-dom": "preact/compat", - }, -}; diff --git a/src/client/vite.config.js b/src/client/vite.config.js new file mode 100644 index 000000000..bbcb8ed43 --- /dev/null +++ b/src/client/vite.config.js @@ -0,0 +1,12 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { outDir: "../idom/_client", emptyOutDir: true }, + resolve: { + alias: { + react: "preact/compat", + "react-dom": "preact/compat", + }, + }, + base: "/_idom", +}); diff --git a/src/idom/backend/_urls.py b/src/idom/backend/_urls.py new file mode 100644 index 000000000..c2523f3d7 --- /dev/null +++ b/src/idom/backend/_urls.py @@ -0,0 +1,7 @@ +from pathlib import PurePosixPath + + +PATH_PREFIX = PurePosixPath("/_idom") +MODULES_PATH = PATH_PREFIX / "modules" +ASSETS_PATH = PATH_PREFIX / "assets" +STREAM_PATH = PATH_PREFIX / "stream" diff --git a/src/idom/backend/default.py b/src/idom/backend/default.py index 1f8db0126..c874f50ab 100644 --- a/src/idom/backend/default.py +++ b/src/idom/backend/default.py @@ -1,7 +1,7 @@ from __future__ import annotations import asyncio -from typing import Any +from typing import Any, NoReturn from idom.types import RootComponentConstructor @@ -23,6 +23,11 @@ def create_development_app() -> Any: return _default_implementation().create_development_app() +def Options(*args: Any, **kwargs: Any) -> NoReturn: + """Create configuration options""" + raise ValueError("Default implementation has no options.") # pragma: no cover + + async def serve_development_app( app: Any, host: str, diff --git a/src/idom/backend/flask.py b/src/idom/backend/flask.py index 56db466b4..7a7e18c8d 100644 --- a/src/idom/backend/flask.py +++ b/src/idom/backend/flask.py @@ -33,7 +33,12 @@ from idom.core.types import ComponentType, RootComponentConstructor from idom.utils import Ref -from .utils import safe_client_build_dir_path, safe_web_modules_dir_path +from ._urls import ASSETS_PATH, MODULES_PATH, PATH_PREFIX, STREAM_PATH +from .utils import ( + CLIENT_BUILD_DIR, + safe_client_build_dir_path, + safe_web_modules_dir_path, +) logger = logging.getLogger(__name__) @@ -50,14 +55,15 @@ def configure( options: Options for configuring server behavior """ options = options or Options() - blueprint = Blueprint("idom", __name__, url_prefix=options.url_prefix) - # this route should take priority so set up it up first - _setup_single_view_dispatcher_route(blueprint, options, component) + api_bp = Blueprint(f"idom_api_{id(app)}", __name__, url_prefix=str(PATH_PREFIX)) + spa_bp = Blueprint(f"idom_spa_{id(app)}", __name__, url_prefix=options.url_prefix) - _setup_common_routes(blueprint, options) + _setup_single_view_dispatcher_route(api_bp, options, component) + _setup_common_routes(api_bp, spa_bp, options) - app.register_blueprint(blueprint) + app.register_blueprint(api_bp) + app.register_blueprint(spa_bp) def create_development_app() -> Flask: @@ -74,7 +80,7 @@ async def serve_development_app( started: asyncio.Event | None = None, ) -> None: """Run an application using a development server""" - loop = asyncio.get_event_loop() + loop = asyncio.get_running_loop() stopped = asyncio.Event() server: Ref[BaseWSGIServer] = Ref() @@ -144,32 +150,36 @@ class Options: """The URL prefix where IDOM resources will be served from""" -def _setup_common_routes(blueprint: Blueprint, options: Options) -> None: +def _setup_common_routes( + api_blueprint: Blueprint, + spa_blueprint: Blueprint, + options: Options, +) -> None: cors_options = options.cors if cors_options: # pragma: no cover cors_params = cors_options if isinstance(cors_options, dict) else {} - CORS(blueprint, **cors_params) + CORS(api_blueprint, **cors_params) if options.serve_static_files: - @blueprint.route("/") - @blueprint.route("/") - def send_client_dir(path: str = "") -> Any: - return send_file(safe_client_build_dir_path(path)) - - @blueprint.route(r"/_api/modules/") - @blueprint.route(r"/_api/modules/") - def send_modules_dir( - path: str, - _: str = "", # this is not used - ) -> Any: + @api_blueprint.route(f"/{ASSETS_PATH.name}/") + def send_assets_dir(path: str = "") -> Any: + return send_file(safe_client_build_dir_path(f"assets/{path}")) + + @api_blueprint.route(f"/{MODULES_PATH.name}/") + def send_modules_dir(path: str = "") -> Any: return send_file(safe_web_modules_dir_path(path)) + @spa_blueprint.route("/") + @spa_blueprint.route("/") + def send_client_dir(_: str = "") -> Any: + return send_file(CLIENT_BUILD_DIR / "index.html") + def _setup_single_view_dispatcher_route( - blueprint: Blueprint, options: Options, constructor: RootComponentConstructor + api_blueprint: Blueprint, options: Options, constructor: RootComponentConstructor ) -> None: - sock = Sock(blueprint) + sock = Sock(api_blueprint) def model_stream(ws: WebSocket, path: str = "") -> None: def send(value: Any) -> None: @@ -178,10 +188,17 @@ def send(value: Any) -> None: def recv() -> LayoutEvent: return LayoutEvent(**json.loads(ws.receive())) - _dispatch_in_thread(ws, path, constructor(), send, recv) + _dispatch_in_thread( + ws, + # remove any url prefix from path + path[len(options.url_prefix) :], + constructor(), + send, + recv, + ) - sock.route("/_api/stream", endpoint="without_path")(model_stream) - sock.route("//_api/stream", endpoint="with_path")(model_stream) + sock.route(STREAM_PATH.name, endpoint="without_path")(model_stream) + sock.route(f"{STREAM_PATH.name}/", endpoint="with_path")(model_stream) def _dispatch_in_thread( @@ -228,7 +245,7 @@ async def main() -> None: recv_coro, ) - main_future = asyncio.ensure_future(main()) + main_future = asyncio.ensure_future(main(), loop=loop) dispatch_thread_info_ref.current = _DispatcherThreadInfo( dispatch_loop=loop, diff --git a/src/idom/backend/sanic.py b/src/idom/backend/sanic.py index 1a58c5d1c..a18b2cc66 100644 --- a/src/idom/backend/sanic.py +++ b/src/idom/backend/sanic.py @@ -25,9 +25,14 @@ from idom.core.types import RootComponentConstructor from ._asgi import serve_development_asgi +from ._urls import ASSETS_PATH, MODULES_PATH, PATH_PREFIX, STREAM_PATH from .hooks import ConnectionContext from .hooks import use_connection as _use_connection -from .utils import safe_client_build_dir_path, safe_web_modules_dir_path +from .utils import ( + CLIENT_BUILD_DIR, + safe_client_build_dir_path, + safe_web_modules_dir_path, +) logger = logging.getLogger(__name__) @@ -38,14 +43,14 @@ def configure( ) -> None: """Configure an application instance to display the given component""" options = options or Options() - blueprint = Blueprint(f"idom_dispatcher_{id(app)}", url_prefix=options.url_prefix) - _setup_common_routes(blueprint, options) + spa_bp = Blueprint(f"idom_spa_{id(app)}", url_prefix=options.url_prefix) + api_bp = Blueprint(f"idom_api_{id(app)}", url_prefix=str(PATH_PREFIX)) - # this route should take priority so set up it up first - _setup_single_view_dispatcher_route(blueprint, component) + _setup_common_routes(api_bp, spa_bp, options) + _setup_single_view_dispatcher_route(api_bp, component, options) - app.blueprint(blueprint) + app.blueprint([spa_bp, api_bp]) def create_development_app() -> Sanic: @@ -101,23 +106,35 @@ class Options: """The URL prefix where IDOM resources will be served from""" -def _setup_common_routes(blueprint: Blueprint, options: Options) -> None: +def _setup_common_routes( + api_blueprint: Blueprint, + spa_blueprint: Blueprint, + options: Options, +) -> None: cors_options = options.cors if cors_options: # pragma: no cover cors_params = cors_options if isinstance(cors_options, dict) else {} - CORS(blueprint, **cors_params) + CORS(api_blueprint, **cors_params) if options.serve_static_files: async def single_page_app_files( + request: request.Request, + _: str = "", + ) -> response.HTTPResponse: + return await response.file(CLIENT_BUILD_DIR / "index.html") + + spa_blueprint.add_route(single_page_app_files, "/") + spa_blueprint.add_route(single_page_app_files, "/<_:path>") + + async def asset_files( request: request.Request, path: str = "", ) -> response.HTTPResponse: path = urllib_parse.unquote(path) - return await response.file(safe_client_build_dir_path(path)) + return await response.file(safe_client_build_dir_path(f"assets/{path}")) - blueprint.add_route(single_page_app_files, "/") - blueprint.add_route(single_page_app_files, "/") + api_blueprint.add_route(asset_files, f"/{ASSETS_PATH.name}/") async def web_module_files( request: request.Request, @@ -130,12 +147,13 @@ async def web_module_files( mime_type="text/javascript", ) - blueprint.add_route(web_module_files, "/_api/modules/") - blueprint.add_route(web_module_files, "/<_:path>/_api/modules/") + api_blueprint.add_route(web_module_files, f"/{MODULES_PATH.name}/") def _setup_single_view_dispatcher_route( - blueprint: Blueprint, constructor: RootComponentConstructor + api_blueprint: Blueprint, + constructor: RootComponentConstructor, + options: Options, ) -> None: async def model_stream( request: request.Request, socket: WebSocketConnection, path: str = "" @@ -157,7 +175,7 @@ async def model_stream( value=Connection( scope=scope, location=Location( - pathname=f"/{path}", + pathname=f"/{path[len(options.url_prefix):]}", search=( f"?{request.query_string}" if request.query_string @@ -172,8 +190,8 @@ async def model_stream( recv, ) - blueprint.add_websocket_route(model_stream, "/_api/stream") - blueprint.add_websocket_route(model_stream, "//_api/stream") + api_blueprint.add_websocket_route(model_stream, f"/{STREAM_PATH.name}") + api_blueprint.add_websocket_route(model_stream, f"/{STREAM_PATH.name}//") def _make_send_recv_callbacks( diff --git a/src/idom/backend/starlette.py b/src/idom/backend/starlette.py index c5c622979..ed1bc10da 100644 --- a/src/idom/backend/starlette.py +++ b/src/idom/backend/starlette.py @@ -4,12 +4,13 @@ import json import logging from dataclasses import dataclass -from typing import Any, Awaitable, Callable, Dict, Tuple, Union +from typing import Any, Dict, Tuple, Union from starlette.applications import Starlette from starlette.middleware.cors import CORSMiddleware +from starlette.requests import Request +from starlette.responses import FileResponse from starlette.staticfiles import StaticFiles -from starlette.types import Receive, Scope, Send from starlette.websockets import WebSocket, WebSocketDisconnect from idom.backend.hooks import ConnectionContext @@ -25,9 +26,10 @@ from idom.core.types import RootComponentConstructor from ._asgi import serve_development_asgi +from ._urls import ASSETS_PATH, MODULES_PATH, STREAM_PATH from .hooks import ConnectionContext from .hooks import use_connection as _use_connection -from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path +from .utils import CLIENT_BUILD_DIR logger = logging.getLogger(__name__) @@ -113,41 +115,34 @@ def _setup_common_routes(options: Options, app: Starlette) -> None: url_prefix = options.url_prefix if options.serve_static_files: - wm_dir = IDOM_WEB_MODULES_DIR.current - web_module_files = StaticFiles(directory=wm_dir, check_dir=False) - app.mount(url_prefix + "/_api/modules", web_module_files) - app.mount(url_prefix + "/{_:path}/_api/modules", web_module_files) - + app.mount( + str(MODULES_PATH), + StaticFiles(directory=IDOM_WEB_MODULES_DIR.current, check_dir=False), + ) + app.mount( + str(ASSETS_PATH), + StaticFiles(directory=CLIENT_BUILD_DIR / "assets", check_dir=False), + ) # register this last so it takes least priority - app.mount(url_prefix + "/", single_page_app_files()) - - -def single_page_app_files() -> Callable[..., Awaitable[None]]: - static_files_app = StaticFiles( - directory=CLIENT_BUILD_DIR, - html=True, - check_dir=False, - ) + app.add_route(url_prefix + "/", serve_index) + app.add_route(url_prefix + "/{path:path}", serve_index) - async def spa_app(scope: Scope, receive: Receive, send: Send) -> None: - # Path safety is the responsibility of starlette.staticfiles.StaticFiles - - # using `safe_client_build_dir_path` is for convenience in this case. - path = safe_client_build_dir_path(scope["path"]).name - return await static_files_app({**scope, "path": path}, receive, send) - return spa_app +async def serve_index(request: Request) -> FileResponse: + return FileResponse(CLIENT_BUILD_DIR / "index.html") def _setup_single_view_dispatcher_route( options: Options, app: Starlette, constructor: RootComponentConstructor ) -> None: - @app.websocket_route(options.url_prefix + "/_api/stream") - @app.websocket_route(options.url_prefix + "/{path:path}/_api/stream") + @app.websocket_route(str(STREAM_PATH)) + @app.websocket_route(f"{STREAM_PATH}/{{path:path}}") async def model_stream(socket: WebSocket) -> None: await socket.accept() send, recv = _make_send_recv_callbacks(socket) pathname = "/" + socket.scope["path_params"].get("path", "") + pathname = pathname[len(options.url_prefix) :] or "/" search = socket.scope["query_string"].decode() try: diff --git a/src/idom/backend/tornado.py b/src/idom/backend/tornado.py index c70c07f51..0af4bfb0d 100644 --- a/src/idom/backend/tornado.py +++ b/src/idom/backend/tornado.py @@ -22,9 +22,10 @@ from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.core.types import ComponentConstructor +from ._urls import ASSETS_PATH, MODULES_PATH, STREAM_PATH from .hooks import ConnectionContext from .hooks import use_connection as _use_connection -from .utils import CLIENT_BUILD_DIR, safe_client_build_dir_path +from .utils import CLIENT_BUILD_DIR def configure( @@ -45,7 +46,7 @@ def configure( options, ( # this route should take priority so set up it up first - _setup_single_view_dispatcher_route(component) + _setup_single_view_dispatcher_route(component, options) + _setup_common_routes(options) ), ) @@ -74,7 +75,7 @@ async def serve_development_app( try: # block forever - tornado has already set up its own background tasks - await asyncio.get_event_loop().create_future() + await asyncio.get_running_loop().create_future() finally: # stop accepting new connections server.stop() @@ -117,12 +118,20 @@ def _setup_common_routes(options: Options) -> _RouteHandlerSpecs: if options.serve_static_files: handlers.append( ( - r"/.*/?_api/modules/(.*)", + rf"{MODULES_PATH}/(.*)", StaticFileHandler, {"path": str(IDOM_WEB_MODULES_DIR.current)}, ) ) + handlers.append( + ( + rf"{ASSETS_PATH}/(.*)", + StaticFileHandler, + {"path": str(CLIENT_BUILD_DIR / "assets")}, + ) + ) + # register last to give lowest priority handlers.append( ( @@ -146,27 +155,25 @@ def _add_handler( def _setup_single_view_dispatcher_route( - constructor: ComponentConstructor, + constructor: ComponentConstructor, options: Options ) -> _RouteHandlerSpecs: return [ ( - r"/(.*)/_api/stream", + rf"{STREAM_PATH}/(.*)", ModelStreamHandler, - {"component_constructor": constructor}, + {"component_constructor": constructor, "url_prefix": options.url_prefix}, ), ( - r"/_api/stream", + str(STREAM_PATH), ModelStreamHandler, - {"component_constructor": constructor}, + {"component_constructor": constructor, "url_prefix": options.url_prefix}, ), ] class SpaStaticFileHandler(StaticFileHandler): - async def get(self, path: str, include_body: bool = True) -> None: - # Path safety is the responsibility of tornado.web.StaticFileHandler - - # using `safe_client_build_dir_path` is for convenience in this case. - return await super().get(safe_client_build_dir_path(path).name, include_body) + async def get(self, _: str, include_body: bool = True) -> None: + return await super().get(str(CLIENT_BUILD_DIR / "index.html"), include_body) class ModelStreamHandler(WebSocketHandler): @@ -175,8 +182,11 @@ class ModelStreamHandler(WebSocketHandler): _dispatch_future: Future[None] _message_queue: AsyncQueue[str] - def initialize(self, component_constructor: ComponentConstructor) -> None: + def initialize( + self, component_constructor: ComponentConstructor, url_prefix: str + ) -> None: self._component_constructor = component_constructor + self._url_prefix = url_prefix async def open(self, path: str = "", *args: Any, **kwargs: Any) -> None: message_queue: "AsyncQueue[str]" = AsyncQueue() @@ -196,7 +206,7 @@ async def recv() -> LayoutEvent: value=Connection( scope=WSGIContainer.environ(self.request), location=Location( - pathname=f"/{path}", + pathname=f"/{path[len(self._url_prefix):]}", search=( f"?{self.request.query}" if self.request.query diff --git a/src/idom/backend/types.py b/src/idom/backend/types.py index 7ecf43350..2e7826fae 100644 --- a/src/idom/backend/types.py +++ b/src/idom/backend/types.py @@ -2,7 +2,7 @@ import asyncio from dataclasses import dataclass -from typing import Any, Generic, MutableMapping, TypeVar +from typing import Any, Callable, Generic, MutableMapping, TypeVar from typing_extensions import Protocol, runtime_checkable @@ -16,6 +16,9 @@ class BackendImplementation(Protocol[_App]): """Common interface for built-in web server/framework integrations""" + Options: Callable[..., Any] + """A constructor for options passed to :meth:`BackendImplementation.configure`""" + def configure( self, app: _App, @@ -51,7 +54,7 @@ class Connection(Generic[_Carrier]): """The current location (URL)""" carrier: _Carrier - """How the connection is mediated. For example, a websocket. + """How the connection is mediated. For example, a request or websocket. This typically depends on the backend implementation. """ @@ -68,7 +71,7 @@ class Location: pathname: str """the path of the URL for the location""" - search: str = "" + search: str """A search or query string - a '?' followed by the parameters of the URL. If there are no search parameters this should be an empty string diff --git a/src/idom/backend/utils.py b/src/idom/backend/utils.py index 35e4e75dd..a3c5ee51a 100644 --- a/src/idom/backend/utils.py +++ b/src/idom/backend/utils.py @@ -53,17 +53,15 @@ def run( f"Running with {app_cls.__module__}.{app_cls.__name__} at http://{host}:{port}" ) - asyncio.get_event_loop().run_until_complete( - implementation.serve_development_app(app, host, port) - ) + asyncio.run(implementation.serve_development_app(app, host, port)) def safe_client_build_dir_path(path: str) -> Path: """Prevent path traversal out of :data:`CLIENT_BUILD_DIR`""" - start, _, end = (path[:-1] if path.endswith("/") else path).rpartition("/") - file = end or start - final_path = traversal_safe_path(CLIENT_BUILD_DIR, file) - return final_path if final_path.is_file() else (CLIENT_BUILD_DIR / "index.html") + return traversal_safe_path( + CLIENT_BUILD_DIR, + *("index.html" if path in ("", "/") else path).split("/"), + ) def safe_web_modules_dir_path(path: str) -> Path: diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 5f7d667ad..38bdd6490 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -716,7 +716,7 @@ class _ThreadSafeQueue(Generic[_Type]): __slots__ = "_loop", "_queue", "_pending" def __init__(self) -> None: - self._loop = asyncio.get_event_loop() + self._loop = asyncio.get_running_loop() self._queue: asyncio.Queue[_Type] = asyncio.Queue() self._pending: Set[_Type] = set() diff --git a/src/idom/testing/display.py b/src/idom/testing/display.py index 5e315111e..fa96c93c2 100644 --- a/src/idom/testing/display.py +++ b/src/idom/testing/display.py @@ -27,6 +27,7 @@ def __init__( self, backend: BackendFixture | None = None, driver: Browser | BrowserContext | Page | None = None, + url_prefix: str = "", ) -> None: if backend is not None: self.backend = backend @@ -35,6 +36,7 @@ def __init__( self.page = driver else: self._browser = driver + self.url_prefix = url_prefix async def show( self, @@ -44,8 +46,14 @@ async def show( await self.goto("/") await self.root_element() # check that root element is attached - async def goto(self, path: str, query: Any | None = None) -> None: - await self.page.goto(self.backend.url(path, query)) + async def goto( + self, path: str, query: Any | None = None, add_url_prefix: bool = True + ) -> None: + await self.page.goto( + self.backend.url( + f"{self.url_prefix}{path}" if add_url_prefix else path, query + ) + ) async def root_element(self) -> ElementHandle: element = await self.page.wait_for_selector("#app", state="attached") diff --git a/tests/test_backend/test_common.py b/tests/test_backend/test_common.py index 93a40081f..f0856b209 100644 --- a/tests/test_backend/test_common.py +++ b/tests/test_backend/test_common.py @@ -5,7 +5,8 @@ import idom from idom import html from idom.backend import default as default_implementation -from idom.backend.types import Connection, Location +from idom.backend._urls import PATH_PREFIX +from idom.backend.types import BackendImplementation, Connection, Location from idom.backend.utils import all_implementations from idom.testing import BackendFixture, DisplayFixture, poll @@ -16,8 +17,22 @@ scope="module", ) async def display(page, request): - async with BackendFixture(implementation=request.param) as server: - async with DisplayFixture(backend=server, driver=page) as display: + imp: BackendImplementation = request.param + + # we do this to check that route priorities for each backend are correct + if imp is default_implementation: + url_prefix = "" + opts = None + else: + url_prefix = str(PATH_PREFIX) + opts = imp.Options(url_prefix=url_prefix) + + async with BackendFixture(implementation=imp, options=opts) as server: + async with DisplayFixture( + backend=server, + driver=page, + url_prefix=url_prefix, + ) as display: yield display @@ -110,10 +125,10 @@ def ShowRoute(): await poll_location.until_equals(Location("/", "")) for loc in [ - Location("/something"), - Location("/something/file.txt"), - Location("/another/something"), - Location("/another/something/file.txt"), + Location("/something", ""), + Location("/something/file.txt", ""), + Location("/another/something", ""), + Location("/another/something/file.txt", ""), Location("/another/something/file.txt", "?key=value"), Location("/another/something/file.txt", "?key1=value1&key2=value2"), ]: diff --git a/tests/test_backend/test_utils.py b/tests/test_backend/test_utils.py index 4820b6031..b55cdd990 100644 --- a/tests/test_backend/test_utils.py +++ b/tests/test_backend/test_utils.py @@ -1,4 +1,3 @@ -import asyncio import threading import time from contextlib import ExitStack @@ -11,7 +10,6 @@ from idom.backend.utils import run as sync_run from idom.backend.utils import traversal_safe_path from idom.sample import SampleApp as SampleApp -from tests.tooling.loop import open_event_loop @pytest.fixture @@ -28,22 +26,19 @@ def test_find_available_port(): async def test_run(page: Page, exit_stack: ExitStack): - loop = exit_stack.enter_context(open_event_loop(as_current=False)) - host = "127.0.0.1" port = find_available_port(host) url = f"http://{host}:{port}" - def run_in_thread(): - asyncio.set_event_loop(loop) - sync_run( + threading.Thread( + target=lambda: sync_run( SampleApp, host, port, implementation=flask_implementation, - ) - - threading.Thread(target=run_in_thread, daemon=True).start() + ), + daemon=True, + ).start() # give the server a moment to start time.sleep(0.5) diff --git a/tests/test_html.py b/tests/test_html.py index 269e9e5a7..794a16474 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -103,7 +103,9 @@ def HasScript(): return html.div( html.div({"id": "run-count", "data-value": 0}), html.script( - {"src": f"/_api/modules/{file_name_template.format(src_id=src_id)}"} + { + "src": f"/_idom/modules/{file_name_template.format(src_id=src_id)}" + } ), ) From 77e7f98fd6479bba54c55a55b0113eb78754c3ca Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 1 Nov 2022 23:34:19 -0700 Subject: [PATCH 109/253] define state as a generic named tuple (#827) * define state as a generic named tuple * changelog entry --- docs/source/about/changelog.rst | 22 +++++++ src/idom/core/hooks.py | 101 +++++++++++++------------------- src/idom/core/types.py | 18 ++++++ src/idom/types.py | 2 + tests/test_core/test_hooks.py | 16 +++++ 5 files changed, 100 insertions(+), 59 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index fd5124c17..ebc945e05 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -41,6 +41,28 @@ Unreleased ``idom-router``, IDOM's server routes will always take priority. - :pull:`824` - Backend implementations now strip any URL prefix in the pathname for ``use_location``. +- :pull:`827` - ``use_state`` now returns a named tuple with ``value`` and ``set_value`` + fields. This is convenient for adding type annotations if the initial state value is + not the same as the values you might pass to the state setter. Where previously you + might have to do something like: + + .. code-block:: + + value: int | None = None + value, set_value = use_state(value) + + Now you can annotate your state using the ``State`` class: + + .. code-block:: + + state: State[int | None] = use_state(None) + + # access value and setter + state.value + state.set_value + + # can still destructure if you need to + value, set_value = state **Added** diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index 428f9a963..a1353f090 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -26,7 +26,7 @@ from idom.utils import Ref from ._thread_local import ThreadLocal -from .types import ComponentType, Key, VdomDict +from .types import ComponentType, Key, State, VdomDict from .vdom import vdom @@ -46,35 +46,20 @@ logger = getLogger(__name__) -_StateType = TypeVar("_StateType") +_Type = TypeVar("_Type") @overload -def use_state( - initial_value: Callable[[], _StateType], -) -> Tuple[ - _StateType, - Callable[[_StateType | Callable[[_StateType], _StateType]], None], -]: +def use_state(initial_value: Callable[[], _Type]) -> State[_Type]: ... @overload -def use_state( - initial_value: _StateType, -) -> Tuple[ - _StateType, - Callable[[_StateType | Callable[[_StateType], _StateType]], None], -]: +def use_state(initial_value: _Type) -> State[_Type]: ... -def use_state( - initial_value: _StateType | Callable[[], _StateType], -) -> Tuple[ - _StateType, - Callable[[_StateType | Callable[[_StateType], _StateType]], None], -]: +def use_state(initial_value: _Type | Callable[[], _Type]) -> State[_Type]: """See the full :ref:`Use State` docs for details Parameters: @@ -87,16 +72,16 @@ def use_state( A tuple containing the current state and a function to update it. """ current_state = _use_const(lambda: _CurrentState(initial_value)) - return current_state.value, current_state.dispatch + return State(current_state.value, current_state.dispatch) -class _CurrentState(Generic[_StateType]): +class _CurrentState(Generic[_Type]): __slots__ = "value", "dispatch" def __init__( self, - initial_value: Union[_StateType, Callable[[], _StateType]], + initial_value: Union[_Type, Callable[[], _Type]], ) -> None: if callable(initial_value): self.value = initial_value() @@ -105,9 +90,7 @@ def __init__( hook = current_hook() - def dispatch( - new: Union[_StateType, Callable[[_StateType], _StateType]] - ) -> None: + def dispatch(new: Union[_Type, Callable[[_Type], _Type]]) -> None: if callable(new): next_value = new(self.value) else: @@ -234,14 +217,14 @@ def use_debug_value( logger.debug(f"{current_hook().component} {new}") -def create_context(default_value: _StateType) -> Context[_StateType]: +def create_context(default_value: _Type) -> Context[_Type]: """Return a new context type for use in :func:`use_context`""" def context( *children: Any, - value: _StateType = default_value, + value: _Type = default_value, key: Key | None = None, - ) -> ContextProvider[_StateType]: + ) -> ContextProvider[_Type]: return ContextProvider( *children, value=value, @@ -254,19 +237,19 @@ def context( return context -class Context(Protocol[_StateType]): +class Context(Protocol[_Type]): """Returns a :class:`ContextProvider` component""" def __call__( self, *children: Any, - value: _StateType = ..., + value: _Type = ..., key: Key | None = ..., - ) -> ContextProvider[_StateType]: + ) -> ContextProvider[_Type]: ... -def use_context(context: Context[_StateType]) -> _StateType: +def use_context(context: Context[_Type]) -> _Type: """Get the current value for the given context type. See the full :ref:`Use Context` docs for more information. @@ -282,7 +265,7 @@ def use_context(context: Context[_StateType]) -> _StateType: # lastly check that 'value' kwarg exists assert "value" in context.__kwdefaults__, f"{context} has no 'value' kwarg" # then we can safely access the context's default value - return cast(_StateType, context.__kwdefaults__["value"]) + return cast(_Type, context.__kwdefaults__["value"]) subscribers = provider._subscribers @@ -294,13 +277,13 @@ def subscribe_to_context_change() -> Callable[[], None]: return provider._value -class ContextProvider(Generic[_StateType]): +class ContextProvider(Generic[_Type]): def __init__( self, *children: Any, - value: _StateType, + value: _Type, key: Key | None, - type: Context[_StateType], + type: Context[_Type], ) -> None: self.children = children self.key = key @@ -312,7 +295,7 @@ def render(self) -> VdomDict: current_hook().set_context_provider(self) return vdom("", *self.children) - def should_render(self, new: ContextProvider[_StateType]) -> bool: + def should_render(self, new: ContextProvider[_Type]) -> bool: if not strictly_equal(self._value, new._value): for hook in self._subscribers: hook.set_context_provider(new) @@ -328,9 +311,9 @@ def __repr__(self) -> str: def use_reducer( - reducer: Callable[[_StateType, _ActionType], _StateType], - initial_value: _StateType, -) -> Tuple[_StateType, Callable[[_ActionType], None]]: + reducer: Callable[[_Type, _ActionType], _Type], + initial_value: _Type, +) -> Tuple[_Type, Callable[[_ActionType], None]]: """See the full :ref:`Use Reducer` docs for details Parameters: @@ -348,8 +331,8 @@ def use_reducer( def _create_dispatcher( - reducer: Callable[[_StateType, _ActionType], _StateType], - set_state: Callable[[Callable[[_StateType], _StateType]], None], + reducer: Callable[[_Type, _ActionType], _Type], + set_state: Callable[[Callable[[_Type], _Type]], None], ) -> Callable[[_ActionType], None]: def dispatch(action: _ActionType) -> None: set_state(lambda last_state: reducer(last_state, action)) @@ -409,7 +392,7 @@ def setup(function: _CallbackFunc) -> _CallbackFunc: class _LambdaCaller(Protocol): """MyPy doesn't know how to deal with TypeVars only used in function return""" - def __call__(self, func: Callable[[], _StateType]) -> _StateType: + def __call__(self, func: Callable[[], _Type]) -> _Type: ... @@ -423,16 +406,16 @@ def use_memo( @overload def use_memo( - function: Callable[[], _StateType], + function: Callable[[], _Type], dependencies: Sequence[Any] | ellipsis | None = ..., -) -> _StateType: +) -> _Type: ... def use_memo( - function: Optional[Callable[[], _StateType]] = None, + function: Optional[Callable[[], _Type]] = None, dependencies: Sequence[Any] | ellipsis | None = ..., -) -> Union[_StateType, Callable[[Callable[[], _StateType]], _StateType]]: +) -> Union[_Type, Callable[[Callable[[], _Type]], _Type]]: """See the full :ref:`Use Memo` docs for details Parameters: @@ -449,7 +432,7 @@ def use_memo( """ dependencies = _try_to_infer_closure_values(function, dependencies) - memo: _Memo[_StateType] = _use_const(_Memo) + memo: _Memo[_Type] = _use_const(_Memo) if memo.empty(): # we need to initialize on the first run @@ -471,17 +454,17 @@ def use_memo( else: changed = False - setup: Callable[[Callable[[], _StateType]], _StateType] + setup: Callable[[Callable[[], _Type]], _Type] if changed: - def setup(function: Callable[[], _StateType]) -> _StateType: + def setup(function: Callable[[], _Type]) -> _Type: current_value = memo.value = function() return current_value else: - def setup(function: Callable[[], _StateType]) -> _StateType: + def setup(function: Callable[[], _Type]) -> _Type: return memo.value if function is not None: @@ -490,12 +473,12 @@ def setup(function: Callable[[], _StateType]) -> _StateType: return setup -class _Memo(Generic[_StateType]): +class _Memo(Generic[_Type]): """Simple object for storing memoization data""" __slots__ = "value", "deps" - value: _StateType + value: _Type deps: Sequence[Any] def empty(self) -> bool: @@ -507,7 +490,7 @@ def empty(self) -> bool: return False -def use_ref(initial_value: _StateType) -> Ref[_StateType]: +def use_ref(initial_value: _Type) -> Ref[_Type]: """See the full :ref:`Use State` docs for details Parameters: @@ -519,7 +502,7 @@ def use_ref(initial_value: _StateType) -> Ref[_StateType]: return _use_const(lambda: Ref(initial_value)) -def _use_const(function: Callable[[], _StateType]) -> _StateType: +def _use_const(function: Callable[[], _Type]) -> _Type: return current_hook().use_state(function) @@ -670,7 +653,7 @@ def schedule_render(self) -> None: self._schedule_render() return None - def use_state(self, function: Callable[[], _StateType]) -> _StateType: + def use_state(self, function: Callable[[], _Type]) -> _Type: if not self._rendered_atleast_once: # since we're not intialized yet we're just appending state result = function() @@ -689,8 +672,8 @@ def set_context_provider(self, provider: ContextProvider[Any]) -> None: self._context_providers[provider.type] = provider def get_context_provider( - self, context: Context[_StateType] - ) -> ContextProvider[_StateType] | None: + self, context: Context[_Type] + ) -> ContextProvider[_Type] | None: return self._context_providers.get(context) def affect_component_will_render(self, component: ComponentType) -> None: diff --git a/src/idom/core/types.py b/src/idom/core/types.py index a2b7cc902..db366fcd5 100644 --- a/src/idom/core/types.py +++ b/src/idom/core/types.py @@ -1,13 +1,18 @@ from __future__ import annotations +import sys +from collections import namedtuple from types import TracebackType from typing import ( + TYPE_CHECKING, Any, Callable, Dict, + Generic, Iterable, List, Mapping, + NamedTuple, Optional, Sequence, Type, @@ -18,6 +23,19 @@ from typing_extensions import Protocol, TypedDict, runtime_checkable +_Type = TypeVar("_Type") + + +if TYPE_CHECKING or sys.version_info < (3, 9) or sys.version_info >= (3, 11): + + class State(NamedTuple, Generic[_Type]): # pragma: no cover + value: _Type + set_value: Callable[[_Type | Callable[[_Type], _Type]], None] + +else: + State = namedtuple("State", ("value", "set_value")) + + ComponentConstructor = Callable[..., "ComponentType"] """Simple function returning a new component""" diff --git a/src/idom/types.py b/src/idom/types.py index ecb5732b7..73ffef03b 100644 --- a/src/idom/types.py +++ b/src/idom/types.py @@ -18,6 +18,7 @@ Key, LayoutType, RootComponentConstructor, + State, VdomAttributes, VdomAttributesAndChildren, VdomChild, @@ -43,6 +44,7 @@ "LayoutType", "Location", "RootComponentConstructor", + "State", "VdomAttributes", "VdomAttributesAndChildren", "VdomChild", diff --git a/tests/test_core/test_hooks.py b/tests/test_core/test_hooks.py index 78fce87a4..ce45c433d 100644 --- a/tests/test_core/test_hooks.py +++ b/tests/test_core/test_hooks.py @@ -1379,3 +1379,19 @@ def InnerComponent(): hook.latest.schedule_render() await layout.render() assert inner_render_count.current == 1 + + +async def test_use_state_named_tuple(): + state = idom.Ref() + + @idom.component + def some_component(): + state.current = idom.use_state(1) + return None + + async with idom.Layout(some_component()) as layout: + await layout.render() + assert state.current.value == 1 + state.current.set_value(2) + await layout.render() + assert state.current.value == 2 From d44ab8bc1260ec23a17c4bcddf93de13ee8d26af Mon Sep 17 00:00:00 2001 From: rmorshea Date: Tue, 1 Nov 2022 23:35:56 -0700 Subject: [PATCH 110/253] version 0.41.0 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 10 +++++----- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 20 insertions(+), 13 deletions(-) diff --git a/VERSION b/VERSION index 385bb682d..72a8a6313 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.40.2 +0.41.0 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index ebc945e05..415a16699 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.41.0 +------- +:octicon:`milestone` *released on 2022-11-01* + **Changed** - :pull:`823` - The hooks ``use_location`` and ``use_scope`` are no longer diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 1eb01bd0f..2a3cc59bd 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.40.2", + "version": "0.41.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.40.2", + "version": "0.41.0", "license": "MIT", "workspaces": [ "./packages/*" @@ -1750,7 +1750,7 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "packages/idom-app-react": { - "version": "0.40.2", + "version": "0.41.0", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -1776,7 +1776,7 @@ } }, "packages/idom-client-react": { - "version": "0.40.2", + "version": "0.41.0", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 4da909e0f..46619cf11 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -1,4 +1,7 @@ { + "devDependencies": { + "vite": "^3.1.8" + }, "license": "MIT", "repository": { "type": "git", @@ -11,11 +14,8 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.40.2", + "version": "0.41.0", "workspaces": [ "./packages/*" - ], - "devDependencies": { - "vite": "^3.1.8" - } + ] } diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index 913386552..b278cf0b7 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.40.2" + "version": "0.41.0" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index ca074c26c..29c5cabbe 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.40.2" + "version": "0.41.0" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index afbc83eed..22b95446f 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -23,7 +23,7 @@ __author__ = "idom-team" -__version__ = "0.40.2" # DO NOT MODIFY +__version__ = "0.41.0" # DO NOT MODIFY __all__ = [ "backend", From cc9518d73d13fe93690986a3e36b78623f67a21f Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Sun, 6 Nov 2022 09:24:54 -0800 Subject: [PATCH 111/253] fix cov (#831) --- src/idom/core/types.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/idom/core/types.py b/src/idom/core/types.py index db366fcd5..0ef45c263 100644 --- a/src/idom/core/types.py +++ b/src/idom/core/types.py @@ -28,11 +28,11 @@ if TYPE_CHECKING or sys.version_info < (3, 9) or sys.version_info >= (3, 11): - class State(NamedTuple, Generic[_Type]): # pragma: no cover + class State(NamedTuple, Generic[_Type]): value: _Type set_value: Callable[[_Type | Callable[[_Type], _Type]], None] -else: +else: # pragma: no cover State = namedtuple("State", ("value", "set_value")) From f7c553ee1cfde8a22d161ca07b3cb7168481c768 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 22 Nov 2022 16:49:18 -0800 Subject: [PATCH 112/253] remove IDOM_FEATURE_INDEX_AS_DEFAULT_KEY opt (#840) --- docs/source/about/changelog.rst | 4 +++- src/idom/config.py | 16 ---------------- src/idom/core/layout.py | 19 ++----------------- 3 files changed, 5 insertions(+), 34 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 415a16699..9af5293b2 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,7 +23,9 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -No changes. +**Removed** + +- :pull:`840` - remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option v0.41.0 diff --git a/src/idom/config.py b/src/idom/config.py index dec2cb958..950b7402c 100644 --- a/src/idom/config.py +++ b/src/idom/config.py @@ -62,22 +62,6 @@ ) """This has been renamed to :data:`IDOM_WEB_MODULES_DIR`""" -IDOM_FEATURE_INDEX_AS_DEFAULT_KEY = _Option( - "IDOM_FEATURE_INDEX_AS_DEFAULT_KEY", - default=True, - mutable=False, - validator=lambda x: bool(int(x)), -) -"""Use the index of elements/components amongst their siblings as the default key. - -The flag's default value is set to true. To return to legacy behavior set -``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=0``. In a future release, this flag will be removed -entirely and the indices will always be the default key. - -For more information on changes to this feature flag see: -https://github.com/idom-team/idom/issues/351 -""" - IDOM_TESTING_DEFAULT_TIMEOUT = _Option( "IDOM_TESTING_DEFAULT_TIMEOUT", 5.0, diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 38bdd6490..4a2561190 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -24,11 +24,7 @@ from uuid import uuid4 from weakref import ref as weakref -from idom.config import ( - IDOM_CHECK_VDOM_SPEC, - IDOM_DEBUG_MODE, - IDOM_FEATURE_INDEX_AS_DEFAULT_KEY, -) +from idom.config import IDOM_CHECK_VDOM_SPEC, IDOM_DEBUG_MODE from idom.utils import Ref from ._event_proxy import _wrap_in_warning_event_proxies @@ -755,7 +751,7 @@ def _process_child_type_and_key( key = None if key is None: - key = _default_key(index) + key = index yield (child, child_type, key) @@ -765,14 +761,3 @@ def _process_child_type_and_key( _DICT_TYPE = _ElementType(1) _COMPONENT_TYPE = _ElementType(2) _STRING_TYPE = _ElementType(3) - - -if IDOM_FEATURE_INDEX_AS_DEFAULT_KEY.current: - - def _default_key(index: int) -> Any: - return index - -else: - - def _default_key(index: int) -> Any: # pragma: no cover - return object() From 97c0f428baf8174509f3ccb8fccee48dc0f76009 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 29 Nov 2022 11:49:02 -0800 Subject: [PATCH 113/253] allow users to configure html head (#835) * allow users to configure html head * add tests * fix minor oversights * fix use_debug hook * fix types * test head customization * fix typing/docstring issues * fix docs * fix type anno * remove indent + simplify implementation * add changelog * add test case for data- attributes * use lxml for to html str * fix tsts * add final test * minor improvements * add comment * refine camel to dash conversion * Update test_utils.py --- docs/source/_custom_js/package-lock.json | 2 +- docs/source/about/changelog.rst | 6 + src/client/index.html | 8 +- src/idom/__init__.py | 3 +- src/idom/backend/_asgi.py | 42 ------ src/idom/backend/_common.py | 130 ++++++++++++++++++ src/idom/backend/_urls.py | 7 - src/idom/backend/flask.py | 53 ++++--- src/idom/backend/sanic.py | 94 +++++++------ src/idom/backend/starlette.py | 61 ++++---- src/idom/backend/tornado.py | 86 ++++++------ src/idom/backend/utils.py | 33 ----- src/idom/core/hooks.py | 3 +- src/idom/utils.py | 110 ++++++++++++++- src/idom/widgets.py | 4 +- tests/test_backend/test__common.py | 58 ++++++++ .../{test_common.py => test_all.py} | 19 ++- tests/test_backend/test_utils.py | 14 -- tests/test_utils.py | 83 ++++++++++- 19 files changed, 551 insertions(+), 265 deletions(-) delete mode 100644 src/idom/backend/_asgi.py create mode 100644 src/idom/backend/_common.py delete mode 100644 src/idom/backend/_urls.py create mode 100644 tests/test_backend/test__common.py rename tests/test_backend/{test_common.py => test_all.py} (87%) diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index b648d4992..8632d1665 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.40.2", + "version": "0.41.0", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 9af5293b2..4b4cf55be 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -26,6 +26,12 @@ Unreleased **Removed** - :pull:`840` - remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option +- :pull:`835` - ``serve_static_files`` option from backend configuration + +**Added** + +- :pull:`835` - ability to customize the ```` element of IDOM's built-in client. +- :pull:`835` - ``vdom_to_html`` utility function. v0.41.0 diff --git a/src/client/index.html b/src/client/index.html index 622ec0a51..87f0244f2 100644 --- a/src/client/index.html +++ b/src/client/index.html @@ -2,12 +2,8 @@ - - IDOM + + {__head__}
diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 22b95446f..ad6a34db5 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -18,7 +18,7 @@ from .core.layout import Layout from .core.serve import Stop from .core.vdom import vdom -from .utils import Ref, html_to_vdom +from .utils import Ref, html_to_vdom, vdom_to_html from .widgets import hotswap @@ -53,6 +53,7 @@ "use_ref", "use_scope", "use_state", + "vdom_to_html", "vdom", "web", ] diff --git a/src/idom/backend/_asgi.py b/src/idom/backend/_asgi.py deleted file mode 100644 index 94eaa2b88..000000000 --- a/src/idom/backend/_asgi.py +++ /dev/null @@ -1,42 +0,0 @@ -from __future__ import annotations - -import asyncio -from typing import Any, Awaitable - -from asgiref.typing import ASGIApplication -from uvicorn.config import Config as UvicornConfig -from uvicorn.server import Server as UvicornServer - - -async def serve_development_asgi( - app: ASGIApplication | Any, - host: str, - port: int, - started: asyncio.Event | None, -) -> None: - """Run a development server for starlette""" - server = UvicornServer( - UvicornConfig( - app, - host=host, - port=port, - loop="asyncio", - reload=True, - ) - ) - - coros: list[Awaitable[Any]] = [server.serve()] - - if started: - coros.append(_check_if_started(server, started)) - - try: - await asyncio.gather(*coros) - finally: - await asyncio.wait_for(server.shutdown(), timeout=3) - - -async def _check_if_started(server: UvicornServer, started: asyncio.Event) -> None: - while not server.started: - await asyncio.sleep(0.2) - started.set() diff --git a/src/idom/backend/_common.py b/src/idom/backend/_common.py new file mode 100644 index 000000000..90e2dea5b --- /dev/null +++ b/src/idom/backend/_common.py @@ -0,0 +1,130 @@ +from __future__ import annotations + +import asyncio +import os +from dataclasses import dataclass +from pathlib import Path, PurePosixPath +from typing import Any, Awaitable, Sequence, cast + +from asgiref.typing import ASGIApplication +from uvicorn.config import Config as UvicornConfig +from uvicorn.server import Server as UvicornServer + +from idom import __file__ as _idom_file_path +from idom import html +from idom.config import IDOM_WEB_MODULES_DIR +from idom.core.types import VdomDict +from idom.utils import vdom_to_html + + +PATH_PREFIX = PurePosixPath("/_idom") +MODULES_PATH = PATH_PREFIX / "modules" +ASSETS_PATH = PATH_PREFIX / "assets" +STREAM_PATH = PATH_PREFIX / "stream" + +CLIENT_BUILD_DIR = Path(_idom_file_path).parent / "_client" + + +async def serve_development_asgi( + app: ASGIApplication | Any, + host: str, + port: int, + started: asyncio.Event | None, +) -> None: + """Run a development server for starlette""" + server = UvicornServer( + UvicornConfig( + app, + host=host, + port=port, + loop="asyncio", + reload=True, + ) + ) + + coros: list[Awaitable[Any]] = [server.serve()] + + if started: + coros.append(_check_if_started(server, started)) + + try: + await asyncio.gather(*coros) + finally: + await asyncio.wait_for(server.shutdown(), timeout=3) + + +async def _check_if_started(server: UvicornServer, started: asyncio.Event) -> None: + while not server.started: + await asyncio.sleep(0.2) + started.set() + + +def safe_client_build_dir_path(path: str) -> Path: + """Prevent path traversal out of :data:`CLIENT_BUILD_DIR`""" + return traversal_safe_path( + CLIENT_BUILD_DIR, + *("index.html" if path in ("", "/") else path).split("/"), + ) + + +def safe_web_modules_dir_path(path: str) -> Path: + """Prevent path traversal out of :data:`idom.config.IDOM_WEB_MODULES_DIR`""" + return traversal_safe_path(IDOM_WEB_MODULES_DIR.current, *path.split("/")) + + +def traversal_safe_path(root: str | Path, *unsafe: str | Path) -> Path: + """Raise a ``ValueError`` if the ``unsafe`` path resolves outside the root dir.""" + root = os.path.abspath(root) + + # Resolve relative paths but not symlinks - symlinks should be ok since their + # presence and where they point is under the control of the developer. + path = os.path.abspath(os.path.join(root, *unsafe)) + + if os.path.commonprefix([root, path]) != root: + # If the common prefix is not root directory we resolved outside the root dir + raise ValueError("Unsafe path") + + return Path(path) + + +def read_client_index_html(options: CommonOptions) -> str: + return ( + (CLIENT_BUILD_DIR / "index.html") + .read_text() + .format(__head__=vdom_head_elements_to_html(options.head)) + ) + + +def vdom_head_elements_to_html(head: Sequence[VdomDict] | VdomDict | str) -> str: + if isinstance(head, str): + return head + elif isinstance(head, dict): + if head.get("tagName") == "head": + head = cast(VdomDict, {**head, "tagName": ""}) + return vdom_to_html(head) + else: + return vdom_to_html(html._(head)) + + +@dataclass +class CommonOptions: + """Options for IDOM's built-in backed server implementations""" + + head: Sequence[VdomDict] | VdomDict | str = ( + html.title("IDOM"), + html.link( + { + "rel": "icon", + "href": "_idom/assets/idom-logo-square-small.svg", + "type": "image/svg+xml", + } + ), + ) + """Add elements to the ```` of the application. + + For example, this can be used to customize the title of the page, link extra + scripts, or load stylesheets. + """ + + url_prefix: str = "" + """The URL prefix where IDOM resources will be served from""" diff --git a/src/idom/backend/_urls.py b/src/idom/backend/_urls.py deleted file mode 100644 index c2523f3d7..000000000 --- a/src/idom/backend/_urls.py +++ /dev/null @@ -1,7 +0,0 @@ -from pathlib import PurePosixPath - - -PATH_PREFIX = PurePosixPath("/_idom") -MODULES_PATH = PATH_PREFIX / "modules" -ASSETS_PATH = PATH_PREFIX / "assets" -STREAM_PATH = PATH_PREFIX / "stream" diff --git a/src/idom/backend/flask.py b/src/idom/backend/flask.py index 7a7e18c8d..95c054b83 100644 --- a/src/idom/backend/flask.py +++ b/src/idom/backend/flask.py @@ -9,7 +9,7 @@ from queue import Queue as ThreadQueue from threading import Event as ThreadEvent from threading import Thread -from typing import Any, Callable, Dict, NamedTuple, NoReturn, Optional, Union, cast +from typing import Any, Callable, NamedTuple, NoReturn, Optional, cast from flask import ( Blueprint, @@ -25,6 +25,16 @@ from werkzeug.serving import BaseWSGIServer, make_server import idom +from idom.backend._common import ( + ASSETS_PATH, + MODULES_PATH, + PATH_PREFIX, + STREAM_PATH, + CommonOptions, + read_client_index_html, + safe_client_build_dir_path, + safe_web_modules_dir_path, +) from idom.backend.hooks import ConnectionContext from idom.backend.hooks import use_connection as _use_connection from idom.backend.types import Connection, Location @@ -33,13 +43,6 @@ from idom.core.types import ComponentType, RootComponentConstructor from idom.utils import Ref -from ._urls import ASSETS_PATH, MODULES_PATH, PATH_PREFIX, STREAM_PATH -from .utils import ( - CLIENT_BUILD_DIR, - safe_client_build_dir_path, - safe_web_modules_dir_path, -) - logger = logging.getLogger(__name__) @@ -134,21 +137,15 @@ def use_connection() -> Connection[_FlaskCarrier]: @dataclass -class Options: - """Render server config for :class:`FlaskRenderServer`""" +class Options(CommonOptions): + """Render server config for :func:`idom.backend.flask.configure`""" - cors: Union[bool, Dict[str, Any]] = False + cors: bool | dict[str, Any] = False """Enable or configure Cross Origin Resource Sharing (CORS) For more information see docs for ``flask_cors.CORS`` """ - serve_static_files: bool = True - """Whether or not to serve static files (i.e. web modules)""" - - url_prefix: str = "" - """The URL prefix where IDOM resources will be served from""" - def _setup_common_routes( api_blueprint: Blueprint, @@ -160,20 +157,20 @@ def _setup_common_routes( cors_params = cors_options if isinstance(cors_options, dict) else {} CORS(api_blueprint, **cors_params) - if options.serve_static_files: + @api_blueprint.route(f"/{ASSETS_PATH.name}/") + def send_assets_dir(path: str = "") -> Any: + return send_file(safe_client_build_dir_path(f"assets/{path}")) - @api_blueprint.route(f"/{ASSETS_PATH.name}/") - def send_assets_dir(path: str = "") -> Any: - return send_file(safe_client_build_dir_path(f"assets/{path}")) + @api_blueprint.route(f"/{MODULES_PATH.name}/") + def send_modules_dir(path: str = "") -> Any: + return send_file(safe_web_modules_dir_path(path)) - @api_blueprint.route(f"/{MODULES_PATH.name}/") - def send_modules_dir(path: str = "") -> Any: - return send_file(safe_web_modules_dir_path(path)) + index_html = read_client_index_html(options) - @spa_blueprint.route("/") - @spa_blueprint.route("/") - def send_client_dir(_: str = "") -> Any: - return send_file(CLIENT_BUILD_DIR / "index.html") + @spa_blueprint.route("/") + @spa_blueprint.route("/") + def send_client_dir(_: str = "") -> Any: + return index_html def _setup_single_view_dispatcher_route( diff --git a/src/idom/backend/sanic.py b/src/idom/backend/sanic.py index a18b2cc66..fda9d214f 100644 --- a/src/idom/backend/sanic.py +++ b/src/idom/backend/sanic.py @@ -4,7 +4,7 @@ import json import logging from dataclasses import dataclass -from typing import Any, Dict, MutableMapping, Tuple, Union +from typing import Any, MutableMapping, Tuple from urllib import parse as urllib_parse from uuid import uuid4 @@ -24,15 +24,19 @@ ) from idom.core.types import RootComponentConstructor -from ._asgi import serve_development_asgi -from ._urls import ASSETS_PATH, MODULES_PATH, PATH_PREFIX, STREAM_PATH -from .hooks import ConnectionContext -from .hooks import use_connection as _use_connection -from .utils import ( - CLIENT_BUILD_DIR, +from ._common import ( + ASSETS_PATH, + MODULES_PATH, + PATH_PREFIX, + STREAM_PATH, + CommonOptions, + read_client_index_html, safe_client_build_dir_path, safe_web_modules_dir_path, + serve_development_asgi, ) +from .hooks import ConnectionContext +from .hooks import use_connection as _use_connection logger = logging.getLogger(__name__) @@ -90,21 +94,15 @@ def use_connection() -> Connection[_SanicCarrier]: @dataclass -class Options: - """Options for :class:`SanicRenderServer`""" +class Options(CommonOptions): + """Render server config for :func:`idom.backend.sanic.configure`""" - cors: Union[bool, Dict[str, Any]] = False + cors: bool | dict[str, Any] = False """Enable or configure Cross Origin Resource Sharing (CORS) For more information see docs for ``sanic_cors.CORS`` """ - serve_static_files: bool = True - """Whether or not to serve static files (i.e. web modules)""" - - url_prefix: str = "" - """The URL prefix where IDOM resources will be served from""" - def _setup_common_routes( api_blueprint: Blueprint, @@ -116,38 +114,38 @@ def _setup_common_routes( cors_params = cors_options if isinstance(cors_options, dict) else {} CORS(api_blueprint, **cors_params) - if options.serve_static_files: - - async def single_page_app_files( - request: request.Request, - _: str = "", - ) -> response.HTTPResponse: - return await response.file(CLIENT_BUILD_DIR / "index.html") - - spa_blueprint.add_route(single_page_app_files, "/") - spa_blueprint.add_route(single_page_app_files, "/<_:path>") - - async def asset_files( - request: request.Request, - path: str = "", - ) -> response.HTTPResponse: - path = urllib_parse.unquote(path) - return await response.file(safe_client_build_dir_path(f"assets/{path}")) - - api_blueprint.add_route(asset_files, f"/{ASSETS_PATH.name}/") - - async def web_module_files( - request: request.Request, - path: str, - _: str = "", # this is not used - ) -> response.HTTPResponse: - path = urllib_parse.unquote(path) - return await response.file( - safe_web_modules_dir_path(path), - mime_type="text/javascript", - ) - - api_blueprint.add_route(web_module_files, f"/{MODULES_PATH.name}/") + index_html = read_client_index_html(options) + + async def single_page_app_files( + request: request.Request, + _: str = "", + ) -> response.HTTPResponse: + return response.html(index_html) + + spa_blueprint.add_route(single_page_app_files, "/") + spa_blueprint.add_route(single_page_app_files, "/<_:path>") + + async def asset_files( + request: request.Request, + path: str = "", + ) -> response.HTTPResponse: + path = urllib_parse.unquote(path) + return await response.file(safe_client_build_dir_path(f"assets/{path}")) + + api_blueprint.add_route(asset_files, f"/{ASSETS_PATH.name}/") + + async def web_module_files( + request: request.Request, + path: str, + _: str = "", # this is not used + ) -> response.HTTPResponse: + path = urllib_parse.unquote(path) + return await response.file( + safe_web_modules_dir_path(path), + mime_type="text/javascript", + ) + + api_blueprint.add_route(web_module_files, f"/{MODULES_PATH.name}/") def _setup_single_view_dispatcher_route( diff --git a/src/idom/backend/starlette.py b/src/idom/backend/starlette.py index ed1bc10da..21d5200af 100644 --- a/src/idom/backend/starlette.py +++ b/src/idom/backend/starlette.py @@ -4,12 +4,12 @@ import json import logging from dataclasses import dataclass -from typing import Any, Dict, Tuple, Union +from typing import Any, Awaitable, Callable, Tuple from starlette.applications import Starlette from starlette.middleware.cors import CORSMiddleware from starlette.requests import Request -from starlette.responses import FileResponse +from starlette.responses import HTMLResponse from starlette.staticfiles import StaticFiles from starlette.websockets import WebSocket, WebSocketDisconnect @@ -25,11 +25,17 @@ ) from idom.core.types import RootComponentConstructor -from ._asgi import serve_development_asgi -from ._urls import ASSETS_PATH, MODULES_PATH, STREAM_PATH +from ._common import ( + ASSETS_PATH, + CLIENT_BUILD_DIR, + MODULES_PATH, + STREAM_PATH, + CommonOptions, + read_client_index_html, + serve_development_asgi, +) from .hooks import ConnectionContext from .hooks import use_connection as _use_connection -from .utils import CLIENT_BUILD_DIR logger = logging.getLogger(__name__) @@ -86,21 +92,15 @@ def use_connection() -> Connection[WebSocket]: @dataclass -class Options: - """Optionsuration options for :class:`StarletteRenderServer`""" +class Options(CommonOptions): + """Render server config for :func:`idom.backend.starlette.configure`""" - cors: Union[bool, Dict[str, Any]] = False + cors: bool | dict[str, Any] = False """Enable or configure Cross Origin Resource Sharing (CORS) For more information see docs for ``starlette.middleware.cors.CORSMiddleware`` """ - serve_static_files: bool = True - """Whether or not to serve static files (i.e. web modules)""" - - url_prefix: str = "" - """The URL prefix where IDOM resources will be served from""" - def _setup_common_routes(options: Options, app: Starlette) -> None: cors_options = options.cors @@ -114,22 +114,27 @@ def _setup_common_routes(options: Options, app: Starlette) -> None: # BUG: https://github.com/tiangolo/fastapi/issues/1469 url_prefix = options.url_prefix - if options.serve_static_files: - app.mount( - str(MODULES_PATH), - StaticFiles(directory=IDOM_WEB_MODULES_DIR.current, check_dir=False), - ) - app.mount( - str(ASSETS_PATH), - StaticFiles(directory=CLIENT_BUILD_DIR / "assets", check_dir=False), - ) - # register this last so it takes least priority - app.add_route(url_prefix + "/", serve_index) - app.add_route(url_prefix + "/{path:path}", serve_index) + app.mount( + str(MODULES_PATH), + StaticFiles(directory=IDOM_WEB_MODULES_DIR.current, check_dir=False), + ) + app.mount( + str(ASSETS_PATH), + StaticFiles(directory=CLIENT_BUILD_DIR / "assets", check_dir=False), + ) + # register this last so it takes least priority + index_route = _make_index_route(options) + app.add_route(url_prefix + "/", index_route) + app.add_route(url_prefix + "/{path:path}", index_route) + + +def _make_index_route(options: Options) -> Callable[[Request], Awaitable[HTMLResponse]]: + index_html = read_client_index_html(options) + async def serve_index(request: Request) -> HTMLResponse: + return HTMLResponse(index_html) -async def serve_index(request: Request) -> FileResponse: - return FileResponse(CLIENT_BUILD_DIR / "index.html") + return serve_index def _setup_single_view_dispatcher_route( diff --git a/src/idom/backend/tornado.py b/src/idom/backend/tornado.py index 0af4bfb0d..a9a112ffc 100644 --- a/src/idom/backend/tornado.py +++ b/src/idom/backend/tornado.py @@ -4,7 +4,6 @@ import json from asyncio import Queue as AsyncQueue from asyncio.futures import Future -from dataclasses import dataclass from typing import Any, List, Tuple, Type, Union from urllib.parse import urljoin @@ -22,16 +21,26 @@ from idom.core.serve import VdomJsonPatch, serve_json_patch from idom.core.types import ComponentConstructor -from ._urls import ASSETS_PATH, MODULES_PATH, STREAM_PATH +from ._common import ( + ASSETS_PATH, + CLIENT_BUILD_DIR, + MODULES_PATH, + STREAM_PATH, + CommonOptions, + read_client_index_html, +) from .hooks import ConnectionContext from .hooks import use_connection as _use_connection -from .utils import CLIENT_BUILD_DIR + + +Options = CommonOptions +"""Render server config for :func:`idom.backend.tornado.configure`""" def configure( app: Application, component: ComponentConstructor, - options: Options | None = None, + options: CommonOptions | None = None, ) -> None: """Configure the necessary IDOM routes on the given app. @@ -98,50 +107,27 @@ def use_connection() -> Connection[HTTPServerRequest]: return conn -@dataclass -class Options: - """Render server options for :class:`TornadoRenderServer` subclasses""" - - serve_static_files: bool = True - """Whether or not to serve static files (i.e. web modules)""" - - url_prefix: str = "" - """The URL prefix where IDOM resources will be served from""" - - _RouteHandlerSpecs = List[Tuple[str, Type[RequestHandler], Any]] def _setup_common_routes(options: Options) -> _RouteHandlerSpecs: - handlers: _RouteHandlerSpecs = [] - - if options.serve_static_files: - handlers.append( - ( - rf"{MODULES_PATH}/(.*)", - StaticFileHandler, - {"path": str(IDOM_WEB_MODULES_DIR.current)}, - ) - ) - - handlers.append( - ( - rf"{ASSETS_PATH}/(.*)", - StaticFileHandler, - {"path": str(CLIENT_BUILD_DIR / "assets")}, - ) - ) - - # register last to give lowest priority - handlers.append( - ( - r"/(.*)", - SpaStaticFileHandler, - {"path": str(CLIENT_BUILD_DIR)}, - ) - ) - - return handlers + return [ + ( + rf"{MODULES_PATH}/(.*)", + StaticFileHandler, + {"path": str(IDOM_WEB_MODULES_DIR.current)}, + ), + ( + rf"{ASSETS_PATH}/(.*)", + StaticFileHandler, + {"path": str(CLIENT_BUILD_DIR / "assets")}, + ), + ( + r"/(.*)", + IndexHandler, + {"index_html": read_client_index_html(options)}, + ), + ] def _add_handler( @@ -171,9 +157,15 @@ def _setup_single_view_dispatcher_route( ] -class SpaStaticFileHandler(StaticFileHandler): - async def get(self, _: str, include_body: bool = True) -> None: - return await super().get(str(CLIENT_BUILD_DIR / "index.html"), include_body) +class IndexHandler(RequestHandler): + + _index_html: str + + def initialize(self, index_html: str) -> None: + self._index_html = index_html + + async def get(self, _: str) -> None: + self.finish(self._index_html) class ModelStreamHandler(WebSocketHandler): diff --git a/src/idom/backend/utils.py b/src/idom/backend/utils.py index a3c5ee51a..bca5d8903 100644 --- a/src/idom/backend/utils.py +++ b/src/idom/backend/utils.py @@ -2,22 +2,17 @@ import asyncio import logging -import os import socket from contextlib import closing from importlib import import_module -from pathlib import Path from typing import Any, Iterator -import idom -from idom.config import IDOM_WEB_MODULES_DIR from idom.types import RootComponentConstructor from .types import BackendImplementation logger = logging.getLogger(__name__) -CLIENT_BUILD_DIR = Path(idom.__file__).parent / "_client" SUPPORTED_PACKAGES = ( "starlette", @@ -56,34 +51,6 @@ def run( asyncio.run(implementation.serve_development_app(app, host, port)) -def safe_client_build_dir_path(path: str) -> Path: - """Prevent path traversal out of :data:`CLIENT_BUILD_DIR`""" - return traversal_safe_path( - CLIENT_BUILD_DIR, - *("index.html" if path in ("", "/") else path).split("/"), - ) - - -def safe_web_modules_dir_path(path: str) -> Path: - """Prevent path traversal out of :data:`idom.config.IDOM_WEB_MODULES_DIR`""" - return traversal_safe_path(IDOM_WEB_MODULES_DIR.current, *path.split("/")) - - -def traversal_safe_path(root: str | Path, *unsafe: str | Path) -> Path: - """Raise a ``ValueError`` if the ``unsafe`` path resolves outside the root dir.""" - root = os.path.abspath(root) - - # Resolve relative paths but not symlinks - symlinks should be ok since their - # presence and where they point is under the control of the developer. - path = os.path.abspath(os.path.join(root, *unsafe)) - - if os.path.commonprefix([root, path]) != root: - # If the common prefix is not root directory we resolved outside the root dir - raise ValueError("Unsafe path") - - return Path(path) - - def find_available_port( host: str, port_min: int = 8000, diff --git a/src/idom/core/hooks.py b/src/idom/core/hooks.py index a1353f090..dd7d0fc4b 100644 --- a/src/idom/core/hooks.py +++ b/src/idom/core/hooks.py @@ -23,6 +23,7 @@ from typing_extensions import Protocol +from idom.config import IDOM_DEBUG_MODE from idom.utils import Ref from ._thread_local import ThreadLocal @@ -212,7 +213,7 @@ def use_debug_value( memo_func = message if callable(message) else lambda: message new = use_memo(memo_func, dependencies) - if old.current != new: + if IDOM_DEBUG_MODE.current and old.current != new: old.current = new logger.debug(f"{current_hook().component} {new}") diff --git a/src/idom/utils.py b/src/idom/utils.py index e176da660..fde800abb 100644 --- a/src/idom/utils.py +++ b/src/idom/utils.py @@ -1,8 +1,11 @@ +from __future__ import annotations + +import re from itertools import chain -from typing import Any, Callable, Generic, Iterable, List, TypeVar, Union +from typing import Any, Callable, Generic, Iterable, TypeVar, cast from lxml import etree -from lxml.html import fragments_fromstring +from lxml.html import fragments_fromstring, tostring import idom from idom.core.types import VdomDict @@ -56,6 +59,25 @@ def __repr__(self) -> str: return f"{type(self).__name__}({current})" +def vdom_to_html(vdom: VdomDict) -> str: + """Convert a VDOM dictionary into an HTML string + + Only the following keys are translated to HTML: + + - ``tagName`` + - ``attributes`` + - ``children`` (must be strings or more VDOM dicts) + + Parameters: + vdom: The VdomDict element to convert to HTML + """ + temp_root = etree.Element("__temp__") + _add_vdom_to_etree(temp_root, vdom) + html = cast(bytes, tostring(temp_root)).decode() + # strip out temp root <__temp__> element + return html[10:-11] + + def html_to_vdom( html: str, *transforms: _ModelTransform, strict: bool = True ) -> VdomDict: @@ -118,6 +140,10 @@ def html_to_vdom( return vdom +class HTMLParseError(etree.LxmlSyntaxError): # type: ignore[misc] + """Raised when an HTML document cannot be parsed using strict parsing.""" + + def _etree_to_vdom( node: etree._Element, transforms: Iterable[_ModelTransform] ) -> VdomDict: @@ -165,6 +191,48 @@ def _etree_to_vdom( return vdom +def _add_vdom_to_etree(parent: etree._Element, vdom: VdomDict | dict[str, Any]) -> None: + try: + tag = vdom["tagName"] + except KeyError as e: + raise TypeError(f"Expected a VDOM dict, not {vdom}") from e + else: + vdom = cast(VdomDict, vdom) + + if tag: + element = etree.SubElement(parent, tag) + element.attrib.update( + _vdom_attr_to_html_str(k, v) for k, v in vdom.get("attributes", {}).items() + ) + else: + element = parent + + for c in vdom.get("children", []): + if isinstance(c, dict): + _add_vdom_to_etree(element, c) + else: + """ + LXML handles string children by storing them under `text` and `tail` + attributes of Element objects. The `text` attribute, if present, effectively + becomes that element's first child. Then the `tail` attribute, if present, + becomes a sibling that follows that element. For example, consider the + following HTML: + +

helloworld

+ + In this code sample, "hello" is the `text` attribute of the `` element + and "world" is the `tail` attribute of that same `` element. It's for + this reason that, depending on whether the element being constructed has + non-string a child element, we need to assign a `text` vs `tail` attribute + to that element or the last non-string child respectively. + """ + if len(element): + last_child = element[-1] + last_child.tail = f"{last_child.tail or ''}{c}" + else: + element.text = f"{element.text or ''}{c}" + + def _mutate_vdom(vdom: VdomDict) -> None: """Performs any necessary mutations on the VDOM attributes to meet VDOM spec. @@ -195,7 +263,7 @@ def _mutate_vdom(vdom: VdomDict) -> None: def _generate_vdom_children( node: etree._Element, transforms: Iterable[_ModelTransform] -) -> List[Union[VdomDict, str]]: +) -> list[VdomDict | str]: """Generates a list of VDOM children from an lxml node. Inserts inner text and/or tail text inbetween VDOM children, if necessary. @@ -221,5 +289,37 @@ def _hypen_to_camel_case(string: str) -> str: return first.lower() + remainder.title().replace("-", "") -class HTMLParseError(etree.LxmlSyntaxError): # type: ignore[misc] - """Raised when an HTML document cannot be parsed using strict parsing.""" +def _vdom_attr_to_html_str(key: str, value: Any) -> tuple[str, str]: + if key == "style": + if isinstance(value, dict): + value = ";".join( + # We lower only to normalize - CSS is case-insensitive: + # https://www.w3.org/TR/css-fonts-3/#font-family-casing + f"{_CAMEL_CASE_SUB_PATTERN.sub('-', k).lower()}:{v}" + for k, v in value.items() + ) + elif ( + # camel to data-* attributes + key.startswith("data") + # camel to aria-* attributes + or key.startswith("aria") + # handle special cases + or key in _DASHED_HTML_ATTRS + ): + key = _CAMEL_CASE_SUB_PATTERN.sub("-", key) + + assert not callable( + value + ), f"Could not convert callable attribute {key}={value} to HTML" + + # Again, we lower the attribute name only to normalize - HTML is case-insensitive: + # http://w3c.github.io/html-reference/documents.html#case-insensitivity + return key.lower(), str(value) + + +# Pattern for delimitting camelCase names (e.g. camelCase to camel-case) +_CAMEL_CASE_SUB_PATTERN = re.compile(r"(? None: def _use_callable(initial_func: _Func) -> Tuple[_Func, Callable[[_Func], None]]: - state = hooks.use_state(lambda: initial_func) - return state[0], lambda new: state[1](lambda old: new) + state, set_state = hooks.use_state(lambda: initial_func) + return state, lambda new: set_state(lambda old: new) diff --git a/tests/test_backend/test__common.py b/tests/test_backend/test__common.py new file mode 100644 index 000000000..e575625a2 --- /dev/null +++ b/tests/test_backend/test__common.py @@ -0,0 +1,58 @@ +import pytest + +from idom import html +from idom.backend._common import traversal_safe_path, vdom_head_elements_to_html + + +@pytest.mark.parametrize( + "bad_path", + [ + "../escaped", + "ok/../../escaped", + "ok/ok-again/../../ok-yet-again/../../../escaped", + ], +) +def test_catch_unsafe_relative_path_traversal(tmp_path, bad_path): + with pytest.raises(ValueError, match="Unsafe path"): + traversal_safe_path(tmp_path, *bad_path.split("/")) + + +@pytest.mark.parametrize( + "vdom_in, html_out", + [ + ( + "example", + "example", + ), + ( + # We do not modify strings given by user. If given as VDOM we would have + # striped this head element, but since provided as string, we leav as-is. + "", + "", + ), + ( + html.head( + html.meta({"charset": "utf-8"}), + html.title("example"), + ), + # we strip the head element + 'example', + ), + ( + html._( + html.meta({"charset": "utf-8"}), + html.title("example"), + ), + 'example', + ), + ( + [ + html.meta({"charset": "utf-8"}), + html.title("example"), + ], + 'example', + ), + ], +) +def test_vdom_head_elements_to_html(vdom_in, html_out): + assert vdom_head_elements_to_html(vdom_in) == html_out diff --git a/tests/test_backend/test_common.py b/tests/test_backend/test_all.py similarity index 87% rename from tests/test_backend/test_common.py rename to tests/test_backend/test_all.py index f0856b209..98036cb16 100644 --- a/tests/test_backend/test_common.py +++ b/tests/test_backend/test_all.py @@ -5,7 +5,7 @@ import idom from idom import html from idom.backend import default as default_implementation -from idom.backend._urls import PATH_PREFIX +from idom.backend._common import PATH_PREFIX from idom.backend.types import BackendImplementation, Connection, Location from idom.backend.utils import all_implementations from idom.testing import BackendFixture, DisplayFixture, poll @@ -155,3 +155,20 @@ def ShowRoute(): # we can't easily narrow this check assert hook_val.current is not None + + +@pytest.mark.parametrize("imp", all_implementations()) +async def test_customized_head(imp: BackendImplementation, page): + custom_title = f"Custom Title for {imp.__name__}" + + @idom.component + def sample(): + return html.h1(f"^ Page title is customized to: '{custom_title}'") + + async with BackendFixture( + implementation=imp, + options=imp.Options(head=html.title(custom_title)), + ) as server: + async with DisplayFixture(backend=server, driver=page) as display: + await display.show(sample) + assert (await display.page.title()) == custom_title diff --git a/tests/test_backend/test_utils.py b/tests/test_backend/test_utils.py index b55cdd990..c3cb13613 100644 --- a/tests/test_backend/test_utils.py +++ b/tests/test_backend/test_utils.py @@ -8,7 +8,6 @@ from idom.backend import flask as flask_implementation from idom.backend.utils import find_available_port from idom.backend.utils import run as sync_run -from idom.backend.utils import traversal_safe_path from idom.sample import SampleApp as SampleApp @@ -45,16 +44,3 @@ async def test_run(page: Page, exit_stack: ExitStack): await page.goto(url) await page.wait_for_selector("#sample") - - -@pytest.mark.parametrize( - "bad_path", - [ - "../escaped", - "ok/../../escaped", - "ok/ok-again/../../ok-yet-again/../../../escaped", - ], -) -def test_catch_unsafe_relative_path_traversal(tmp_path, bad_path): - with pytest.raises(ValueError, match="Unsafe path"): - traversal_safe_path(tmp_path, *bad_path.split("/")) diff --git a/tests/test_utils.py b/tests/test_utils.py index 861fc315d..405cdce05 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,7 +1,10 @@ +from html import escape as html_escape + import pytest import idom -from idom.utils import HTMLParseError, html_to_vdom +from idom import html +from idom.utils import HTMLParseError, html_to_vdom, vdom_to_html def test_basic_ref_behavior(): @@ -149,3 +152,81 @@ def test_html_to_vdom_with_no_parent_node(): } assert html_to_vdom(source) == expected + + +SOME_OBJECT = object() + + +@pytest.mark.parametrize( + "vdom_in, html_out", + [ + ( + html.div("hello"), + "
hello
", + ), + ( + html.div(SOME_OBJECT), + f"
{html_escape(str(SOME_OBJECT))}
", + ), + ( + html.div({"someAttribute": SOME_OBJECT}), + f'
', + ), + ( + html.div( + "hello", html.a({"href": "https://example.com"}, "example"), "world" + ), + '
', + ), + ( + html.button({"onClick": lambda event: None}), + "", + ), + ( + html._("hello ", html._("world")), + "hello world", + ), + ( + html._(html.div("hello"), html._("world")), + "
hello
world", + ), + ( + html.div({"style": {"backgroundColor": "blue", "marginLeft": "10px"}}), + '
', + ), + ( + html.div({"style": "background-color:blue;margin-left:10px"}), + '
', + ), + ( + html._( + html.div("hello"), + html.a({"href": "https://example.com"}, "example"), + ), + '
hello
example', + ), + ( + html.div( + html._( + html.div("hello"), + html.a({"href": "https://example.com"}, "example"), + ), + html.button(), + ), + '
hello
example
', + ), + ( + html.div( + {"dataSomething": 1, "dataSomethingElse": 2, "dataisnotdashed": 3} + ), + '
', + ), + ], +) +def test_vdom_to_html(vdom_in, html_out): + assert vdom_to_html(vdom_in) == html_out + + +def test_vdom_to_html_error(): + with pytest.raises(TypeError, match="Expected a VDOM dict"): + vdom_to_html({"notVdom": True}) From 8f3785bad50935d77de61c4f94c6cd4fc25aeadc Mon Sep 17 00:00:00 2001 From: rmorshea Date: Tue, 29 Nov 2022 17:55:21 -0800 Subject: [PATCH 114/253] add deprecation warning to module_from_template --- src/idom/web/module.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/idom/web/module.py b/src/idom/web/module.py index b6eced2c8..9e13d6900 100644 --- a/src/idom/web/module.py +++ b/src/idom/web/module.py @@ -9,6 +9,7 @@ from string import Template from typing import Any, List, NewType, Optional, Set, Tuple, Union, overload from urllib.parse import urlparse +from warnings import warn from idom.config import IDOM_DEBUG_MODE, IDOM_WEB_MODULES_DIR from idom.core.types import ImportSourceDict, VdomDictConstructor @@ -119,6 +120,11 @@ def module_from_template( Using this option has negative performance consequences since all DOM elements must be changed on each render. See :issue:`461` for more info. """ + warn( + "module_from_template() is deprecated due to instability - use the Javascript " + "Components API instead. This function will be removed in a future release.", + DeprecationWarning, + ) template_name, _, template_version = template.partition("@") template_version = "@" + template_version if template_version else "" From 0d4def4860e6714fd23c2d452ec473bab5d315fd Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 29 Nov 2022 19:51:30 -0800 Subject: [PATCH 115/253] better run func warning (#842) --- src/idom/backend/utils.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/idom/backend/utils.py b/src/idom/backend/utils.py index bca5d8903..6398d6b0d 100644 --- a/src/idom/backend/utils.py +++ b/src/idom/backend/utils.py @@ -30,10 +30,7 @@ def run( implementation: BackendImplementation[Any] | None = None, ) -> None: """Run a component with a development server""" - logger.warning( - "You are running a development server. " - "Change this before deploying in production!" - ) + logger.warning(_DEVELOPMENT_RUN_FUNC_WARNING) implementation = implementation or import_module("idom.backend.default") @@ -94,3 +91,11 @@ def all_implementations() -> Iterator[BackendImplementation[Any]]: ) yield module + + +_DEVELOPMENT_RUN_FUNC_WARNING = f"""\ +The `run()` function is only intended for testing during development! To run in \ +production, consider selecting a supported backend and importing its associated \ +`configure()` function from `idom.backend.` where `` is one of \ +{list(SUPPORTED_PACKAGES)}. For details refer to the docs on how to run each package.\ +""" From 4fd5cdec2d68d0a81deb7d1cf779ed57b31d44db Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Tue, 29 Nov 2022 20:00:48 -0800 Subject: [PATCH 116/253] Make IDOM_DEBUG_MODE mutable + add Option.subscribe method (#843) * make IDOM_DEBUG_MODE mutable + add Option.subscribe subscribe() allows users to listen when a mutable option is changed * update changelog * remove check for children key in attrs * fix tests * fix resolve_exports default * remove unused import --- docs/source/about/changelog.rst | 5 +++ src/idom/_option.py | 31 +++++++++++++-- src/idom/config.py | 4 +- src/idom/core/layout.py | 24 +++-------- src/idom/core/vdom.py | 70 +++++++++++++-------------------- src/idom/logging.py | 14 ++++--- src/idom/web/module.py | 26 ++++++++---- tests/test__option.py | 25 ++++++++++++ tests/test_config.py | 29 ++++++++++++++ tests/test_core/test_vdom.py | 10 ----- 10 files changed, 148 insertions(+), 90 deletions(-) create mode 100644 tests/test_config.py diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 4b4cf55be..7587273ec 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -32,6 +32,11 @@ Unreleased - :pull:`835` - ability to customize the ```` element of IDOM's built-in client. - :pull:`835` - ``vdom_to_html`` utility function. +- :pull:`843` - Ability to subscribe to changes that are made to mutable options. + +**Fixed** + +- :issue:`582` - ``IDOM_DEBUG_MODE`` is now mutable and can be changed at runtime v0.41.0 diff --git a/src/idom/_option.py b/src/idom/_option.py index 1367e6bd9..3d2295f16 100644 --- a/src/idom/_option.py +++ b/src/idom/_option.py @@ -16,16 +16,25 @@ class Option(Generic[_O]): def __init__( self, name: str, - default: _O, + default: _O | Option[_O], mutable: bool = True, validator: Callable[[Any], _O] = lambda x: cast(_O, x), ) -> None: self._name = name - self._default = default self._mutable = mutable self._validator = validator + self._subscribers: list[Callable[[_O], None]] = [] + if name in os.environ: self._current = validator(os.environ[name]) + + self._default: _O + if isinstance(default, Option): + self._default = default.default + default.subscribe(lambda value: setattr(self, "_default", value)) + else: + self._default = default + logger.debug(f"{self._name}={self.current}") @property @@ -55,6 +64,14 @@ def current(self, new: _O) -> None: self.set_current(new) return None + def subscribe(self, handler: Callable[[_O], None]) -> Callable[[_O], None]: + """Register a callback that will be triggered when this option changes""" + if not self.mutable: + raise TypeError("Immutable options cannot be subscribed to.") + self._subscribers.append(handler) + handler(self.current) + return handler + def is_set(self) -> bool: """Whether this option has a value other than its default.""" return hasattr(self, "_current") @@ -66,8 +83,12 @@ def set_current(self, new: Any) -> None: """ if not self._mutable: raise TypeError(f"{self} cannot be modified after initial load") - self._current = self._validator(new) + old = self.current + new = self._current = self._validator(new) logger.debug(f"{self._name}={self._current}") + if new != old: + for sub_func in self._subscribers: + sub_func(new) def set_default(self, new: _O) -> _O: """Set the value of this option if not :meth:`Option.is_set` @@ -86,7 +107,11 @@ def unset(self) -> None: """Remove the current value, the default will be used until it is set again.""" if not self._mutable: raise TypeError(f"{self} cannot be modified after initial load") + old = self.current delattr(self, "_current") + if self.current != old: + for sub_func in self._subscribers: + sub_func(self.current) def __repr__(self) -> str: return f"Option({self._name}={self.current!r})" diff --git a/src/idom/config.py b/src/idom/config.py index 950b7402c..ab65feea6 100644 --- a/src/idom/config.py +++ b/src/idom/config.py @@ -13,7 +13,6 @@ IDOM_DEBUG_MODE = _Option( "IDOM_DEBUG_MODE", default=False, - mutable=False, validator=lambda x: bool(int(x)), ) """This immutable option turns on/off debug mode @@ -27,8 +26,7 @@ IDOM_CHECK_VDOM_SPEC = _Option( "IDOM_CHECK_VDOM_SPEC", - default=IDOM_DEBUG_MODE.current, - mutable=False, + default=IDOM_DEBUG_MODE, validator=lambda x: bool(int(x)), ) """This immutable option turns on/off checks which ensure VDOM is rendered to spec diff --git a/src/idom/core/layout.py b/src/idom/core/layout.py index 4a2561190..bbc1848a5 100644 --- a/src/idom/core/layout.py +++ b/src/idom/core/layout.py @@ -4,7 +4,6 @@ import asyncio from collections import Counter from contextlib import ExitStack -from functools import wraps from logging import getLogger from typing import ( Any, @@ -135,23 +134,12 @@ async def render(self) -> LayoutUpdate: f"{model_state_id!r} - component already unmounted" ) else: - return self._create_layout_update(model_state) - - if IDOM_CHECK_VDOM_SPEC.current: - # If in debug mode inject a function that ensures all returned updates - # contain valid VDOM models. We only do this in debug mode or when this check - # is explicitely turned in order to avoid unnecessarily impacting performance. - - _debug_render = render - - @wraps(_debug_render) - async def render(self) -> LayoutUpdate: - result = await self._debug_render() - # Ensure that the model is valid VDOM on each render - root_id = self._root_life_cycle_state_id - root_model = self._model_states_by_life_cycle_state_id[root_id] - validate_vdom_json(root_model.model.current) - return result + update = self._create_layout_update(model_state) + if IDOM_CHECK_VDOM_SPEC.current: + root_id = self._root_life_cycle_state_id + root_model = self._model_states_by_life_cycle_state_id[root_id] + validate_vdom_json(root_model.model.current) + return update def _create_layout_update(self, old_state: _ModelState) -> LayoutUpdate: new_state = _copy_component_model_state(old_state) diff --git a/src/idom/core/vdom.py b/src/idom/core/vdom.py index 4af5bb009..78bfb3725 100644 --- a/src/idom/core/vdom.py +++ b/src/idom/core/vdom.py @@ -13,6 +13,7 @@ to_event_handler_function, ) from idom.core.types import ( + ComponentType, EventHandlerDict, EventHandlerMapping, EventHandlerType, @@ -295,47 +296,30 @@ def _is_attributes(value: Any) -> bool: return isinstance(value, Mapping) and "tagName" not in value -if IDOM_DEBUG_MODE.current: - - _debug_is_attributes = _is_attributes - - def _is_attributes(value: Any) -> bool: - result = _debug_is_attributes(value) - if result and "children" in value: - logger.error(f"Reserved key 'children' found in attributes {value}") - return result - - def _is_single_child(value: Any) -> bool: - return isinstance(value, (str, Mapping)) or not hasattr(value, "__iter__") - - -if IDOM_DEBUG_MODE.current: - - _debug_is_single_child = _is_single_child - - def _is_single_child(value: Any) -> bool: - if _debug_is_single_child(value): - return True - - from .types import ComponentType - - if hasattr(value, "__iter__") and not hasattr(value, "__len__"): - logger.error( - f"Did not verify key-path integrity of children in generator {value} " - "- pass a sequence (i.e. list of finite length) in order to verify" - ) - else: - for child in value: - if isinstance(child, ComponentType) and child.key is None: - logger.error(f"Key not specified for child in list {child}") - elif isinstance(child, Mapping) and "key" not in child: - # remove 'children' to reduce log spam - child_copy = {**child, "children": _EllipsisRepr()} - logger.error(f"Key not specified for child in list {child_copy}") - - return False - - class _EllipsisRepr: - def __repr__(self) -> str: - return "..." + if isinstance(value, (str, Mapping)) or not hasattr(value, "__iter__"): + return True + if IDOM_DEBUG_MODE.current: + _validate_child_key_integrity(value) + return False + + +def _validate_child_key_integrity(value: Any) -> None: + if hasattr(value, "__iter__") and not hasattr(value, "__len__"): + logger.error( + f"Did not verify key-path integrity of children in generator {value} " + "- pass a sequence (i.e. list of finite length) in order to verify" + ) + else: + for child in value: + if isinstance(child, ComponentType) and child.key is None: + logger.error(f"Key not specified for child in list {child}") + elif isinstance(child, Mapping) and "key" not in child: + # remove 'children' to reduce log spam + child_copy = {**child, "children": _EllipsisRepr()} + logger.error(f"Key not specified for child in list {child_copy}") + + +class _EllipsisRepr: + def __repr__(self) -> str: + return "..." diff --git a/src/idom/logging.py b/src/idom/logging.py index 4f77e72c2..d90887497 100644 --- a/src/idom/logging.py +++ b/src/idom/logging.py @@ -10,10 +10,7 @@ "version": 1, "disable_existing_loggers": False, "loggers": { - "idom": { - "level": "DEBUG" if IDOM_DEBUG_MODE.current else "INFO", - "handlers": ["console"], - }, + "idom": {"handlers": ["console"]}, }, "handlers": { "console": { @@ -37,5 +34,10 @@ """IDOM's root logger instance""" -if IDOM_DEBUG_MODE.current: - ROOT_LOGGER.debug("IDOM is in debug mode") +@IDOM_DEBUG_MODE.subscribe +def _set_debug_level(debug: bool) -> None: + if debug: + ROOT_LOGGER.setLevel("DEBUG") + ROOT_LOGGER.debug("IDOM is in debug mode") + else: + ROOT_LOGGER.setLevel("INFO") diff --git a/src/idom/web/module.py b/src/idom/web/module.py index 9e13d6900..1c6eba98c 100644 --- a/src/idom/web/module.py +++ b/src/idom/web/module.py @@ -36,7 +36,7 @@ def module_from_url( url: str, fallback: Optional[Any] = None, - resolve_exports: bool = IDOM_DEBUG_MODE.current, + resolve_exports: bool | None = None, resolve_exports_depth: int = 5, unmount_before_update: bool = False, ) -> WebModule: @@ -65,7 +65,11 @@ def module_from_url( file=None, export_names=( resolve_module_exports_from_url(url, resolve_exports_depth) - if resolve_exports + if ( + resolve_exports + if resolve_exports is not None + else IDOM_DEBUG_MODE.current + ) else None ), unmount_before_update=unmount_before_update, @@ -80,7 +84,7 @@ def module_from_template( package: str, cdn: str = "https://esm.sh", fallback: Optional[Any] = None, - resolve_exports: bool = IDOM_DEBUG_MODE.current, + resolve_exports: bool | None = None, resolve_exports_depth: int = 5, unmount_before_update: bool = False, ) -> WebModule: @@ -159,7 +163,7 @@ def module_from_file( name: str, file: Union[str, Path], fallback: Optional[Any] = None, - resolve_exports: bool = IDOM_DEBUG_MODE.current, + resolve_exports: bool | None = None, resolve_exports_depth: int = 5, unmount_before_update: bool = False, symlink: bool = False, @@ -209,7 +213,11 @@ def module_from_file( file=target_file, export_names=( resolve_module_exports_from_file(source_file, resolve_exports_depth) - if resolve_exports + if ( + resolve_exports + if resolve_exports is not None + else IDOM_DEBUG_MODE.current + ) else None ), unmount_before_update=unmount_before_update, @@ -236,7 +244,7 @@ def module_from_string( name: str, content: str, fallback: Optional[Any] = None, - resolve_exports: bool = IDOM_DEBUG_MODE.current, + resolve_exports: bool | None = None, resolve_exports_depth: int = 5, unmount_before_update: bool = False, ) -> WebModule: @@ -280,7 +288,11 @@ def module_from_string( file=target_file, export_names=( resolve_module_exports_from_file(target_file, resolve_exports_depth) - if resolve_exports + if ( + resolve_exports + if resolve_exports is not None + else IDOM_DEBUG_MODE.current + ) else None ), unmount_before_update=unmount_before_update, diff --git a/tests/test__option.py b/tests/test__option.py index 45e5e896a..144860117 100644 --- a/tests/test__option.py +++ b/tests/test__option.py @@ -74,3 +74,28 @@ def test_option_set_default(): assert not opt.is_set() assert opt.set_default("new-value") == "new-value" assert opt.is_set() + + +def test_cannot_subscribe_immutable_option(): + opt = Option("A_FAKE_OPTION", "default", mutable=False) + with pytest.raises(TypeError, match="Immutable options cannot be subscribed to"): + opt.subscribe(lambda value: None) + + +def test_option_subscribe(): + opt = Option("A_FAKE_OPTION", "default") + + calls = [] + opt.subscribe(calls.append) + assert calls == ["default"] + + opt.current = "default" + # value did not change, so no trigger + assert calls == ["default"] + + opt.current = "new-1" + opt.current = "new-2" + assert calls == ["default", "new-1", "new-2"] + + opt.unset() + assert calls == ["default", "new-1", "new-2", "default"] diff --git a/tests/test_config.py b/tests/test_config.py new file mode 100644 index 000000000..20f21fe4d --- /dev/null +++ b/tests/test_config.py @@ -0,0 +1,29 @@ +import pytest + +from idom import config +from idom._option import Option + + +@pytest.fixture(autouse=True) +def reset_options(): + options = [value for value in config.__dict__.values() if isinstance(value, Option)] + + should_unset = object() + original_values = [] + for opt in options: + original_values.append(opt.current if opt.is_set() else should_unset) + + yield + + for opt, val in zip(options, original_values): + if val is should_unset: + if opt.is_set(): + opt.unset() + else: + opt.current = val + + +def test_idom_debug_mode_toggle(): + # just check that nothing breaks + config.IDOM_DEBUG_MODE.current = True + config.IDOM_DEBUG_MODE.current = False diff --git a/tests/test_core/test_vdom.py b/tests/test_core/test_vdom.py index 008a4f724..aeca2b4ea 100644 --- a/tests/test_core/test_vdom.py +++ b/tests/test_core/test_vdom.py @@ -317,16 +317,6 @@ def test_invalid_vdom(value, error_message_pattern): validate_vdom_json(value) -@pytest.mark.skipif(not IDOM_DEBUG_MODE.current, reason="Only logs in debug mode") -def test_debug_log_if_children_in_attributes(caplog): - idom.vdom("div", {"children": ["hello"]}) - assert len(caplog.records) == 1 - assert caplog.records[0].message.startswith( - "Reserved key 'children' found in attributes" - ) - caplog.records.clear() - - @pytest.mark.skipif(not IDOM_DEBUG_MODE.current, reason="Only logs in debug mode") def test_debug_log_cannot_verify_keypath_for_genereators(caplog): idom.vdom("div", (1 for i in range(10))) From 98a3d1e522a8c9131c0f6818817d13bc7d5c7412 Mon Sep 17 00:00:00 2001 From: Alessio Civitillo <54931660+acivitillo@users.noreply.github.com> Date: Thu, 1 Dec 2022 19:53:13 +0100 Subject: [PATCH 117/253] Form serialize (#699) * first try to serialize form * fix up form serialization * fix test * add form element serialization * delete temp file Co-authored-by: Alessio Civitillo <@acivitillo@dyvenia.com> Co-authored-by: rmorshea --- docs/source/about/changelog.rst | 5 +- .../idom-client-react/src/event-to-object.js | 30 +++++++ .../tests/event-to-object.test.js | 79 ++++++++++++------- 3 files changed, 84 insertions(+), 30 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 7587273ec..3db857a26 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -25,14 +25,15 @@ Unreleased **Removed** -- :pull:`840` - remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option +- :pull:`840` - Remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option - :pull:`835` - ``serve_static_files`` option from backend configuration **Added** -- :pull:`835` - ability to customize the ```` element of IDOM's built-in client. +- :pull:`835` - Ability to customize the ```` element of IDOM's built-in client. - :pull:`835` - ``vdom_to_html`` utility function. - :pull:`843` - Ability to subscribe to changes that are made to mutable options. +- :pull:`699` - Support for form element serialization **Fixed** diff --git a/src/client/packages/idom-client-react/src/event-to-object.js b/src/client/packages/idom-client-react/src/event-to-object.js index b11e65366..e35f652e5 100644 --- a/src/client/packages/idom-client-react/src/event-to-object.js +++ b/src/client/packages/idom-client-react/src/event-to-object.js @@ -49,6 +49,20 @@ const elementTransformCategories = { return {}; } }, + hasElements: (element) => { + const { elements } = element; + const indices = [...Array(elements.length).keys()]; + return { + elements: indices.map((index) => serializeDomElement(elements[index])), + }; + }, + hasName: (element) => { + const { name } = element; + // In some edge cases, "name" may not be a string. For example, in the case of + // `
`, the "name" attribute of the `
` will + // be the `` element. + return typeof name === "string" ? { name } : {}; + }, }; function defaultElementTransform(element) { @@ -69,6 +83,22 @@ const elementTagCategories = { ], hasCurrentTime: ["AUDIO", "VIDEO"], hasFiles: ["INPUT"], + hasElements: ["FORM"], + hasName: [ + "BUTTON", + "FORM", + "FIELDSET", + "IFRAME", + "INPUT", + "KEYGEN", + "OBJECT", + "OUTPUT", + "SELECT", + "TEXTAREA", + "MAP", + "META", + "PARAM", + ], }; const elementTransforms = {}; diff --git a/src/client/packages/idom-client-react/tests/event-to-object.test.js b/src/client/packages/idom-client-react/tests/event-to-object.test.js index 3dd3852fd..596a9dd4e 100644 --- a/src/client/packages/idom-client-react/tests/event-to-object.test.js +++ b/src/client/packages/idom-client-react/tests/event-to-object.test.js @@ -4,22 +4,40 @@ import * as assert from "uvu/assert"; import { serializeEvent } from "../src/event-to-object.js"; import "./tooling/setup.js"; -function assertEqualSerializedEventData(eventData, expectedSerializedData) { - const mockBoundingRect = { - left: 0, - top: 0, - right: 0, - bottom: 0, - x: 0, - y: 0, - width: 0, - }; +const mockBoundingRect = { + left: 0, + top: 0, + right: 0, + bottom: 0, + x: 0, + y: 0, + width: 0, +}; - const mockElement = { - tagName: null, - getBoundingClientRect: () => mockBoundingRect, - }; +const mockElement = { + tagName: null, + getBoundingClientRect: () => mockBoundingRect, +}; +const allTargetData = { + files: [ + { + lastModified: 0, + name: "something", + type: "some-type", + size: 0, + }, + ], + value: "something", + currentTime: 35, + tagName: null, // overwritten in tests + elements: [ + { ...mockElement, tagName: "INPUT", value: "first" }, + { ...mockElement, tagName: "INPUT", value: "second" }, + ], +}; + +function assertEqualSerializedEventData(eventData, expectedSerializedData) { const commonEventData = { target: mockElement, currentTarget: mockElement, @@ -38,20 +56,6 @@ function assertEqualSerializedEventData(eventData, expectedSerializedData) { ); } -const allTargetData = { - files: [ - { - lastModified: 0, - name: "something", - type: "some-type", - size: 0, - }, - ], - value: "something", - currentTime: 35, - tagName: null, // overwritten in tests -}; - [ { case: "adds 'files' and 'value' attributes for INPUT if type=file", @@ -76,6 +80,24 @@ const allTargetData = { tagName, output: { target: { currentTime: allTargetData.currentTime } }, })), + ...["FORM"].map((tagName) => ({ + case: `adds 'elements' attribute for ${tagName} element`, + tagName, + output: { + target: { + elements: [ + { + value: "first", + boundingClientRect: mockBoundingRect, + }, + { + value: "second", + boundingClientRect: mockBoundingRect, + }, + ], + }, + }, + })), ].forEach((expectation) => { test(`serializeEvent() ${expectation.case}`, () => { const eventData = { @@ -113,6 +135,7 @@ const allEventData = { clientX: "clientX", clientY: "clientY", ctrlKey: "ctrlKey", + form: "form", metaKey: "metaKey", pageX: "pageX", pageY: "pageY", From 9c3c300aa571e650c3125428df8c87aa4ba852f4 Mon Sep 17 00:00:00 2001 From: Mark <16909269+Archmonger@users.noreply.github.com> Date: Thu, 1 Dec 2022 11:24:38 -0800 Subject: [PATCH 118/253] `html_to_vdom` transform to remove html/body but preserve head content (#832) * Insert head content into html_to_vdom * more efficient node appending * add changelog * nodes -> body node * parsed_document -> html_node * remove useless has_root_node variable * fix comment * del_html_body_transform * fix type hint errors * type hint fixes 2 * remove unusable head and body tags * uno mas * import future annotations * fix docs warnings * clean up last warning * fix docstrings * del_html_body_transform docstrings * re-add head API * fix changelog PR links * docstring cleanup * Better type hint * Revert "Better type hint" This reverts commit d78afdb99eb6e6a71df31515c0e50c7e7224537a. * more concise transform implementation * fix merge error * merge changelog better * annotate as VdomDict Co-authored-by: Ryan Morshead --- docs/source/about/changelog.rst | 12 ++++--- src/idom/html.py | 2 -- src/idom/utils.py | 59 ++++++++++++++++----------------- tests/test_utils.py | 40 ++++++++++++++++++++-- 4 files changed, 73 insertions(+), 40 deletions(-) diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 3db857a26..6319a3b63 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,21 +23,23 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- -**Removed** - -- :pull:`840` - Remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option -- :pull:`835` - ``serve_static_files`` option from backend configuration - **Added** - :pull:`835` - Ability to customize the ```` element of IDOM's built-in client. - :pull:`835` - ``vdom_to_html`` utility function. - :pull:`843` - Ability to subscribe to changes that are made to mutable options. +- :pull:`832` - ``del_html_head_body_transform`` to remove ````, ````, and ```` while preserving children. - :pull:`699` - Support for form element serialization **Fixed** - :issue:`582` - ``IDOM_DEBUG_MODE`` is now mutable and can be changed at runtime +- :pull:`832` - Fix ``html_to_vdom`` improperly removing ````, ````, and ```` nodes. + +**Removed** +- :pull:`832` - Removed ``idom.html.body`` as it is currently unusable due to technological limitations, and thus not needed. +- :pull:`840` - remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option +- :pull:`835` - ``serve_static_files`` option from backend configuration v0.41.0 diff --git a/src/idom/html.py b/src/idom/html.py index 45db97463..7421e2f2a 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -14,7 +14,6 @@ **Content sectioning** -- :func:`body` - :func:`address` - :func:`article` - :func:`aside` @@ -189,7 +188,6 @@ def _(*children: Any, key: Key | None = None) -> VdomDict: title = make_vdom_constructor("title") # Content sectioning -body = make_vdom_constructor("body") address = make_vdom_constructor("address") article = make_vdom_constructor("article") aside = make_vdom_constructor("aside") diff --git a/src/idom/utils.py b/src/idom/utils.py index fde800abb..1deab122d 100644 --- a/src/idom/utils.py +++ b/src/idom/utils.py @@ -5,7 +5,7 @@ from typing import Any, Callable, Generic, Iterable, TypeVar, cast from lxml import etree -from lxml.html import fragments_fromstring, tostring +from lxml.html import fromstring, tostring import idom from idom.core.types import VdomDict @@ -85,7 +85,7 @@ def html_to_vdom( using a ``key=...`` attribute within your HTML tag. Parameters: - source: + html: The raw HTML as a string transforms: Functions of the form ``transform(old) -> new`` where ``old`` is a VDOM @@ -99,15 +99,15 @@ def html_to_vdom( raise TypeError(f"Expected html to be a string, not {type(html).__name__}") # If the user provided a string, convert it to a list of lxml.etree nodes - parser = etree.HTMLParser( - remove_comments=True, - remove_pis=True, - remove_blank_text=True, - recover=not strict, - ) try: - nodes: list[etree._Element] = fragments_fromstring( - html, no_leading_text=True, parser=parser + root_node: etree._Element = fromstring( + html.strip(), + parser=etree.HTMLParser( + remove_comments=True, + remove_pis=True, + remove_blank_text=True, + recover=not strict, + ), ) except etree.XMLSyntaxError as e: if not strict: @@ -119,25 +119,8 @@ def html_to_vdom( "you can disable the strict parameter on html_to_vdom().\n" "Otherwise, repair your broken HTML and try again." ) from e - has_root_node = len(nodes) == 1 - - # Find or create a root node - if has_root_node: - root_node = nodes[0] - else: - # etree.Element requires a non-empty tag - we correct this below - root_node = etree.Element("TEMP", None, None) - for child in nodes: - root_node.append(child) - # Convert the lxml node to a VDOM dict - vdom = _etree_to_vdom(root_node, transforms) - - # Change the artificially created root node to a React Fragment, instead of a div - if not has_root_node: - vdom["tagName"] = "" - - return vdom + return _etree_to_vdom(root_node, transforms) class HTMLParseError(etree.LxmlSyntaxError): # type: ignore[misc] @@ -147,10 +130,10 @@ class HTMLParseError(etree.LxmlSyntaxError): # type: ignore[misc] def _etree_to_vdom( node: etree._Element, transforms: Iterable[_ModelTransform] ) -> VdomDict: - """Recusively transform an lxml etree node into a DOM model + """Transform an lxml etree node into a DOM model Parameters: - source: + node: The ``lxml.etree._Element`` node transforms: Functions of the form ``transform(old) -> new`` where ``old`` is a VDOM @@ -162,7 +145,7 @@ def _etree_to_vdom( f"Expected node to be a etree._Element, not {type(node).__name__}" ) - # This will recursively call _etree_to_vdom() on all children + # Recursively call _etree_to_vdom() on all children children = _generate_vdom_children(node, transforms) # Convert the lxml node to a VDOM dict @@ -289,6 +272,20 @@ def _hypen_to_camel_case(string: str) -> str: return first.lower() + remainder.title().replace("-", "") +def del_html_head_body_transform(vdom: VdomDict) -> VdomDict: + """Transform intended for use with `html_to_vdom`. + + Removes ``, ``, and `` while preserving their children. + + Parameters: + vdom: + The VDOM dictionary to transform. + """ + if vdom["tagName"] in {"html", "body", "head"}: + return {"tagName": "", "children": vdom["children"]} + return vdom + + def _vdom_attr_to_html_str(key: str, value: Any) -> tuple[str, str]: if key == "style": if isinstance(value, dict): diff --git a/tests/test_utils.py b/tests/test_utils.py index 405cdce05..f7518b014 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -4,7 +4,12 @@ import idom from idom import html -from idom.utils import HTMLParseError, html_to_vdom, vdom_to_html +from idom.utils import ( + HTMLParseError, + del_html_head_body_transform, + html_to_vdom, + vdom_to_html, +) def test_basic_ref_behavior(): @@ -144,7 +149,7 @@ def test_html_to_vdom_with_no_parent_node(): source = "

Hello

World
" expected = { - "tagName": "", + "tagName": "div", "children": [ {"tagName": "p", "children": ["Hello"]}, {"tagName": "div", "children": ["World"]}, @@ -154,6 +159,37 @@ def test_html_to_vdom_with_no_parent_node(): assert html_to_vdom(source) == expected +def test_del_html_body_transform(): + source = """ + + + + + My Title + + +

Hello World

+ + + """ + + expected = { + "tagName": "", + "children": [ + { + "tagName": "", + "children": [{"tagName": "title", "children": ["My Title"]}], + }, + { + "tagName": "", + "children": [{"tagName": "h1", "children": ["Hello World"]}], + }, + ], + } + + assert html_to_vdom(source, del_html_head_body_transform) == expected + + SOME_OBJECT = object() From 55a4d1677a519be5ae1f5e16f3b649e49d3b0f89 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 1 Dec 2022 12:00:42 -0800 Subject: [PATCH 119/253] add svg elements (#844) * add svg elements * make snake case * Update src/idom/svg.py --- src/idom/__init__.py | 3 +- src/idom/html.py | 120 ++++++++++++++++++++++++++++++++++++- src/idom/svg.py | 140 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 260 insertions(+), 3 deletions(-) create mode 100644 src/idom/svg.py diff --git a/src/idom/__init__.py b/src/idom/__init__.py index ad6a34db5..1047c2d78 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -1,4 +1,4 @@ -from . import backend, config, html, logging, sample, types, web +from . import backend, config, html, logging, sample, svg, types, web from .backend.hooks import use_connection, use_location, use_scope from .backend.utils import run from .core import hooks @@ -41,6 +41,7 @@ "run", "sample", "Stop", + "svg", "types", "use_callback", "use_connection", diff --git a/src/idom/html.py b/src/idom/html.py index 7421e2f2a..9fd9cd092 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -159,8 +159,124 @@ from typing import Any, Mapping -from .core.types import Key, VdomDict -from .core.vdom import coalesce_attributes_and_children, make_vdom_constructor +from idom.core.types import Key, VdomDict +from idom.core.vdom import coalesce_attributes_and_children, make_vdom_constructor + + +__all__ = ( + "_", + "a", + "abbr", + "address", + "area", + "article", + "aside", + "audio", + "b", + "base", + "bdi", + "bdo", + "blockquote", + "body", + "br", + "button", + "canvas", + "caption", + "cite", + "code", + "col", + "colgroup", + "data", + "dd", + "del_", + "details", + "dialog", + "div", + "dl", + "dt", + "em", + "embed", + "fieldset", + "figcaption", + "figure", + "footer", + "form", + "h1", + "h2", + "h3", + "h4", + "h5", + "h6", + "head", + "header", + "hr", + "i", + "iframe", + "img", + "input", + "ins", + "kbd", + "label", + "legend", + "li", + "link", + "main", + "map", + "mark", + "math", + "menu", + "menuitem", + "meta", + "meter", + "nav", + "noscript", + "object", + "ol", + "option", + "output", + "p", + "param", + "picture", + "portal", + "pre", + "progress", + "q", + "rp", + "rt", + "ruby", + "s", + "samp", + "script", + "section", + "select", + "slot", + "small", + "source", + "span", + "strong", + "style", + "sub", + "summary", + "sup", + "svg", + "table", + "tbody", + "td", + "template", + "textarea", + "tfoot", + "th", + "thead", + "time", + "title", + "tr", + "track", + "u", + "ul", + "var", + "video", + "wbr", +) def _(*children: Any, key: Key | None = None) -> VdomDict: diff --git a/src/idom/svg.py b/src/idom/svg.py new file mode 100644 index 000000000..655c0feab --- /dev/null +++ b/src/idom/svg.py @@ -0,0 +1,140 @@ +from idom.core.vdom import make_vdom_constructor + + +__all__ = ( + "a", + "animate", + "animate_motion", + "animate_transform", + "circle", + "clip_path", + "defs", + "desc", + "discard", + "ellipse", + "fe_blend", + "fe_color_matrix", + "fe_component_transfer", + "fe_composite", + "fe_convolve_matrix", + "fe_diffuse_lighting", + "fe_displacement_map", + "fe_distant_light", + "fe_drop_shadow", + "fe_flood", + "fe_func_a", + "fe_func_b", + "fe_func_g", + "fe_func_r", + "fe_gaussian_blur", + "fe_image", + "fe_merge", + "fe_merge_node", + "fe_morphology", + "fe_offset", + "fe_point_light", + "fe_specular_lighting", + "fe_spot_light", + "fe_tile", + "fe_turbulence", + "filter", + "foreign_object", + "g", + "hatch", + "hatchpath", + "image", + "line", + "linear_gradient", + "marker", + "mask", + "metadata", + "mpath", + "path", + "pattern", + "polygon", + "polyline", + "radial_gradient", + "rect", + "script", + "set", + "stop", + "style", + "svg", + "switch", + "symbol", + "text", + "text_path", + "title", + "tspan", + "use", + "view", +) + +a = make_vdom_constructor("a") +animate = make_vdom_constructor("animate", allow_children=False) +animate_motion = make_vdom_constructor("animateMotion", allow_children=False) +animate_transform = make_vdom_constructor("animateTransform", allow_children=False) +circle = make_vdom_constructor("circle", allow_children=False) +clip_path = make_vdom_constructor("clipPath") +defs = make_vdom_constructor("defs") +desc = make_vdom_constructor("desc", allow_children=False) +discard = make_vdom_constructor("discard", allow_children=False) +ellipse = make_vdom_constructor("ellipse", allow_children=False) +fe_blend = make_vdom_constructor("feBlend", allow_children=False) +fe_color_matrix = make_vdom_constructor("feColorMatrix", allow_children=False) +fe_component_transfer = make_vdom_constructor( + "feComponentTransfer", allow_children=False +) +fe_composite = make_vdom_constructor("feComposite", allow_children=False) +fe_convolve_matrix = make_vdom_constructor("feConvolveMatrix", allow_children=False) +fe_diffuse_lighting = make_vdom_constructor("feDiffuseLighting", allow_children=False) +fe_displacement_map = make_vdom_constructor("feDisplacementMap", allow_children=False) +fe_distant_light = make_vdom_constructor("feDistantLight", allow_children=False) +fe_drop_shadow = make_vdom_constructor("feDropShadow", allow_children=False) +fe_flood = make_vdom_constructor("feFlood", allow_children=False) +fe_func_a = make_vdom_constructor("feFuncA", allow_children=False) +fe_func_b = make_vdom_constructor("feFuncB", allow_children=False) +fe_func_g = make_vdom_constructor("feFuncG", allow_children=False) +fe_func_r = make_vdom_constructor("feFuncR", allow_children=False) +fe_gaussian_blur = make_vdom_constructor("feGaussianBlur", allow_children=False) +fe_image = make_vdom_constructor("feImage", allow_children=False) +fe_merge = make_vdom_constructor("feMerge", allow_children=False) +fe_merge_node = make_vdom_constructor("feMergeNode", allow_children=False) +fe_morphology = make_vdom_constructor("feMorphology", allow_children=False) +fe_offset = make_vdom_constructor("feOffset", allow_children=False) +fe_point_light = make_vdom_constructor("fePointLight", allow_children=False) +fe_specular_lighting = make_vdom_constructor("feSpecularLighting", allow_children=False) +fe_spot_light = make_vdom_constructor("feSpotLight", allow_children=False) +fe_tile = make_vdom_constructor("feTile", allow_children=False) +fe_turbulence = make_vdom_constructor("feTurbulence", allow_children=False) +filter = make_vdom_constructor("filter", allow_children=False) +foreign_object = make_vdom_constructor("foreignObject", allow_children=False) +g = make_vdom_constructor("g") +hatch = make_vdom_constructor("hatch", allow_children=False) +hatchpath = make_vdom_constructor("hatchpath", allow_children=False) +image = make_vdom_constructor("image", allow_children=False) +line = make_vdom_constructor("line", allow_children=False) +linear_gradient = make_vdom_constructor("linearGradient", allow_children=False) +marker = make_vdom_constructor("marker") +mask = make_vdom_constructor("mask") +metadata = make_vdom_constructor("metadata", allow_children=False) +mpath = make_vdom_constructor("mpath", allow_children=False) +path = make_vdom_constructor("path", allow_children=False) +pattern = make_vdom_constructor("pattern") +polygon = make_vdom_constructor("polygon", allow_children=False) +polyline = make_vdom_constructor("polyline", allow_children=False) +radial_gradient = make_vdom_constructor("radialGradient", allow_children=False) +rect = make_vdom_constructor("rect", allow_children=False) +script = make_vdom_constructor("script", allow_children=False) +set = make_vdom_constructor("set", allow_children=False) +stop = make_vdom_constructor("stop", allow_children=False) +style = make_vdom_constructor("style", allow_children=False) +svg = make_vdom_constructor("svg") +switch = make_vdom_constructor("switch") +symbol = make_vdom_constructor("symbol") +text = make_vdom_constructor("text", allow_children=False) +text_path = make_vdom_constructor("textPath", allow_children=False) +title = make_vdom_constructor("title", allow_children=False) +tspan = make_vdom_constructor("tspan", allow_children=False) +use = make_vdom_constructor("use", allow_children=False) +view = make_vdom_constructor("view", allow_children=False) From 039d08d4a954a293ab87479316c069aa8ccddce2 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Thu, 1 Dec 2022 15:48:15 -0800 Subject: [PATCH 120/253] remove body from all --- src/idom/html.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/idom/html.py b/src/idom/html.py index 9fd9cd092..964af5d6e 100644 --- a/src/idom/html.py +++ b/src/idom/html.py @@ -177,7 +177,6 @@ "bdi", "bdo", "blockquote", - "body", "br", "button", "canvas", From f196fbb4313c616b802c67fd96a0111baf4c4dc8 Mon Sep 17 00:00:00 2001 From: rmorshea Date: Fri, 2 Dec 2022 11:30:18 -0800 Subject: [PATCH 121/253] version 0.42.0 --- VERSION | 2 +- docs/source/about/changelog.rst | 7 +++++++ src/client/package-lock.json | 8 ++++---- src/client/package.json | 2 +- src/client/packages/idom-app-react/package.json | 2 +- src/client/packages/idom-client-react/package.json | 2 +- src/idom/__init__.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/VERSION b/VERSION index 72a8a6313..787ffc30a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.41.0 +0.42.0 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 6319a3b63..617b09d57 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,13 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +No changes. + + +v0.42.0 +------- +:octicon:`milestone` *released on 2022-12-02* + **Added** - :pull:`835` - Ability to customize the ```` element of IDOM's built-in client. diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 2a3cc59bd..117163992 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1,11 +1,11 @@ { "name": "client", - "version": "0.41.0", + "version": "0.42.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.41.0", + "version": "0.42.0", "license": "MIT", "workspaces": [ "./packages/*" @@ -1750,7 +1750,7 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "packages/idom-app-react": { - "version": "0.41.0", + "version": "0.42.0", "license": "MIT", "dependencies": { "idom-client-react": "file:packages/idom-client-react", @@ -1776,7 +1776,7 @@ } }, "packages/idom-client-react": { - "version": "0.41.0", + "version": "0.42.0", "license": "MIT", "dependencies": { "fast-json-patch": "^3.0.0-1", diff --git a/src/client/package.json b/src/client/package.json index 46619cf11..dcee02650 100644 --- a/src/client/package.json +++ b/src/client/package.json @@ -14,7 +14,7 @@ "publish": "npm --workspaces publish", "test": "npm --workspaces test" }, - "version": "0.41.0", + "version": "0.42.0", "workspaces": [ "./packages/*" ] diff --git a/src/client/packages/idom-app-react/package.json b/src/client/packages/idom-app-react/package.json index b278cf0b7..6b1b81c44 100644 --- a/src/client/packages/idom-app-react/package.json +++ b/src/client/packages/idom-app-react/package.json @@ -20,5 +20,5 @@ "format": "prettier --write ./src", "test": "echo 'no tests'" }, - "version": "0.41.0" + "version": "0.42.0" } diff --git a/src/client/packages/idom-client-react/package.json b/src/client/packages/idom-client-react/package.json index 29c5cabbe..0fd5f836b 100644 --- a/src/client/packages/idom-client-react/package.json +++ b/src/client/packages/idom-client-react/package.json @@ -31,5 +31,5 @@ "test": "uvu tests" }, "type": "module", - "version": "0.41.0" + "version": "0.42.0" } diff --git a/src/idom/__init__.py b/src/idom/__init__.py index 1047c2d78..f092c326a 100644 --- a/src/idom/__init__.py +++ b/src/idom/__init__.py @@ -23,7 +23,7 @@ __author__ = "idom-team" -__version__ = "0.41.0" # DO NOT MODIFY +__version__ = "0.42.0" # DO NOT MODIFY __all__ = [ "backend", From 1e3fac1e4227ac3d5ff225970c95e0e6acfef6ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Dec 2022 10:54:44 -0800 Subject: [PATCH 122/253] Bump qs from 6.5.2 to 6.5.3 in /src/client (#853) Bumps [qs](https://github.com/ljharb/qs) from 6.5.2 to 6.5.3. - [Release notes](https://github.com/ljharb/qs/releases) - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.5.2...v6.5.3) --- updated-dependencies: - dependency-name: qs dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/client/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/client/package-lock.json b/src/client/package-lock.json index 117163992..4071390f9 100644 --- a/src/client/package-lock.json +++ b/src/client/package-lock.json @@ -1167,9 +1167,9 @@ } }, "node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "engines": { "node": ">=0.6" } @@ -2576,9 +2576,9 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" }, "querystringify": { "version": "2.2.0", From 4bc4a2a49921573476f67af14d9786e125b7f2d4 Mon Sep 17 00:00:00 2001 From: Ryan Morshead Date: Wed, 4 Jan 2023 21:27:13 -0800 Subject: [PATCH 123/253] fix tests + upgrade doc dependencies (#862) * fix tests + upgrade doc dependencies * fake the User-Agent --- docs/source/_custom_js/package-lock.json | 2 +- docs/source/_exts/async_doctest.py | 7 +++---- docs/source/_exts/idom_example.py | 2 +- docs/source/_exts/idom_view.py | 2 +- docs/source/_static/css/idom-view.css | 5 ----- docs/source/_static/css/set-color-scheme.css | 3 --- docs/source/conf.py | 2 +- .../getting-started/installing-idom.rst | 7 +++---- requirements/build-docs.txt | 19 +++++++++---------- requirements/pkg-extras.txt | 1 + scripts/live_docs.py | 10 ++++++++-- src/idom/backend/sanic.py | 7 +++++-- src/idom/web/utils.py | 7 ++++++- 13 files changed, 39 insertions(+), 35 deletions(-) delete mode 100644 docs/source/_static/css/set-color-scheme.css diff --git a/docs/source/_custom_js/package-lock.json b/docs/source/_custom_js/package-lock.json index 8632d1665..ed1027145 100644 --- a/docs/source/_custom_js/package-lock.json +++ b/docs/source/_custom_js/package-lock.json @@ -19,7 +19,7 @@ } }, "../../../src/client/packages/idom-client-react": { - "version": "0.41.0", + "version": "0.42.0", "integrity": "sha512-pIK5eNwFSHKXg7ClpASWFVKyZDYxz59MSFpVaX/OqJFkrJaAxBuhKGXNTMXmuyWOL5Iyvb/ErwwDRxQRzMNkfQ==", "license": "MIT", "dependencies": { diff --git a/docs/source/_exts/async_doctest.py b/docs/source/_exts/async_doctest.py index 7db4116d9..905c1d00a 100644 --- a/docs/source/_exts/async_doctest.py +++ b/docs/source/_exts/async_doctest.py @@ -8,16 +8,15 @@ test_template = """ -import asyncio as __asyncio +import asyncio as __test_template_asyncio -async def __run(): +async def __test_template__main(): {test} globals().update(locals()) -loop = __asyncio.get_event_loop() -loop.run_until_complete(__run()) +__test_template_asyncio.run(__test_template__main()) """ diff --git a/docs/source/_exts/idom_example.py b/docs/source/_exts/idom_example.py index ba89e1809..0d0ef61f7 100644 --- a/docs/source/_exts/idom_example.py +++ b/docs/source/_exts/idom_example.py @@ -89,7 +89,7 @@ def run(self): [], {}, _make_tab_items(labeled_tab_items), - self.lineno - 1, + self.lineno - 2, self.content_offset, "", self.state, diff --git a/docs/source/_exts/idom_view.py b/docs/source/_exts/idom_view.py index 995640301..e3bc322b5 100644 --- a/docs/source/_exts/idom_view.py +++ b/docs/source/_exts/idom_view.py @@ -38,7 +38,7 @@ def run(self):
@@ -57,4 +59,4 @@ def run(self): def setup(app: Sphinx) -> None: - app.add_directive("idom-view", IteractiveWidget) + app.add_directive("reactpy-view", IteractiveWidget) diff --git a/docs/source/_static/css/furo-theme-overrides.css b/docs/source/_static/css/furo-theme-overrides.css index cbe4e99ef..a258e025e 100644 --- a/docs/source/_static/css/furo-theme-overrides.css +++ b/docs/source/_static/css/furo-theme-overrides.css @@ -1,8 +1,6 @@ -body { - --admonition-title-font-size: 1rem !important; - --admonition-font-size: 1rem !important; -} - .sidebar-container { width: 18em; } +.sidebar-brand-text { + display: none; +} diff --git a/docs/source/_static/css/idom-view.css b/docs/source/_static/css/reactpy-view.css similarity index 100% rename from docs/source/_static/css/idom-view.css rename to docs/source/_static/css/reactpy-view.css diff --git a/docs/source/_static/css/sphinx-design-overrides.css b/docs/source/_static/css/sphinx-design-overrides.css index cc9b285c0..767d9d16c 100644 --- a/docs/source/_static/css/sphinx-design-overrides.css +++ b/docs/source/_static/css/sphinx-design-overrides.css @@ -1,12 +1,3 @@ -body { - --sd-color-info: var(--color-admonition-title-background--note); - --sd-color-warning: var(--color-admonition-title-background--warning); - --sd-color-danger: var(--color-admonition-title-background--danger); - --sd-color-info-text: var(--color-admonition-title--note); - --sd-color-warning-text: var(--color-admonition-title--warning); - --sd-color-danger-text: var(--color-admonition-title--danger); -} - .sd-card-body { display: flex; flex-direction: column; diff --git a/docs/source/_static/install-and-run-idom.gif b/docs/source/_static/install-and-run-idom.gif deleted file mode 100644 index 67d226a120c98213af94b5d2646202d7eaa38ba8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2055545 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

E9LBo_2H8gZ{X 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%0DwPRIYX$Uv7Wom)xx)^JiQ%eXbS6LswVC(m0S z!EPVRXe}u}URGH}S4RY!%1LpI`#FyQMCGDIZA8rWwFu~~=9gx9;XciWLYpJ*16Zj~ zG|k}d=(`SlY0-cj?b9Ly;ufv@d7`|f(4`Fi_Ry2Z1{osL|r9(7pVs#9xrL=jUtR&=4p@r=KZ1aae`! zXt$NCx$-u=i>2~ku2~1gF%^fwgQU0BSo-TY+p=D<11I7;`fS;&Q^oyKfhR51Sh6?= zvtfvREpvUsC7a!j(~y%!qS&kGE` z=F~Y3eEB>1<-f%*=X$Q#60bd+`;3_xPfq@PH~(|j*~6$VE`*Y6du#3UJIczOKXkI7 zeb-C8i;Q<6Lv;e8y1)3yNu(XWPetHp$A}Y8UND&}NVyFO#du3x>r<`ww+p^u@E6*n zb#YYgEJO<2xbC=)yH>v>uKdbX@p+=s$0>v<>y?d<>VFXZbqbaqbTo8@W;qXx&rvYhU|S?oby`DTtH(9C!Q3cmVZKlGgQJ@7nuKmqfVi_5 z{uHsG(_W}|w-!MO`%fBxo_^ugaHR6aAtSrOKH@y%&I`QZz5shX@k6?k67HjF%G{j8+)8b`lRK)-3mAQ^R7*CCcJq%ZpMl z;r1UX8FSCXlDGEQZ&TgGN5i_Ra&b~O>}&d#yT8u$hSJ#@8NPW$Pq|VCS#IB z`-O<>#MREG9&^;^gT%6-5IV&6n?qG5 z1scw>?ar0-a|$kjnh)oi*nm!{?d?woi?l0ycbUhInB#+-pl-~F=a9$`%w#a|XdGfV z&yW>yhPH!r$c|PM5Zi8uNf}FWSm3YeL2`1mP5dFZ73!i@tj~tnvKZSpt%gV@AmA1|l6US%*|#G#jdt*88I7SzY67PnG1tGKllO6ll|9Qa;(ivQrj<#nhPVsp&VjO3I}W zM6m58OU2f-(gCBIthQ@_prRnL>F!C^bL)Y`cre*$?n z^Y)djDIE=)>67|+OWSP7znr7O9%IKs`Z3AM=<7Y{RX;Oy?;|_zW=Y~ppZ{#z?xQH- zep}-$SXX{Nj!h?T+KXNsI^!Pc3P=7wLE~Uh_xjjvryJKO)jCt92)6ALKNp0J9=JH!l5oDQWf_VsS-`D^ct=h3|&d_U9U|VMa@iPxCLjgM?ih) zLH&&{=``oZj@F0+Y((aLS{dbq8O$}x$t{~Wfatn&jE$mqKe^tGxb?RV_x@pDUMRZC zm3z11lFi8!Hbv{dh}cFX^ze)k$I~=#S-oz2`^3W!4@M65KeFGy=bJTm`@`Qcdm{*% zUKj}&5772hcCW-`kD7{~OQBe6g#$UsA1qCx>_RArnb||IymJ zKfCmq*Tj|dw~_t=$zwkk^P=F{^IsHUiaqA*b0SN@rE%;JzQQu~BUCLn_k|5G_4lcL z*qEyJbFqE>`=HH5JC)3iy^K8SvbD1#-gZF@M(`2iokEP>eKZ>B^#1+7USFGtdntZ@ z{~%x4-kblAx$>Vih|=@y>-Ps2JIX7fB>^wBbxQ)@A@bjkuf-5L!{p?dr3;V$JhuNk z^!V@N-Q`i+f8Rg;BbNX2r^kvJ|BNzg`X#P!{N###P`lg zkuz+k{g01>&d)DPw@+~k^05EpWfDIy)4r~)e(t(4*INlo+aEhcAE`1rA(2cT7#7v- zUMttVDRK1h=vlc3XLpswzPhqktmU@v^^0<{CM8Kx$P4b=LmXJrDj6{aWq*sn~d0%#}Ef-4F{xHWMN*taI7?{3{6jB>Fdz z?Z-PObhkF7hp^EoO#X$a;^7{Md`5V&qZrjDq@S?;d!tX2t+uIxi0$`wRhKh19wzBl zO1SHYus}7LnHhpS9`q@f>G$HYW^E8ZJ%pmAddt||{M>z>la%;QT^8~HkIObQ>NEiv z_V|tETI;q_a%J5(CtT24TFGqjEw--@Rg&xb+)eZLu-DF?qu+=wN_i76Sufg5pL<2m ze)F?aOQ|z4Cii9D#NAt+d~>8nG+;LIiT>-^qvN{*-lj~){hYOy4djlb$~}BCvJcd{ z11uVKY~t;4P(*99LjbL^K2x{)XGh?wvlJQe;}v(34ml7wX|Hsx`V9nXq+YHV$h{kk zCgW7F@=;Uc#6pxC9RxF-0s>D)!>2$9sX%)EcYG29q_fmYLX=mjSYk<0oYR*v*rgCL zX&Sj}angdrUutR@yaTEV0_}P$riCYBkGvbtEeMC*|H|C;e+k(9%S|PUT4OV2`9>Nu z-I*o{ez~o=Gq-4>1lucPm`p7fC9lfPD9`PT*2{A%Q70Q1A_-m7VY!ON@z0qSTqD<0 z_mFdMj&McVw3(Q#GvmStJ6>?)^3EfsKjfG%?(*JBMo<^*w28?H$K91oSpw3tr%9t` zAA^rPI3v|#QXSrwwGVAU2|Ith-{?;o_#`=^Hfufc+J#IN_qnX4Y1MOpQZ=V1^L1cq z21q85Xq$#c5{U<7%xUDICYa<0?vU+b8T$l=C|#D-i@P8zg>DtdZ!QfHD$F0Vg*8il z8Nz0ZV-I%bYiy4wugcFc&TDbOdexw6qJQt7Ivi=oiPsMq5+KYs!vnU#fT%g2_3PEh zal^wQAECWkgm;DvpYwE>VKw!~wjd^xGfuzxA_>qOdmt~8dEH>k`!M2;{TWS zpI$H1mU7S;-EiGo5&|(HkLv%?8r?6E6wdY4Rs5G z(-3>rB+L3uBP8r807y~cPOswqOVMEwJF~2$(4(MIIzlMs%9U3;5h9KQTdgG`{|ehUv?sA}pDUo==@??$ z_Gbk_5DKuK4o^@6uGO3J!4gsHcYBoLQ*aS8V>xHj8uXhGD+|^O@?U8AlEIG?G_@Sg zoIUsh%B@4L)2!MUX=q8sEM5M)Tf#oJ$Oc2aiz*g@o5SoE3ccrrNk+Wy4dlI@uxBAf z1~`_&TH%mf=+W~3mUkVzk~M8<|9x+cIEQ%=b7&?uDR`u<>Rx`*T02{J|H3f}E_I=w zm}e}^&h#l2bC@M(Aas!A6c_2=VdOrY8(0%2aS(8_m;zz#f(M`ugaoEoEg$xI7=j>D z2pvYRvbb~Y6ibTIRQ*X~vH%|Uh$`NzMG|i(DKv3&rTWW?k~D!Xa^1Q;s6L?!LzRvht)!W22_s374>*N?TK_H zq`%HYB#@f{SOAYMCzK`%9bJ6~05QyI8L$Pn;LqC69AV%S+t0)qQkcFr6nOAK6^;Lt zxZ0cbSX;H8XbaW>*;q)HV-yB$R81%o%G?ph3*<%pGjB{ntUhwMfH7wmANV!u%F7EInK zK4_!A_kCs%kH0%RTUBw30TY{#jGzuT%8Rill}zSV9)&X=V_W+y218IqIX3gEhQFTp zUONg9_kZ$CvueEB*J)GoGEPtk*KeTZO3$05L${zBnm2MEb+uf|@pLuSFk(h8>b^}3 zRI^>$$n?dBB8Jo$;{LAX!Pl2 z4gJCEf5!~}n|vO!F1p1Q`w_mILOyZ4owyZjD4%-$XVaYgELFA%ve$+$HAYor0IQX5 zNUinnLiSS>x6@+|AP~h_0wvz_um052ZoSAC0?HJXuqGfZ39=WdVi)>hAvE}YHTjs1 z%(b~goBb*1hMDx12Wk;e`NJ?NG~fh)(NCrFDbW(W5acq!lca}U0PH|#YQ{3p(m*xj zhn0OGq#(PtkFeAus`mUP9KcncB0M5Vr-PKEJdVxo#>A2o|3&><{_=10$aZ-B_CG^F z)c`zSs1zz#@jqNiW{6Kwm1Xp{n~|Z9BbwAY6GR@6Td##Emi8d<3*Kab;tvoyi4LcT zi`<}z40MRR1dC4!l(Yn3PS4uYQ8g?eK2OE}#jY#rQ?>!FpwfkVs^|v_z97R!uoyfT|sfH0@!m zg<$U*;?lx_e{`jWr%m}(k@!9k9gyXEpZ`k|^`|4`F{CC}IgE}5h6U;PLYdJ~d_JUj z0eHs_li?Z>&VNv-=En+YriwjEIH$Hd&!uu0NVcQ&V5IUYNqLirZH#?twTtACr1orx z;JF#wuSG<3ZWHF~iDJf*vOa%+4O9gYGDMOoq|i2RD7x@qWG-k0P{a;fHpj@9(U;9b zWfCf`)PxcElpGs6I*CU}#hvafBCtCaFm##t3hYOk{#Pu5OOnU-!2S5J1IQhLi{sf* zAahCt`s-5cxRjoR>NUF3PdeP6cz{gALcJu~5=mWihLEFVg`-480GC6iIv6nh;qdO# zCevcXfB@yAp&pR*Cw@~sEJ@?AgxS#wLh1`dx3<0qU1|)ZtI)3&^8vrb3bo-Ih0OtT zbj2}JLzn1r;Z^>Hh=ul+)f^SkHx}*#?;=>1*0@kAS@K_?uhXelyhgmqO33?>g zIid{=^g3tm05Sa^1JT0dE;Hn2nMyVSL@*IfWXaS}kX|Q2Iq*+la#C5MZ4*u2|do2jJIX3g?4Y=Q0kQU73iY~C!rs4 zBn_gaD~YJJFJiL-WsiE%TDsebTgVvhJrw|s=ZN48B^ba?eIhJSTR&LZ|Iiu#li&PJ zIM~IIwndP1HxOaYxamd&`;Z!Mxu0LEmyMyDzI16C6R<+P`yBXUgCxQo1{fWJHwb|> z5RD7@bEd4lb<#nX&IH{+>{JGDQz42HOH?=@i4B*B*NZGMEH4=As1kR5>5+rii*9mv z3H-c1B`dB-?fzc5`@e5G;63+@0ntg4Eq?UXyl#UER!GGc?M)F2Eq86y<7{&9HdL6W z*JqW}M4!|{Lua5b9H4F-o38>Jv%+Yfo^7S{5ODglH!dPt@r&RRKDR#sk zW&fM+`@gFk*p>`;{?UTGWkd!bQ5DJ*Cb_&1TBZtthGx15pOPS0pXA-v2k~H7rT>6f z04nzdE5TgDZP2y&SCEKhrl*lg4Y2CPhX#4~^v(gPB<+AR>suq!EEXpC2CA6fi0Pen z0uVfbG8iOqVZ9jLa4c?a zs?Y*b&PQ*0%q2V^CGMvuDx{5Y;$8aaNuCq^=C2U#Ns1j3tGx+wYD3ebWlDEQ%+|9S zf9}wAsd`cvB1YOV*)OcLENlOJYDA@V>RqUZnuW&GUap;- z1M_l&f;=A9`&yxvgV|IejB-FPsF)kgL{2qRsf)<)k8);3r!tjNc}lH4Qls=Ua8p$b zQ2}Q-?;t?vndlP(S=v)9qjW{nt?(XRVYx-Dc9`iV3$HOJu@Afu&ljt2eDxxqjq_C! zfKa^BZSgUt@(X%o?TIv7RAs(5e~kf8cLh8A#3eBhgpcxLbR)4t(5(@*RJQQFtwcU| zRHPx05|Avurm~Ns=KC}JzpJj#>+No+=r{X)uJKFD+QPg!jUdZbY4=aD0=*= z^tIIcM~PHw8Y%v9xxg#6V1J2%%P0QAYr$<%8)Iw_GAx%?ce)Z#cq5J^l_#5D?yl=lHGaO{Uru1pKZWTI6htj+;)Qz>mN@Uh6WR`g}D8Q&zy8~&D?rkeu zO;h`|q#e$|gM~;suQ*%!Im7yM8R_zk88zjc8k9q3CrJ67SCI)*sf{Wk6-7!eZ2Uq} zqy#}JdllLMERU)5SAfMc6#j)sKT2=3mcJU!(FAcyt}c}fvE@2QN?kDoi?x0y7N`TH z|13mIQhvFE68AxZb0aVi8E!} zLX;+$@~whg@-!^Ur!H@)H6$GwJasyj@j7z}+y+wiBt<8o6=!>t{RP-%!we@DLnSm_ zvZ2bg%EW6&^-xGPqUmnmOc96!y7OBGH+JqBS-I`EV(Z>2SJZ>s*4tMPRLkeQDPW)P z5+D0)Ah-HER6e>GacxJ|-5v05FGUSvC^hS< zkZqJ0b*%32CFA;Da~+v^DOj)5y50_m#|}%WKVKS3S%HeHNlD}aWJxb z@QBTj(Vx+xtTRIRg6^_nP5Q0#A#EL(rEq|t;{-U9C^y@aJr;>jPxtzj3bjmYcKRhd zf&ZEOUv>j3ye&es1El?oE!jXf8kbE+w<<7zE8?vC$L|rZWl-RJ*>8ReZGAw{H`N&8 z=xV)fGy}sWJ=AV~BRcoy#D2z2?V9kGOS_1iLv{IPvV2<2q8xoAnBQ;~Ejp&E7f9c_R;> z2I1F96)mewRXi%;?vWsFEhuBsq6xoAC48<|d?dQP)9%r6PV_wU<`c`sCxRW&_5U>4 zb#Oc|d(!*ku&wskv9?6Nx6^Om-n_p|@_qL5E2iZ_RM5YLMo3CqphzL#YqQ@nz@b2% zf?w)UZfK-Sja>i!>E4L}uigSBN=oE`zaj|d*3{*hNcySh97HVPBgE3O3GwWR`74m4 z?WLQqBpb@BKngQYr7i##&qHHLDg+M@wwMEJ;xuJFL=qbm`CH0Y|1ujMmHh3A<2^q$ zE4(#zh|n{zOqX2*Y4?Og^eoxh0xasQ(VMo(R}`xAejy4im#0JI`uAJ5<;cZQP`o&Z{Pt%XwRL{uNErY2T|Q|}IpXo(@h?s}nlNOD zEY6bvIJ{L?cCrC1mKY;<5-TdoERaT_Xom;9C#N;bI6b)p8;b<`e7SkX&%fouzx*yZ zRoVEi?2Nvmld^^c0?+8gTRV4M|H49~sg{%2@v)8EiZBG~l#5J$5|ZzTj`-d-+4ym# z2q7shoVHqa&by1*yDQ>M*Jf+g#O-gTn_W}D$r@m>ZUdz=r%8~Ug?-IxPh7;{#e#kQ zj;Pr{Cv0}-&|##Q@y8j`r(co{NXWDG#JL{F)~LeL={;F0>EE8!S_gCwWB3%+)DKT7 z&xj7-`^PV&&vz90wy3;T$dhNBJ+&JL3A8WrgIiK>0T$a+| zJ*%@XxKnEP@b~wXHxG`BjZ^CrKS*6((ylqWsqk>+$rUq@m|h{#!9iqTvk$2XP$^BX^DG>T4_EHZm&r0&}t>dSR1z$HwQSPX%1@^#N&c6gC#^Ope#D2uOvO0hpp~x~iD<4P=lk05_heofO|+^QpNm$0GoWRVxFO?sT2rZ7V37 z>le|pC@Z%8wUy@Gu{rf}C)Thd3NYB}HbIK2wG-t}bi@dq_PnIzJnQWh&$s+=X}d%hZ91YK^qte61oiWckqzynt3tNXSdgnkPd# z)pnfdeKJUDQ4}K%$@U0Oia*yPl!Jwg(zFSV6wg8OZSA<5?z7}OZ&DQ$y5>5iC;Fui z)*5App4yc<9kGqbV>*1mHTIVNN@=c@s2)|_t-HIJ&Vn4~X`;kCEVVvjt%W&eyDAVAE_!@_$7>}7B-6}K5B$N>yAdgLpf)dXjyzz!$I!}*rvi~O;J|%uKBfR30HE-DR z`!5PhL^(TwoqBkJf>k~j*!mblJ5?3nTH)flAXp-rh>F{f@dp~d>$ z$y}pHUx9TtqPb9X0m&~b<(uBg&(rEX;_!}|2n|q5Hrg(|g z116qf*mpo245oS@oSxE@1QoO-*+Hc%@zkI<1^v2g$TXI?Gw8wz7(}NG!rqQ(K&vr; z^IZtbUh+d>d@yv23=<91s(E=S-px5iNyU-{ith}Qmn3_G4HzPI)jd!n?h9(v63Ce0 z=oQjAwh>%l9-k>$E02qW4ZCv)O^$@Vjvly92LNtjC1x4Tu>Tt63umj6D-@~yC0x;p zn&h*$CxBh?I{C{n}8WEufw9$&%#u_!w7^DOi*b0p} zd$>IS?th`Ch9iqwEsUsat&_#=8LNYvp3me~FO@UR-GU#(jB)HV?)G5q+}k-5N=!z*HOj@kca_@${~bxz7fi(go??~%9ACZ z9l7x7xp>}{e)QW4ku+q#h%mV%ZFR#_ZG{Vq9{J?F$^4KVe)A}S(r-0iFY2|zL?7Td zs>2049^DVc7vXYuww4tho(+?Cws@YomRuUc-mWK_*%aF4K`T%EJFQBHVjJcqA`OM3 z9Y~3@g#YDYZ3%(pL6r;Dzl*w2C%8it8RPPkCE?PRe96wE`J{ddVsCBOP^>s;Y18|p zV=WV%%+0fTDo&EMF$iAlf+}@0mUi+%VLy}x^fZj%RY;OJf7o@$+4FLDyXO>_`Th9f zS(M!tXQIXHyQu%$<$y*C)Yq-RLc^OaoxIm%^4^H05MiuvYaaa4A1qq@vOZCmmAy*? zi_!a-+QGR>ix$wzEA^5)x;Yuoo=|R_s#`f^e{1(39bx&x6X8<=3Oi3Iu#`yrY=O)j zSJwJ^?q&C)`Qv-A#0X5CvcI=?4_9`3#UlSdMVlIjItam>cSUpq92fnbF{66-4ppaJ zlzq6bE)x%qHw-m()x(O8hE{-Z!@MV%g$?7d@De0$md!xB;#P0h$g#EL>(*M@^<4vBGzDEFwrlEc zNOQ(_Zst@j;k3|8M&QZqMHcE|67p=8Ls0V7T&OQU|DE#nw5+9ERPv`nai8*1#EV?H zCsP}^vzr#zU2+1ya|Z4@uQOt|manwmMc9wgaQ8JY7hLTaadFNBcnV#-CP3^f z9rcO@#-}Su2ZCe+O-T%7`OiJsAJYv~c+=s7OtriGYbUGyOl?abJLpn}zKU~e2un@7?cfTX+-_gP0x zQBHha7rjkJa%I6W3^cC{TeF276~a4d5WJ?mOCP9_i`^hAy_b;^+L)IpVg0IE6 zh4fN|a*z;~Im#=2&p`KZb0`6bo-%B}2KM<>T7(4Hrvo*&#d;55(s}y{9q`XnrQg;| zn`m%l;bc)r`{uy0?qc6)r3vdt-7Z%KOjquXW_+6>T&~I&cM>zIw&&uZJ!G*ldP$#* zxbH7mHKLqbb|Su)5W3eT4=4JSQhFOeJZA;@okQQOuHaIT8yeuQ@iH;Fa!EO9nWA#} z44ewLoPetE-T+A?h;9QI4~`Xm7NS2Qq5+3zttBdWu&% zUwES4vij(!>eOjTe7be*r*lHT)~CxC4mH}Na3Hl%{YeL~p0Nr#2?whJq{<9*8DJ%G zkT^s8a03zQa8a70QkAs-CmB;=B=s%B;QJG*|2JdcJ|G9w8+H)a#>G_**?RKKJAcx) z_wLj(4iS+8sje5|UH31CtDJ%z+?LBCo(65Z>wj*j`j_$l*n97&CcAfA^nH_%LP83? z6MDx`r5mbL35W=Y7!VK;HB@P8LI)|KNfGJY78DT`HT0$!6crUU6cG_M2rBydecbrl z`|iEZ7-#G;?m73KzwX}*;9bdF&-<*o<}+ubW_2`Hu#S)?lj8s?`GZ=aRw;~3fL90l zyNb~p!qS>J`#@Rmg0p`0xK5%nr9ecy`3tJyxmOE5uf@pMggpl0Zu_8kXMgzV5vWRP z`0~z>#u5XF`qx&xBY4!mPI{Y`xyuF&A8ug^w>+~wW%#QW#c2%v)=0oNv25CnBS}~u zfVzPT<4PxMN)zfm7pTxBqx4-thr*;a!+$}_m2{=*LD@Ki5W&u)N}X(F-J|ht$M(sJ zvcb`e19l7_#rozpmquHgi#>VmAz==y-D)?JwW6!R*i|*wGy#F{_)6+1zg_#pA*>LBq- zK4)LoCzJN?k#a2?pePAYu?Xz&yzDyJ?K-J_o{aFu3j|Y8Z-}_x&)y78&+o)5)6U;KgYM-` z123pS5)9nJFs>L#b=QVS@=kxoqrzl*52Hztzpj^_y;X${B5?Lix4|~OO!#Kmn_OHL z3Ce7~)geQuxr41m-|j@;p&uZY;W5{@(x&l6kBxh}1(D~uITbQ@T86YY=|WDDeWPdl zS~7e@DX2_aZqC(|9(fSi%<&mNe=GbO`0%ej_R+hqQ(WZ0L%q=ub>_{dl`U`nV)0eT zE0gy=osU*`HIefy`Fy^I>w5pS3?2X!f5HR=0RYf3hAu%s00aR3kO2sT{h$2-0E|NP z0D1mD?*z1wvQ8|j0Du(H3K(N40ywmiON~=B1DP#psMM`q)HGU1w9*@^?@}2|)!5tV zt?6L{$Eh8L_&OVgPF5JWKf9D961JznBI5gRl#zyOg>|mEQL<>;;}$nh?5UTePVZ*# zi~bj?_cc6C4Y;H9TiQp*?^3WxZG3gYvQPK1=W6cSH$TnZjQX%};b_9ugEu`V6D}XE zpatB|Bq(4p`%ieM=xsy7lJ~~&5 zl{Ac;8|!KsEh5^5T_Rs=9xoNcO9wbpnkOqrhbL;BueUxtkCa%M8^8V@lB1KpAnVfI zKHcP0dc1qoyVk0WQs;7z36d!dF4rSpPu#fpJkw(%SI*VvlBIx@WkBf98<$;$rSL>N zootth!QYDH5O3~)2*~hm%V7+oUJM?2a^;|N@A?Qv3MT67#ZF7>3lP)5vu_z5?30IC z$X}S|1zpR1s;5_3zI5o8piYk3v91B3U8k4EW@#_9)0|_{&~KHApQ5U+96HN(JJ5i@ zL6MyL`Jj%zC!u?9R$<};CM z_A~QQkO9`fdTam7_}PM%*9lP7P=)|RXMIHGbYGV}FfaGxt*w}7bYODDe6}}S&~0H< zsdqd(6L|W%nJp>$i$F)IMIqU-1bZS;Un{@9Ur?J#D~>?vjd5+96sdONQ9}|6l76D> z#w-)1kXqT5j^_(LQn2VjAvvAKMnDu9Ap(hG|8N9wFScr+FeEZxP&|rfi~YFIUM0aX zjr;oOsR$EWf$H%a5`hW*S?t(cEp7$;+PiYFp%9)2gy2KTw!m4~``rq@aayC*DVgW` zk(s~tRS2lGtcG{u^0whs7X|YvPi@cm2p+gB7UI%zs5+NyE1;R`R1tu-?_{=K2{cc$ z72~yh?DTfY*xwDwaaO28_X|j}kU6CDp--N*Fv1H3IoYW()bJ0dkbl3}-_7|)I{b3= z<2X7r36s9ZdaG|kNQ=g!PuI46>)<;K7LXtZA+Y+;sM;zbWEf+iB@awb4YPpsKnsX? z|2QQBqTb9KQHl};D$7%o)~cFjCoC&Q&*VA^57j7=A19*EV7^|LJ)^$S#f+e(cU}0~ zcwht|Cm4-MN9C_SIO}6kj6|~fbOq4PRyQ7<46QysawE$Tas;F*D#(B^pf+0K#4|ru z(ubYj9~l;JQ`y>EONVjR-)59Otcp26MGi(WU(&yGd>T3AN5%x~^i48NF9w~~-{ldZOcc9mfdn%bu|Kc`T%x?xc2JB@o zHSf15h<=FPI7nF9^;$7A_uN-Jx zeO|0v6Uvwyxv3!RIu#Y7DAWr$!++03`(dc7rHosW4y1@i`;2+Aeo=1zLFj0+=^=UZLn@`z}0*N z0`SZnPp?wggE9}qwJ?TBA}F|%ZY$l_qvq}$oqS++@RxbD?k156@gs*2#@p|xeVZ3b zp?_35P6r~w8lX~gPeX=gru)+RalZ5cNiSFy_CfgNmysV2EV`r-wtJ713FM@S^pUdc z#^QYqh298L+b$cw&ffcVeNZ^zj=@i-ahS@=$3swy*)7p$o#N{Xs<&G3y@~zkJ-}LI z*Ni8*L_(0_v|x>9UXn3wfHGLe!MVR$WHgLUx(C}ypQF51yY;~HEd004&z|;CGzu;Za_d(5))Ir?A5@g#7wBymg~|x@hspT3sWM;s+sG)@jSub z8>lW0K9v#rQuO{=*nLKkQp&Q!frH~+g{$fD9cBjO;^gh)NF+UEf1Cn4PVM+klSVa( zn|reK_gTLD+yCZ5%n?x5pqnqw@{U&4r%SIWnVB??5t74dsZ?kDOniIp2 zul7ZIh=*kXOjncFJzXY&c!wK-dGIC3E@*#!l(_z@7q4B9q=xX8F*ZvNh+cHbXEM4a z0v^YsVr78gg0!gElvi&8>6ZbbqEyKIlG^rtjj%m}Q)T|SsUv@Fm41(Wqoc`&s;->e zJ)Eg#ECA#o2{t01lIt+3+|g4gQWfM_Kn^KI=)B|*8efBl1~4$b>Vt$}E4nh3U(|is z&;&(X!kC?0tK?vuBP&h5Q7mWNa=pCn7#?8KZC4u3(zFgs2*r^TnhdXfp8dF_pV>N> zqj&PQ0C!0BwhYL-Qa@=#jB9ZHG#;}qnpHDa=h&tiw;u7l!|jg!??fsXSl|Ac#d5jr z=08n;vA~s}Fi<7eZQqp@7yYAmry%Pdpu%u%e{;^oe8hPGkzCQ2G9K;3EwvO(V}}R$Hn*-6~#5;~JvkntrrC%H-QAR0BD7 zL;*>2YWJ0x-lUGY$VCd~da_us8y4Fmg(wu?Wf1gSVVQuFI;;oKETo z&FS$6jsWX7vxV`1BvHO0$d(@&@}7<5XL}fuptE8GSUWLtA8o<&q+mTwU0vaax12$* zM|By<+a95?5yxGg@5}j-x_To|e(cm$N!jusFsLaFi5KwX3KR|`{mycd6OdYkFjo@}EL0-OvAC);2vN@tJicdGxh)}^FD^ZVWh*s8|2aPpy z&Q(Z^?N?BzDE|{48by=JxupWoLvqxAH;@qqyt%h-#&& zFnBnW$Y;W=r~PFz(ciOmL z+n?AUY=Y94Bjv$0kIRnb*}{`o2s`C`%f2S)y~N9$BD{W z7pB4D9+_)45M#4M?z%)=ed&eh!^_>EIP37Vv&8)P@tPbw77y|>5)xUqs}dlV2@sed zfeCb&9Yxdjp=eslELpV-_AWHE+%Ot@hF?oopVx2g%j+_eq%tO9e3d0osHL z&nEV4(mBxzP>$3}fwWcj9=mrK6p`5NCg^DIWF$dIUw3FdH6erC9;3OxtTnjdi#ZwY z=nce1@Db9SCfN2W%lfgJU+HSXPF>S53E_mC=^aK9JN)*tBE(65N!*7&I zyBv9FR(9cC7Q0w%_1sO7eo+Bh+VXh#AK=QBm)}07znDI>-o5 z8YqDmD67YQC1TyVkYjD?6M1fV#jXD1lJaaHkaP;Es1m_MR;qXlkTjRxmwNs3{V?Ns zfQAYSv5#WQ2;xt4`5IqaXu*pb2UUyfq-4a9Wy5T59DT{8aBos(1EZMmJZ1^K7iA1KRxjEer#UWMRY9aSRdDA9!3c>-z9= zQ#3-Lf~ItU4k++0i8FQ1PctI$z`%A~X0?g$(w3$#30~m^iqKG2nfI8Ag=aYq{Z+>$ zAA>cqN~c&boba)my)eSZqE{J8(@K&m1}LjgXoZau1=z2C?a-O&@@m_=&(7YZh!_i! z$)l!)KPSD1V$S+foTNGMn~A-NHsFV!KJV@v>athbNxmnYFA&J}9CIO<_xLaN9&%5R zkYoB;hTd~!LSCXWo+RFn;DBBFGNLqdsi=GU0b(ja_qYCnQ^>{*{iiOS95jGSr`dq! zc+3VDvxnp(Z3AjD5r4>Ipzm*zP%{^%P4<~S5Ik4{f?$c&0895j-NumP{2 z!sSWFdt8KX3g;+L#~QYaA+wz!)=;S|jKoyK@PQDnUp&rOVla#D!Tpv z&#V!Dv<|9MA4K$zkELE*Ix@!e>`y>QJZUo)Rn!~PAwJ?ljT#A>RX!0x598gYmZS2@ z7y_(WMA#Yz8{jJ#bS!cpidHmhnqvf?n@xLd|+VzP|7Y%CQuj=S+ z_i=!S9Kll;mvlJ)1jG`9PYRuy#vUBS>5lt6P?9N_CO+h#g&^`o;usH_fSB@h75`2b z7uS9KE&!re?yYO3tYP9=?t$EYBDB|7^0Bqh6Y}3rY~^O`t!5k#&NyAxgdB|>sF~Sw zQ0(wuGhPR$h-6T$;PKB(=N}&s1Hu0t4kjENg$VzPbh7#n4hFzzsZ`SD2eSTW988|9 z^R;G2VJS+d+jxvB3eY<+;f*2^|976@|3%jAKbLdrKR7f%T!YV{%|i&lnseEaqQ>Do zNr{jgjU9D-O37+sFSFlnn5nT*pp#^vI##Y`ar-y&`a8FBmBVjDtDY=Bs5UqOd7WDt z%Biy|x-EOVw1d-Ze?iGuS}bz!MURfar`7x3`&>PEN^jU)EXuD-^HcGXZ~Wo^En4jV zlaJ&7|91b+e!G8wIQ3t+O(r!9BPOgB(90vzv+@5EZu4LJYP?iq?>U{Z7;e7+pW7_^ zKxuh+-ZXZV&uz9nsw12AMENmlt&(<^DjiHV3gWa;np`fp-00j_YUk(EUUBu}^Q(un zb$GNJmtI^Cf6{pnO+4CvnYx%P=6de(>pO`XtFK=@yG+gqcsJ5Ad6P9im?Ls^lkXH} z)t^49RqJ-^+Pk~?0t1<{K40JQ)1=RSuaX)Hn>vUp3Ve9`#?gWnxu)8WKW}_`)w`?0 zy1+mF^ILZM;zLX#Um7=1s(ncQX*vP|6CU$s+YX*3^qKt?HpTb(E0Z;?-aO(RHj|}gB%Ro+KgQpkcn#LrK5le(D z784iJ;Tw__MGREJN)QeG%K)oy9l|$8v{?#%WKCg_xlyvGH5T(PWt#HI(HvqLLMfnY z%BrHB8N?Wy4qqy+dy&&rNX(&#cTGO7*_-UKo7}niVDW*9_$3zPN=(DAwVRz z%#SGDEY?SVzJ2kHx{|>zCh-JZg>#;9IKHumEb#r=#}oH~ZEYGGhKr*0BNZ;u1~5C; zXoL7&I?+R-9#PT5l7}uukI0@_iykGS1Ex>i%3n$EgDxJOyQg^b_xhyXC}!hS*XskqwzhX0qVk61pE2mc+(AQEQ7;_C*9T7ODvkO1SqMe=d`v1{D4KP-I! z(e{5pvT{#U#MO4ols`zmO|<(@Bp2BEDLov$adH2Zuc9IUf#eI-V)M_g(gq6;y579P zNAky>cx~MAfUb}YL3y`cR!~Wb(7kW3_8sRAGL>CxqjpC359e=~wLZ9Y{rw{=U6G*& ziH0jr+V@@@(U68k+;81KS?it>^YQta_s`xuyz}Gbvnzjv!O^of*B8ecge_^*^faj* zPV{;<0|2Fs3bE=}EN=by!gZb628#Qq%+4?pc{~6D#T;5}{#)br!Ps@)*2c&CP7ncX z+>gqELHuJm(y+-|MoC7(tKpuv>G-sp1A-XxU?Isv1%#lW$bl)dWEIA%{aDBFh1@&u zNP}P%%Wz88K8HF0v~leU#O?A|_T_4PUr`P>;?Y5gSNS3nIE_jw*>H>9SX)@|`p06K zx0eY_Kyzte&rYpA5){kbJe-q9iTUAM9^P72A#BOy_A7kcEFD3c&FU9gyIaCvvsJ z@+lLVf^7$y?!!^E%LMSjfVfIgR+u(HyDKD3C3YEfNRR6>}bfb>rKq}4?p({4m+ zBcccbgpjXI=v-ZknIzrUiG5)7C@S`$>Dx=OQcYoxMOkCP70Uf9=q*0 zW#}m7y6%9F{Jl_UMp+^mOg6W!#XX^((M^~QDLR($BE0T$!po?upSsDH?fEvF|Fyfy z;_n33|4L2YEgoRT``1nwiL1QEzpwiDn(k4nGJ}`fkXkBz~i&^^Tz9|%Nrlx-X{!}9b2?i!2wX~84qcl2hc$4t@ZcZ z^xx4$0rPKT$~fz-nZq7d-?pAOom+E-oIhi z0v$F+PRpPq1uQOa2#Wt(A5!kZNzcBa?ATX6S$=%>ZjOj{-~(S(B*J`%8?>G_bci6( zCHyS1x9dH>57`h1s+Y3%u?(kLwBF^ha_ST_-*P-hjVE?`?Id_MEzU6yUcSJq*i zmHkt@vw}PNNI?N&!R-rqqpAqN_}pB-fZ_z}$s_qY7knk7biS`N9b0_IPCsB(pZ-Y8 z>^MTMXqU-{ki(0g&Vfk8no<$T1JkhRqiM~@Y?#CN99TEj#CIc(8kZ`i_Iyy=7o28H zR$Hs7YAyMv>*sQ9>UYsLB!bi7E_t%{d1zgZn!i_#`~yGrY6q##w#G7_Uj#uJEp^rU zG~v#${iXg|tL|dR0=NbBRA*;J(vj<>Rvm1pXW|*gu$&(3xwIY=&x%*GNE4H}OGxl}$)9pPa z>}PjAkDyP$>y{7mEARvDFZX_ZpZs$FA2^1`hDf;a`r+#NyaB9wW=(~aM&aRJ&XJfvODOI?A9an41|2m;{@i#@A5K6K6ufT2Q1DEu#gX#Yu4)FGE zXc)}KYZHx}in#-4krLs2alj(~Y^RkslsH}Mob>%)2UD9YrjmAvccnoczt|r8*CEfX z%8>BvfpgrEM|GmH{%$xnZ7 z>b&fVd|qvJK0)_Y6H$XgBvYFp;?jZncu7SF112lRw>%z5M_zM(XilSsmfeh9qQ3TA z4|aqT5U_aR)`xP|C!T!g)CVm@2VC{tMUmv8>iUwuxji!+P8$&v7OEb%i!cba@~=5W zPIxH-&D^#4kGsrFEB1Qy```}Wt^vM%%_O{k`-82M)SW+V2Pxvm$Gr&0D_tMIXAB7n zk^*m?<$Ho-zHG4uphBV<9H=>n)gOv63yKGn)@quZgzFgO0m8~$Y;H0jI5y~tSR23^ zd+2QW`*{d)^DLi+7Y~t@B$-0iH)&fJvg@Wt3QhD3azuQDenZ#>Ei@+jN<7jt`+ zaffY_TF+|S$S#L6sVB2>%6*hs!u#Kg&e$DGe#=!6SCT3al1}_);|b6JqOq3rNz-4I z>$Xihtx+#)oi`))M=2P26vke^Orz=(RaQDq3mkW!1#$~;+sS8+(!TI!}UEMRJ z!Q!M^^U%)kTR+PXQY$yIbmuu6dv+wUNCPK`q(6wxf4TSH5zV@}x>qUA&judrWnr5M zNdkZyN~z}<_vI-cuLO7$Ga3KZK&!YplwUP_F(?9Hc0}n9U|m<=xc=8h;Q#pvT^ITs zL;-w_5z+$q(?sJl$bf(d){U?2>BkVYyvKm`pezBjmJW|fvT5AcF05ORq;qV5Y+;Ih zyzo9pVReBp4DvtAIsm``6X-nTk8}q7Bc0(l<$SG>nKS2(puqEb6fSt#VS?i znZHPl{hek|G~7>|Ja}&}4kBN(9)7{SG_oE)F}t`hQE8}d1o$}NV{>X+DKE9h0(pxiPv_&K9x7wiS>*qgo+Q}zyi>!QGs zNA<&34kjAyvx+wH>D}gFeG>W~w+KNb_RMX4XPBD=#bOU83#Cm|Jt_J#`18o{w`%nX zn6L@=%nQwD2N(d2lcxWfe;^Z7BWZBy)t+>3h|9xo)tPfibd=TiZj+%jqJLJf6M-*( zLFZPT10y?M>|GGA=jV63zVpkZ9Q#h$D}b{>mDQ$w2~{gOOZsOk*YfMuV%8xvLxAn+ z7;?DC^5V4JBjV{?r^ei+eWHzOpUa>b=tadBO;zu|C8*e7Ev4R-30FxlM8}!E{#Kjz zCF$fpqcf3#X=de>sss8%na)!^o(BML`jci){dZ00#pH~Gn~GutkJK!qmf6zpYm`w0 zrS9s+Vr_$MM~3u+W@HZq zTDK+=G9{BL`6?MRSyi2`k!yE8*vMDbkDIeh{!0p?cVNo2 zwML&L*PdaMPWk&E86I0ep@zm96h9AZZu-^Zd2C~|ziTEe0Zc)Fui*PRR{N)~ zze#&Gul;!kQfnGVTOkYBitoRFPAOWz!yEm6C^Lb9%Lze?Ac{L4Bc17sK&s2p{cfLthSmGPH&=zwA_1He|=&~y`A&VRB zEIR+C&tkwy@;4G*ov?`N^^|v;o2oumvM=$GEN<-EyQ&j!k`}FPnT3{@qgXbpC>_dR zJwU||t+dqD{#w0!@nO%ahShueVRCX$8?`sNdtI?QMptx@3kaKgKUXepCwg8vp}Amw8X{ z6wO(=3_yRK8Nj1_~~FD4yOV%K@5Bw$fhtnf*;- za#_1ZWP{{Xoy~mvWxSciHmST1y%I4D^U$fM0_|lLlg3o9yF0O z6*u7k1$-G!S+@WniY}mCnO|k@;>Mh6RwmHcqCNeEPVL<4*#L%K13v)LQMcGRSJeeA zO#%A$imbKI4#P{PqmsGh*8WUu=W2>jJyl>K7O4*cPi|AfS|7Ty-D6!W1@lFKWt|3B zz9xSWY2R*d9I1cEPV?f|$B=t4H3uV=lF|~gQpDb~!Gq?#+D}30&i*Wu&mda94^st? z#)N%r@ZFJwPH--t#?ZOoQNGF`jZ! z4cwD63+VGm1W?1smLex8?cK7^tRmzoxfz;>6798wAG|qf3cZ&*PZ#BQ7U}X0sX9Ch zcD*E}OEfq4K>7idv<52Bmp-I+yu4_PTPVJ8U1JRmAzJqbCqGb@eL@{Tz1##fn}e-4 za`rd{sfH-slpI&Thk^?dFmVA=+hYA=*|)Orpp!}-Viz2QvTSgHYrueSMk&Id6!I(3 zO!@|QAEnS>i9ysA)yH?_NAOLOu7-_TwNAIZCPHS{$~gU`I8*%PaKa`xkrF&=^|`D1 zglGet0N5Aq6XAkQJ=KBm>y-|xqj;dv2iS7d4V*80)s;&$M>0n9=Lbh^9H?9+!rx7#CMd)F@w_rnOi+?fL<*`0ourS}i|KLdQ- zFQfW=jc3zj0Oal+JmO>ROfEV?4{h-zEIXFDC@hf!x2AfIArCKU2%Y(tp?hzp>a*)` z7X9aiU|8&{VbXT(v0i!r9`Q3+c8D8rUcC0$e)~brz;U~Q<7r6kGw0K>16fwBj3Y*A z#35z9=<2d=^E{1;TXjD-uXHaNmAqU~bL#JfOQr@;hUY)&$O(8Bp71<628^^X7vx{=cToAD5 z0!|O?XonDe{0N60wu)p^wd7?U zOr8aK7_5w0p$8qt5fT;tF-`-hjHI2Kk}Oo*ew^}HIz%5LNfOxjlid!x)D$8*?dh_f zH5o4|#6(E2Km;K4gDrTxS-fB#jP=bvS(%-Zrl&uDei|U*nkmo^P+$Q;Iw~P!n~D957aX-sI(Jgz`pu-M_eu5H znJ}AV{ZIm82n(hCa5k%&R*GbrA8Y+%R@@668n9wik_{wZN_N(9`8Ery@y=3Ah`CdXq z%o-2#S{0H&#=WyeP>8S#bX?n#eb{r%S0aYN74Qa-Gi>bNM3gc=teyO+SIQp=iRMoTln0=B z1uqN?!fY!Nax0R@D^#d9I5H3nVArTf85*b(0X~YgdA(IIZ(1lDUFLkN%>8GXXOdwh z&v=kk7)LeuN{u=eBPvpg`$-hKBrLN-(g({yuF*2Ef~lBYIE zb~eD&Dk4V;-Z<4=y2VfLD;9Px{xi??Gr4puMxhk7#u5r*8fVTbhy9G1q#^j8QMt4W zKLB7yDX5){o8-YPIjL#PnzBbF2({X0iX{BLi+i?*vx-*0Ypz(mMaWEsvp)N_!R2W3fbFK z^Y&76F`kGh2|vli>*1l_eFe36le={IN8kZHfv_Rdw4l&YuDb(tg=7xfir0 z7Tl!STG;Gaj>D}CLC`!e{cpBP)0XXa06<5tafBjQ#UM5w@2MUhCU_i=zYEY4rRH~% z_a517C5*#ls37(mYCe(iW=7zc06g{l3Q3=Y^;UAf}Eh=i~c!Pzx7Lg0wA>w-LA+3AcIuC>1 zO86m)rpr$_F2XM{=uwCjuXcG+p@ z91}N4h3fF|I68WZhdoa66s?CA@q{`WlG2$F9iH^-_4;j9AtS2n?yf301tVpiQ|}<& za<;i$yD`I;5;W~%aUE>>_UCFrXoic_lxsd3FX>*uG=?&_16G@^6z{CFO zz=iTepiC4%iQjLbx2r?Io^q=>vQvlN>Av05smTISEG_3M6@ zL|c=0d}X6u$k1>a_7fdutJeSPtgsXjM z@W4$$+@AA#=FU~HAmBa|cRkXHk}?$av+Qs^tfT@&P+_hx!QPZXB6E;``4RW?T$`z` zQHGur4aVi+YWdP9E^&l}9VN!9_=}p&-RH47A9q(x4ILPX9Jfv{XG~u_G8Gi1~!Un0Z3AZ zp5Fh2_lMF1R-K@A-%QP;fi@!U4g27(1W}mc1y~S7k_|SI^?Ub%lVjlCk6H1rKIU6g2D z`&mN4eF=zq`!(i6A_sWE#9gEmY@q?=d>_@+0nHkywoc=jUjxg*PJ)W9eJiSQyRnD4 zj`GyN+u;WLx9wo;n6`HSun4keW}As*wy<%Mf?a%h6bG}$zHW?v%7bdr@n$TjSZaSA z6DR!us=e8dzP5 zI-OP^EauR57B@)g3PobwmY^%QN7yj}T)^fAnKojiNkpRh@YtR-p;mqeQ;vGcr%j=H8tRuZF2^lzLE~{6+%--gqU(&0X8W z6LHtztxLGe56$m3;zd<;Ec>8(WGVLDl&vBCzSqz870rQ`RId}Ed5oCCKOvxlWg*ML1S~qGTLch7q zn8^%1OQM;MTk}MI391nM%BE04imWsF*ruRkcI{*c5>_B-*;YH>ause z9{!-zT9$vuaexi**rg8mwIg^JCe+h?hxfyw{RJ=#9`kkiS`D#_|Sk38AwR&%vpI_Mry`8Wm{<`3$NG-ZPr6$4v z&zfULqz{cbK#r{!Um!Z!x9LH07_WxLVDq;-Ud_vYR@2(?$m6NL$oBklxh4Lmo66bR zQN1fMq&Lb697y<2j21UpQ-1*=1l`fL+BJW>{$aD(Z^XAqcs*nMFY2NNe);>t$=U2= zAtX9Se!=X7vDbU&MH+mv^v?u(328I1mJl>mBqkGNs*B&&E@-V^Cf_x^5>udtHCrC* zi90R=r4fuN(3F2r-|PF0$Z#&NKj=7ajfFrJC zvBPC8RrC@Pot&3t@9SD5w5w=95V!eE{Swug16CYcR8f5~X7CQQS(|$3-1wL{aGali zDVftSd@1_%>0Yuv2bzg=l#iZNzj~-c+KeiBi=g6yAMq64tvLXRa3R2}=MN93?}ig# zr%s!gk?hhZt9G7Tmh{(|VT6oc5L=O=hd!v@HcXUc=3eL_Ih#Vqs{P|>3(%WsGDpS{ zd1AT@iCwv1*45~-)SMN!0rrm6$ub_G#du{kVBvkCv^97*FK=yDH)@Mnd*9zIhGTNd z;>Twaa5^2%rJK)6Wf!T)(x_$86A=TMwZLWsuz$A05&f1t`>}}`P^o)9#ixOh&44>) z%0(I|*{IqCo`;%Nm{uOGIdYo4=MvQGCBPP=kTt{=uo@W>dyMvW%JKi+uzZl(EEQC* zn`5U*1hOBQ@S9e58MH@rXXnNGbS(7Bh^9lPL>T=8E+OY7W3bSklBe000cEGdd+#`0 zXCZ%ap#p7H>@;;mCsZ868T5;)6_mKz$Qf|aT1wpu= zd|Wk+s>Eg3m-Hj*e8cgIP}#>IT}14PauD6oeD#YN{&u&Z_KVu|*pAkOvDKDJ@6f0F ze9fRi7q8rVX{i02YJqCs1(n+zw^c3MJ*i^J=A;*yza!o7I_2_Az21_{^h@})-kc?6 z3g|)`HfEQeSkK>HZ6{Aptpv(2gW{1Rla_49Fbbd9` zIeDGq-Po^#os4CFIJW(0exL>me2l!Lb3XO!5+efxHx*Eb>}+4CUb-S;W1EoiqJI2% zQ_W)oAZFy6vMy2f=rE*|ONS_4S#K+o-TMB4?l|{^e|fOF35YNqWBTdAJgMb71zIhR zXx|8NT21sOKy)alHXj|4_O$I&771RN&PHmqQyH4$z^D_37=)1B>D^9DoHyoBGYBQm zc1*tMb$efHXQV8#dP&yTF3x%8C>Cb?^TK@l`!V0PI-{7`{>{RXd$MbhlYbBT3i;v# zw^BOoz0jKpQ-dWtlIRf*qjpxd|43RD!yMRftNla zC32(D2QmFYF(`SR{8#1Ids_l0PUpoU08vnUEMiPoB?2Ld%ZZfcJvUTZ*OzM)&IPNVqLSJpF5JNY1uttx42OT_6AOB+ zm*yRlBBK2z+iqs*?&PM@}x*znPSCvowP<82;JB)1h#|k}HQl5@}zfBz_ z!lU^?9Sr2G8K9K>9u63FL52(i%YUbfz6R=dS-8&8{}I0kS`Ns+p`|+-FejjHK{9JA zZ~||EfeUX});1;Q&IAn+PsA3j%v~CWi zusZ1iSD_W8xHSoyajInMJ^*J5XWF1Y2Tix0s;$o*mI{@G95KySnvQxeKj@TcS=%7r zD|`K51Ip&cuce&mH7LrE*6-bFmSNt&+^>KRq% z?lh#+(aZC7VwcY$TK%713@bO}89-d6HpS~}Tvccw7A3BMOZH7ew7?Ea?iEgJcu^wv zX2o6R?bwc{ZVsJGkNO$oObWW3r48U4F*Y>dk=IOPy!0odN>T=64h48CLl8(tVe%MM zw$*eH9!_fU1w#SoiqFk((!}V~wJ@{Nht?q3`CceH#uV+Z7cWztvq!XBr#RwVb%Jq& z(C(g%`pd`S&k6fEZ{XiXkZcTCWEYo8;^TDz{y?xCAZaf)FQeeoBmgbm(nWnV&_R>j(aWkzr-6ssuW0k^=`zoG#CxqxKe`6rN=QflsV^Qik47oW5E|v+w z9b19Ondl?Mscq-}ntwQL$&yQIPZvFjG}67zQ~NNkD#2Hr@Mnggnoh?rsihXW|Fq08 zLHgrL`rUtRmWj;~2jsr4Y}DPsBRn}l@Ey!4o!R~(x3}~sl~lx!fO_qur9s&Syq(PL zD3hMsp5$5k7vFfcop)~kgmzHjsxR@dJ$uty5|Yrs@m8!SKPb)CNx<5tSGd`CXqwrY z-u&XCglFkt;UhVNRf>t9qE6g-_4c0YL7e!(?eu=OWWU}>yZ@4rI@^%qIgE(XMQZGq*JcpYYkD8TPVA4_fFn> z#Z0%-zj+Y)UdLOOO3OI8^Z@V$yWY)XbVU}zwt9!~E*b)HRAs`>Svn-)8bmlQDhqW9Yl=#ro4JvSRwjJ|7NiG(Sd0<)%s&2 zH*`7}N;NK1ahLT9P@EqJ3 zt}?z+Ndi!!=fv`U&NJls`E@;*2RarP zrFKV#7VMVTP$rh8a2M4Ij(pEI4*UJ`?V{SI>5$MCB2|XQ$L7M7t5GL_~!K>QRjK7j3qTIqG1)S~5GkoG<$$<;c(3R-gtH z1LW!t)Rm5vv0Mf=EMVKf7>KAhrSba9rEHLqGP`NntLVXzCIhT9p`NR~`b0pXQmQ1q z5D}im#t)9X$`;*=s*=$|>f{n4GITJ5dZOq5FOJSVo~i%w<7an)TDfirxG$of(6p4y9w}_-d2)UBhG_qMluMXGpB%=QyR`jX4;5Oz(iZc`B{J_7LXe6_PLDX4a$ATDx#5ra0#oj z+Mcp+Iff+bk(DdQ`Pl*OIb<1!V{?*5%1@1(5xb9TIX5(}D)JCy5H`yF%?3P=TH#n9 z^jsP$a$@ju?!}Kh_8$&Oet4Xv>IBZ;ZV8~EuUCQqp?uIjJ&|=lLWKR#&}iXtiS|Km zyC^e_g0LEA#JOveTg3q;wUhw|#t&3ru0Y5Dhai!i%*>$>VE*`=d}5jTVpcL^FoBWn zhtKTYcpN7Q*f8MP``nLo!;cO{JGARkxE^-tQ3^u7*sx^;Fj{0XVgWEN!!_k#&OY3i zlxYhA?D`SDi!|FScU^dTH5Ya7Pynq~7{ElNF@`T!gTifiy>|dGmFi5+rjQvF7Tk9W z$~|(Npo$}WL@P^Sc%Cc#JgO3H==-~QNCRg#7QCf8r_!@tJVmv=848d`QYnWzOAmvf!odh2x~|cr04VX{e^DqhOJWZq0CG!1L=6mz1-lEA{GFT<9Flk&^u^ z;gC;frs7uaop#tk@FC7+OX2XQ5lg4+EFWh)mr3FDV)Bpk+sqg4wgUQHPn|Gk!bsGQ zxPz4?+efQy4#$9|{p`s}=$|Zn*Wlo?vM98pznJG6J{34l= z?MlrMs1yRiX~ASf5Tk8uTs(OkAssF}fdN7F-Bw2r`TRU6Q;9gwlPSqkn5uP4Z5_Lo zsrDs(IF*w7d=nN^nUlN$(`Q`yz7HUss7Q55Aw1DX5hbx`?`&(6+Q}Q@4~m6i1X-`j zx^gR;5b`fHC8bb;Yi{>4otx^MwY#1-w-3hU9tM~%KNEQQH#AB6pml85R?$oCNlA=! z&M6#h6bf)cE1|F<(EOWL5LPjX0o&|yfSNt8vvjGS=vKS>e5}YLrZHoRO*L=^!~pai zPXIPP{x0Q}G$`L?6aZ7GP#*v`4Uj*VYQE#+SERxKKrQv!cb|i%ib~-92^g7n=QmXt zO9fTxF$0gY797z04~P>E$&A?Adq zmzS6iO|W%P=r;fW-iKg-jjvbUH&GWes;3tqFa*-OP)<5dJ@#9rOx@b^3y+$wR}B`F z!F_Sx_dIkQhzS8v5{D|eag)!4`&rr&9$T-@KeS_!BYDGl@@)Z`_IjAl^f{HoXK+L9 z9)JCXC(ZTJ4r8z&Xl%(-s0aK8mOAHgc{EXsL&vI>dEd0e!GRNT;E%n4F!$9R4?8d7RK}7r27lGGGKJDq=uhRM9M#^ zK0~EszWZle)FfLf_V-nmXe&Q{(i7%)(%w5nWrlH67^k0m^UDnw#qTAly6G}K<`=)f z?_;LQQ)6W71ZB9W6F{4Mbk6=JtyAdkboRKh&LwAGFo}Bh?6o&#{v3NjT1eDXpuJ3G z>qM$FkHKp|QkK?r`bM0>4GDo7*BOlVEFTa)9~X4us;pF{`i*!^IU&|P{R`Be!}ol3 zl(#2=+pYr7@~J-rxq2F&o}m)}p&_HpYBq3T;s!NTfHcWi;OD6+F{@S1^4rJ<$|M#A z#~c0gPHgF1E@yI)=yI~n!ZTV*Uj*LQ5XkWca+~VPJx+^pwrXEpc_kKyC#^2cJwM3A zo%r~|SIR0;4RT zSVc)eH3)w$!1yk?k+jSQUU--&*nEzl4hW^#} zo%x(08@{P`(Q+%EkMc`M$Hulok+&};$Q>_WSP@0SV&ND{$9iMQ2haNTovsh*KMw-K zz`c)QImH=zJQ>D3@T5+740tJKEDS0AVMjwH4JE*ta0)9=5s&E^psIHL9>uAA=e@Lz z9x^Pua852z1zES0h>JRZ0H)N@l;f{P}4ZC>e(okUIeONLMq27w-vyPbB z=M7r@c*`MR!%*C<>$<1M=LhAVyXrqb>Np)5x$$`F^Fn)8D&=zWG{o-eB zda;>SaQbod9az`(oY0LYC%(*fL=AdxzB_T68$NKN@Q8SyEFD%2J34Z{=kt`w*GIZ9 zR?nRnRo$E!i&`)L+CRAYv1Ss@1L`0ZN)kQ~CGoyG5&nP&X`7){(Q>TOtk7qK*M&^#iE|(PA%E zBpp9WghgK|--NY9OFfL1`S7h!H9{h0BO0~6J5X@<_XiB;n@ZTWYVx*P&bE5RwnoFY z=EH5RXWQCuw{<>j>;Bl*L+s!j-*@AhI2~U&vj4?Z;^aujwnjTBkJba^qvNI&cKC5S z8b@~o$?<*BAJ3nNd2|CXd-xSOtE`XMHLi#vzWvsxDdLawG%&?j z@H0SmtmKMdPJCQTEOIM}BL2fHj5jnnDg0sN>1Rn%N8`F2e#D@YJ-DvdUFGvsNKJ}g z>dU>T!@O`-cG?DPC#vnt(I3UfqNKj_a_CO*G{)sEcvAMuA9g=@X$?PevQu#H2hxhN zO!JdMe&lK~k(|IAlhIKhL4eD2+j%NoawRGF6Vjd{Gmc7p9J=+u1ocu1QLWdnf<~2c z5M?hTE1w}QH>7r-sAIlNy~(uxbTQ{7NZ@8zT9D;U8Z@o;ZOWrPU~oV2b~NY{MfKA8 zw3dL=&DVaGpnqc}&gi{QyHrR)v-)6vuce76KA37UXJ;moyVK(mKZfQ)_M!i_nwBp@ zj*>_6H?vF{LBkT?+f6_wzUmyfle>BY?{wzH_Tfv~NpZ~YPiCbwnb8Qiz zOXo}qn2toJR*2s@$|EWH?w>S*2LrY-3NLRF6_8W5#5;u)UbRg9xjp||`~o+g!~&Gf zjc+RmiMxvTucW+uZ!f57j*2uJSIRa2I9*nn{8|W&mOmzDSxE_WD9{Z!r|p-Z{<`j9 zR>vyPH;oVCjv{dp-#>Ywg-%?4Y^0p))*N(T&#rMCGRrSH)XD`6K11E`>q>+De)a!4 zPqK)9`N^4UavA@0Mqhy{IR8sozkL?`-yW;zCuV6Hw_Ye9?_hN5p5A(q(pp&^qa?@q zHtnU*KZ}Q--?ml>>qS@pH2FH`@Qu5#@iX08?9DePL84Tv{`hG?%WxS+%|9<2S#q?cyn-(!b8;s+44&>{thOMs z(RtEM@dU=h)#|^_Z?;r$2J33_;?M8ZgolBhOC)Up&$-wV1j7 zpiao*kl8PzZ@v6P4;GiQp2xI-3Nk@s2XfSDL4j5jCA6(IiCL!4ncKEQ6W@oB5Jke(f~aG`u!P^_QUJhfc4) zJo_)FX0Dz3sxH>nWqn39$VOFv^<=TD_vQOx9#oqfQhAtLqvPw`y}JD|O38u4&iuFnx^w`v0JKK<}%Ada~_rNG&)KgwB3%f#<1s zI}l9Lvxv=e_7I^-&C+L1KO10jr%ETO2wOPBvZT;FWO{AML#XZ~TJyko>o{I+SV4 z=`3)W==}h}iNK35|Jz+2P_;IUNARgPQ^ge7`~2;Or4yLn6J7yVzfZ}zzS#NsAD;N^ z7w4>)*N^$s7LsRs5LEo9`-_P0tg5NKRlz5#Cnf6l9Y(A5bH)3k&o}J64+IqW!k>JR zeh?0U{T2Z^jnn1mi!?_$K;X<)5W*POyN-`9JR?DoOB=E&9#kke_2i`7-s5?W_Xpay zAw^l6&oDWktqg@1Zjsh)va=J}hR8orP}&G<@t-@sAT=sBA5wTx+4Rv!VkWrQ=IW=} zdZYRQoro`nSn$eQL5W#nwo!YPK-Z9|(i81aLoIM7&d}nhosukJhb--b%fObrOh0hN z@z+$cA(}*vxKEk4xNdV%z0UR6?Rb`&Gd@?A|5RoHbXNX-pJ4d_=#0u}unv4Fg9CiI zSJ(mxrcQJ|F@Xze!SPuZ6N1?a&8}F?(4b8=!KFebP)<||{1#3@rl<79>6nEYUYZ3AF-i zEQFChiYOWgI~RLFfBIWqQ|BURfSGH4xEEnQA8tGUbL`V|N&c!;4pDA@%h7JD7=7mM zB8)8!vr{fXr*jGEepohgyX)}F{WfDclESHp;iG=)3dVN58$m|5n!{ah`vDm31045h zjioGA`$R44W_G5i=h{6&;wYr5*r&UvOe9~F2B~LC9M8M0gx_#mN}8Tcyk-?}W-48c`}@quq+Iv5w((Vm?~WQ5aFE?| zK+AAljhC551{Dk)%Y$L71L9;g$?(ig-rC4P<%s%$N0sgpox`ZVArQ^cFx*(Y+M zlP%ClV0cVpo47S$7!QSJ$yIXx+r&7o(nSB=>yxB0GsFR#{Io?SA*0s3nxC6t1iq^A zgR;*-2JHV2>`hPJ=T@A-n$wlsG7p>o+#1ND`iA@|r;oF!B8jA6Ngt~(eh25-X!Rm0 zW|Rqq)iEo5{y;bF6`Yf}9^@a-l1h@w z$aQ~*c?GwjL5sEb#P>bKUs6k#_7846Wk7OO~ss&BKGmjtGh`Zk7X^{!gdco z<{{IjArjUY`R+V}Ip_DFH|`G|t?X0hMDwf{Wm zHO}UpaKMuObGQIOwr$&ZPMC1j&FeF4zr@Fr3Hc)rL1FzQm=8Bt^*lu3KLm$NlyxIr zdOGXqTAxlUAmGV*Z$}mN9RzKHpD*$877^ffRIZBCxw(L_Dr}KQKOidXo@b8|q@x=L zK)WpCaIcfqHGD`8g#S5KV0O_tn6XQMG^m3ldF|$%=0QzF#!tevjaflVK~?vaND!co zxqMIdSg{${Vgn-NWMfWpllEjA=h1aL{SF%gq8%Bc&$FSyi}0jHwRAEMd0M8_Vm05hd9**i*i20%eKTB_ss3K9| z88r#Q_WriANwFh_26or^KV_n}$x%9(zHvan4uDD2Hrp-dZv={#6g!fp z#7HBKnfAE7#h0-ckmIZxewKPVnPR*mx3{FZ#?V((f-3h}6%i!~Tt8bczMn1`F5&0I z@v@kkMKQD3JO?lOIAH3>c?L`4V@&9wxefk$;NG+ni~P>_r8gbd(vfE;w|+`7P&O zpOF!Wua!{Ox@0}7q!Bc5K(`;XLB+Y0N#-d!PAlp

Fj%Zkbfg<~}RsUK2m}_nj9* z>T-qhz*dcY3S2_^cD`R@7B@E1Y$clhq5d~lZn>2qFiwRV)e%|mF%*{D-s)kviUt1~ zKXgjSB=C@}0w##14p3|B1iV31PCFD%VaNLPeyIiCk*Pri5Wt9b(wbxMSy#X}ZDVDG z;!}qzO0i8^`y`W?SIQPYG!BsSr~!4)&BBSdCng)1ivme`s2U>r-(mp&QBMk%*Y1L5 z9?=ZXj9L!;^n?}dO(5ONW{!u_^Hr-MmRPn(zk>Csf~QDb2)|w8iLj)*B|Js-r>?Jq8tc!%Yhx7~;>?+* z%Mi0n&~l)#R;G*9eY#m4`*6@9xRYQpX&vvQiX_(~8Wpv+vy}4a#($_~!$jk7+HpJX zp&<(FBQuCZ{!A%nqC7pN_6nOS`3Z=C$4F z6NBj>^-CwFG+OELpXw1?>!o(5M!TCj{o#!^y=K*YvJ}Mx4}zF1*s0#$@A=}3RZPg- zDX70qOKQesnFn+$fx>z!M^@$0Gy<+l<%Zl&Km)}k`QkEgnU zsEQNS4_?ew?_(XA?5FDl)~5-)$R=+!OI=+}C|tsk0Qa0*`eek?E5Zi&*dMwRdH^6w zPY@E=YPXi*v2wYa48jF&np2={QMx%?uU*3clmM1B0p!$Sw}oK=JY154%mJrfMUdy) z#wBGp8`%YjwU4X$J$lg}>GkOg2q#eseU@5dpXMe(bW`oozM4`s@#VrTglD9gf8^bt zBH;@PE!PiS>u>IQL@oP5RyKn3_|q(m#-2#{HkUTb^|R)9)EvojQso<(akjQ~jmG)F0&&z z6GE*wVjgnbXrB4C`EgJ;(kjdQCzVUfJ2BUXvr~jK>Xawu0$Ha<2kwM0rB(BY7Fdv% zXXM!+ZQk%^Z$X=p=Q^VW^wCGu0O*%-u{)MBQLm-o<%W7-{oeF90>TJF!0f64y4uOF+ z^Ve&kcQ;hoAd%ifqRk<7d=MR?!8qM4&&GC+foLbZCX8FA)Ac)vXTMVUf|sq9tFFlq zG+XH>>YsDqTVTOf&<+Q9F{}L#DFh=Bn&)~k*n3)?kUx@}1iX@R#=s$?Z^DkTw@BZF zF`$dxy?DYMkR-;na}yAOSd&|o#q8^RY?8qN_##^ob-^zF%zr@+{L?SGeBf_cD*}%R zGB0BXr}gE|Lt*XIse=$TKd-}QUDdO%qZ*Zfa2q$mvq@y;SfZ^_zYBgEtT#lrfQCt- zV19Lt(m~uN7m`ha$R8-QeK{;v`k1j>3EJ&avXY4Y}yg|I{~6 zyr1Hy-a5-^jhryBz;CP99|DFMLw61TZ0o|?S=xDh$9|11;Nq;_Z

l1pJ97ppB6H zfMP4%VhbcFL%n^!s&pZE$E|g)X9f3|z+V(=IycL|0VVS7qId5V58c6`?*}+-D<8dI z92ED}*Iw;>+&IHPgQITs&QSS42z2NhNOoIRNxXDBepIKWv%i}C3ToY1Xg2a3R3U6w zt#5@V3Q`1deY(=(dT2WqzM|-NzooW37LJWzNW>#k;8V>hNYL^M{Rty3ie)OFs?i2-Cz z!&6@84X2JZ&pnl`0f|D0b!XqH_mGIk^a%M}-jqn`oq<^q7|t4y+5+QAb_W>X1pAlD zipJ56yYi>);H(?cHK(IyO`<=W#H>UPzRnJD3-j2A*+E!ld0sV41L*8>f;Ir!?ETGd zq$tAtDoc;CvY2u)ve{rk^&EmreURP5lM@1x*ODSyl1_8(%O9b{9-bU{1R%&%O;Z~_ zI~&=Cz~*Y~r0Sai(Zf3J)GI zEx5M>=7?jsQ8C4+WH$9TtG6D!93AWN6G5pFOoQ}XA z{K8?LUAuP0P7#M{s4^hdANVRuD3!3*QUH6_ z5&eR05Y)2FA;)z|LY%7W-Z+Cn#utecf)ASV{NPrLF(THha0J-^V~ z7AFD_9bZ;@IzRt|Z}sprKYsf7@d4KF&pV&b7y^Vwske6y-i?3e+3ceLw(CRdhvv7{ z2MzXS3xLQJY!TBY6KR#QZy0^;vZSG9@KBLQh%;K?+|uI#I)WE4ja`PmGO&e0I=717 z7$`%C7{sSMiw3pa7uAPrm$|v=TYRv!9d48r&Z)Lmw(w`Ly6*pvmU3}HhU6lrrveZ* zp5Vm^*$@U$y>clyddT=Pyc-i3^wnQT(wbGdrn^usV`fR-<@3P><_UGq8{W)B0BD5u zy?0{u8vYpm=|`?5hO0v*YQFdV%^rN3Y_{MAuv!_JwB!5P^W@ML(R}6N7?V+{Z5G6T zWzpDoX?dNClhcy=j>D>|NmV}sOxbRsC#UYS;77Jv`^8Rg>Z6e^0yePEiX&>wOvQ*1-ftH# zILgz~Z;j}EaI(Ew26sK!d>!s;bSIC|9yOvg-t|F9F1r&fyBCh+?EziFQwL%T6nZmt zTvrRr1RXYltIsnuu4k8;$b`upWT-!f2syld0W%o;`AnE6N(w8Q)R-E?cnpZP-?SCa ze?z~&VRvz&QEHhAHX8fZAd+0Z4ayQ-?`1xVC48en#gPyi1l2lOe$490aRrspt;_X1 zVh(uiF;ORs0{ubo^;~FP9OpVV3#myc10&%n%8j_q$PK`_Be22W&X5r3hc}FmH;FdRGSK4AbyBXbQtfP%#eo>3Wu+bsiYNl2qlR0Q}eMJfE1)D9V z19I+mf>CfvJ2a4LJ{A}zoc2eOo+HEKrU3HvxT!S=-bg z?x22HdUvX(T~!dph}p$~D69+dLw6?M=N-j=d-?_H|M$y-cMB3~f(0Aji~785jn&=; zBJ7jOdLCSbBMms=fK<}NWjaI4H%W3m|HnuJUMf0`T%q@~bHNbcXPm0^TrF1pq!uf+ zEk!y@t_FMN{Mmng$1W)lG5R%7Zws^tdP>eQZO#D|`hFz&FG>4^dxNfo0N@wXGr|RQ zVJ2^WxWh@;*NOyCy_rCS$2$*r%ERu4BJDsWAD=$C(1t56%|YT<<{vVl^q;af&M6JC z{(3J0N?f_$o0JUr2E1D|k9v|c{2tG!%@Ay6k#Dr-&`%W6U-R-O-Xa!4a7?b1@uZM; zBMmA%*&>|(A$G3_feXjkBhod+cmoxIxH4skIz;{l)?U&B1GDSD<3q$K3g$EVd3C?3 zY8!DR`H!d)@h?IOx5+s!IG@t4Iya*!L(fMBq~SvgikBQddMxg`BQ4u)1Y)uFGD)rA zmn>zn@hd+!#YJQo>AHX$Pp>$)50}p0=L30{3n7#FlURL1QIwlfC$J-`3(7GL%h&G4 zb&Z_(XHeOvz3ytag&5>IEVE(>xNsYWUb>AyDJk3XpFZ!H#E#)z353Nz5WmVQs}j3K z;JePuww=z9-DV-w&Ji+){QGtH`Wvi&&J?}OyLdSQ3pE`REHsjF)3y){vm9ztI-mgN z`n_&y1$Kd9pAKs|%?j`oedJ48?UNHu1v$5uBST5HXq$Z%W%CIEtc#m=^<1_Z$M|Q> z*YppnIT|lhODGD7j108()!x?izDEigmoASf!;DUc-QtHaj-31%?z96D<>`MRQ#?+T zF?j_a>estG61i@8Begb!AB_5v-cT2ggEj;&HnY;4e@rXn+xYB?e`P(>%ye;MjPpB|HVp>f@Km$VC>BV6 z-liI4P9^Siz5MgXkO|S*uo2drxq?Zm&K|g_oBHt(8F{HPTc)8TaLqOs@_{|xuZ>=ugDEJ_oj@TS=ha6 zdgaxcYU0!3dtKE+*Um5xK9Vb{lHb=pZc+Q~K;$UBiwmY;_&8b>_EUo z_}D_6-881Eq&N~CC!u>?fDORJ{&dMYLgZs81s{2vP9qu zWus05?BS0Fw&tI{iKI^45D^|?^ZiPty0${DwUa?;F=Pf$ux&V{17X5nOOx0`@Ms1_emU!FaOEY45Aq|DLl8a5;u4(&e+%=WqX zdf(Q^?@Ii({R>$dH>x+Gwwe8n6Hrxv8jRD9{Li@(aw-58IjYJ?NzDD^pvFU9CM zPxd3yGNJOBf9MVU6cxyjY+7S(nAMKtIb=qmPqI`E@R|<1ygxjG398N@%2Xh$}*oeI7+- zsm_7I1ktl1f`{WrU9}8a|47c4b9yi>06ewtz*Og$yYAz|0f zjQNkftPpSu&3xy(_L*!}a@-n<&SV}sx^8~?l!DKDjSWujkItMn`%ymCaWYIDW7_p1 zKRU5Z+5yrEHZI9aPJK#c>m_7WD%n6#DFmLm@vaikUG#7l7HsP>U{R{gA6Y6v*N8b& z{obvx^T)`GiVu&jV$LUVTmo2V-y$F$Fjz%{!;f7d=EAVl;t1?k` z;s#v5s+3+f?(uwZl$RIPn(f8|kty(cW`GyW&V0f$5>Q|RP=&ns#+9F;LyBkYw>~pJ zUjWU1==s6c`zKm-KxqX$fR4VQC&fgW*GfIHk(+)gGR6%(v4GVJPyzv44??1zk*w); zcLOC|0?{VSkLfLmiWC{uRj zHSD5brUGn|EnU7Orfb8SP4*kp`#aV0_da8Rq?XL14Cm;ziDV9KVkPI;vW>{{VQw%i0;61Buz;(CHR&zTO9{#q;2 zqjaZyWGi?{s(MhyB~Wkma7V%#w4)E{At>*?g_59no)A2g5CR;bNj+iz3=iZwW<0HR zppF=W$Ti(D1&C=YL?Oyg@fC`5C4$(|@_Sp0Gx(nd^qxR&E#?_m)a#Y3PpsaB>pPh& zLGFNW`!-tC#&ca)vnE`^rB-UrMmC!*gdrp1n7U%?e0^JT!{hv~icHnX7TZkG_CVQ2 zHK}m6fDab2A@DnadV8*=F9F~mAW1(T7d}Uh^T+^tm3Xd`!8`=9Ed{9yxzKTU*_q> zLy5-lOD@U=EJgs;g)WyMon_QOjd5DyWJ@PP`KX3ve;h~~Q2*JIxM&BpUWBBTfK)yQ zq{l%@@9gl9bvO+kATcK7<+iE}AY{&~_1c~&gVp2+0VXW45AdqJUO_BW!<3bIPF1_X z17gI~;=56-&N6Ui81I(=K$}hg6;^s1hi-eb;PCqTwnlTD?&lJ?7*g-N$Be`$00jUd zSj9`4$~6WciY*9Wfwc({ks<2ywd#f2ik9>tpiRrzNoynyey&mN?|n^CGNNX4Y9dba zT^y&bP5WodPQ8KROr~)mQmd-b;AWhbg79lro8G`1o!n9DCJ&Gi)*!hb_b&eH9#PIO z5CR;rex{`5v<6XMPJWLxWRB+NXd3 z64T+~B^_Ua9^DRFm7s$Fq^J-Z@9S=V4V)Wxi8LdeFBvzZWmZ1&Lk9eEEO5VC`*n?? zF7En`*K6rKS+3r;U9Ybz81b6dg3Sf8NFAAEAsB$7dnN^`J^#-=xmV?Nkh_E}UUUHR zC*-8WqBz&zoWyU27gd9+o|?X`-ruXfXp27|b|m@1AL;|&!DSpu2@;v%gU^rkq&t!M$W_M)=DxZJ{+%N>Wnr_t4K^HSIOIR?>;HVxEDC0RbJP zGtJMqTAVs2k$b`279hVW_viLsxe;c zM<=KJCl>j>Bjs&fO!1GX)VFED>#2ejsf873OZ{m__EeRBO!?b{KhKvRq#Cw9OqV`- z=Ec#JBc^9RcYyAL7E7AtRzWh#OFgYelRsvF430|FFdu$BnmQw%@b>P#dNw>-lR7z- z`X-4wUrUYo&rqTInykbM#)mFYNsnCy?GweyJ>@t@0_D~fWP%lt zy27t;`&pv>bhJb^@yA#RO_sq%1eay=c|j$Zf+-3z>w&}9X(B$Aa3@xLllXZhFMDz9 z#q5rB(aM~6y1OvnEfo+?=i^i<~m-j6BUzJN$9GRp?zsrnoPH}}QJ3ZG=YY_KL7 zB%yKk<8p?e8Qlu2sdPz7AD{QiMA_08=YQlr`X4k%_ zUi;Z~?eEWPAaf=xjmi6nspgAZX2L&BCs&D7UX%3t$`fV(vxdkMD6*Wa;+v;dby6Lr zS!P&c)d!Ja@@+BUCHo0VSX2)g;zFMJS8kvI)QYAZxdh1&G)-|ey?OM}&4!tJf!Qci z^NiSE4Qss(#0u~-R(9M5?a`l{K<0{KvYxUf?G%s^%qV(QO+FyCKoju?GVM)oG*w=l z(W<`;l6A7-P3p|GRTTYXBNItBcYBL`y(IgUFauw|$x+d1s(94It9tuQQX{eA?iZ<+ zV)52oKO2nnrQu%<(#O2MdD}>|qsG~CJ+!8>vbal2&y#e7ehHFc($|P!VLT7Y`Do(6 zuPAk<8fLv#X*TML5%+HbOmN(jlXfErEdF5&=vLjaA_&jb%48!;x~Cf1xpzMY%E4Y(5&9RX+ZijQ?kQ=Hs?cf2sY|JkJ7 z=2&;uY&V}&&xqcGrh@_uCmANSsb=}%bfAm~4%tsdkrenVA9sqsyFy%M|57JW-u8s( zpdxJ;M>@r37jJz|Li*b<-q(t+KEHZ;w(|;)5l7;Veq3->rmyf|txR}99QauOOg}Qk zL4KEfVY9<;>x%5|Z;PHOkXxs?^`oehzl58$v(A9f&R=|H4)vMM^|kyk46c?9pBt2~ z?osmXdH?RYuup%0&j?3yOHhiFSZF*k9;&! zP6NbymW1LK+us~(olzEDK+XF{kJ znZaYvkgO%S>o$BIbb@yz$ilSnK$QH^j3OM}NF(=<0c!^oFD0KlmiQTe$jK+0~gDi#pj_xj%vEo<853 zNm1D!U{}9K-I%{(NHEt~R3@1vbm5invLx_Js77p3%aZ)BTK-u9@)@k`>I&uw7Tvxi zw?NaF>zWJ6hol+U%#jjbjz zXMOJ1Dm4};`R6K96C|@$E5As6wtMyc1NM8+iACOjQUB~Q+Hxz0-!5`w&R^}G$?18V znljro|NL^LuKH2YQwkB8-NkukU<%m^9B2tFUiNxpRBi?lB0Mf;c%IJ&vwqk9d`TRZ z3p859F?LkdpLx=cUawJk{B+@gBjGFO=wootKUE{{=qvnCT2MvBmx?38Kr~!am|TGV z0uea>b<#SZZuqz)*nOvC{^1~KD9(O``iel)!)0_Ii58iwm48Bp7-2z;)VVs4)-8ea zDgkPoN4T`!&*E5+dFy{c$Avv_4lq{_8blDsOFTdk=m0`lsn&nv$JF1c&K!dgzuZf zeK}}CchhnugQ9?eD|n9fzPMrfvf5D1(23vwq?Sx~a`)Ei5Vn_|V}9yG_wDZ?NASSd z)~L^tzA{f&QAR54v$kiRICu^0Jo#Pgy^Wroj~%ppo1Z4*M{YCC&w&tj>)fs)K74V{ z5t*1?HqrBcC$5D``S%1F$Zpge`@v_a(Y*r;k3F%c@8dfHfLI!frTV=xsY=7Rb<2jQ(@3Sv3Ny1)AZH0sgPr2K;>PRHu6_MTy@Ya? z>*z9vLjt;cR4#GUGo=)Agt_9TevnKUs;gNi7D^KkTJ&4|B{jvlXXhB2*-g#1{RqE9`{2a=A(8 z;lepb5`5kDbm4(xow&ZNj^p7MZ=vt?xtTd7INBh`(~!UeZ2*@6VH@4tATnzLwMu#g zC`jv(aQ*%Y$uZv#S9ymg33B3*6u{^Qm%WUpJkSt?NfrSTJSY|>SZFl*qZ0i4!j=De z{vUsu9|E+E8XamPT@3zUXFOwaplh#`;{4O3(&@MAdYR7b*(4XmkjoD*pL~?Rwji`b z9XoJls|eBtF+0S9c~j$GDu}rh^@6n{Nyoz4@=lJaB%}z!M9+*DL(p+n_c;ZYz0hTQ zx!yVYVeNyY@m{T!@gO>8cC{^!>k950Gd!5WQ-knkE)58nGG0A@S~F1uf$QuWj2WCs zv9Xt%1Sp40jb4GwQHYq6WveU3sXGR0;kb@9fSOo|Y+w0i_<3zO~beDiY05Klr- zS|Rd(m@pZaRxmn!2-4(KdR+v@FSW_Q>g?MpjVqu%|6qBM>90XjY!szbftN~kP(OjC z^`>UPh$%t<%!vTup231a?;v9TE6ma5k4>{tSVeJ{PNH1jzKpCtn_HV~us{JzW?w6w z{~N5`~&L;LWv6JTZp*|CbA4o+ewC7W2iT(w3M%wvMahY+vw z)@yo<;nWog$0r2_4|CITnM&GAyhrc~Vq(gW&|n1cy1_)t-XlNt_m%grvrRh&?l_m$ z9h*1#Sa0xA&^1l^=4E`Y5vjyLL9w;Zd>;g(b-OEwI1#{<)`IiU44AeLb&dOTD-s?p z!y>W4+KVGFF8552Nfo)PPxBQ*)K1sS0h|huB9J8j>zh=@N5m?kn zyF+rHx1iuS98?Oq4qW3#-M2_^auWhP*O{YnVX)%^)AOcwqK1nN0UYZ^1_ci}TBhyy z<&Y0iA5K$Yzj&#hdBl_RA8pJT;dFtN_QQ&6HljQ3ym3JpvcHr8#jiH`YS0H*6Waon zy7G?h2is-$wE2juU>S%=UxB^Ftoj<57K(A_<$(pqGa@|eG$#dI5;Z-KdrZg5B$d}^ z9#cDZ`=IXk{s(PquGrz-;n{4D($+6`VsyHWN^Y`}?rnkG*SN3*Zntc3Uc!4yBV&=3Rc!MrTa5dr zpAH5j-x!17c-(~t>(5{aE-rUkLA%WeEB(_4CJ@n4lyvp*Iq_kZe4JUfKA2iuNNk-j z!0Lkg14XzIu+^x-1$E0?AR$uC#Q+&7H)}IhtP~#HrlC`CjaIRmE4B~VP&_tA{uI^5 z6ZhYjmsEXkV=jXPaEszx z+UBeKC-dbi-Q@(1d(S}Q4xh{;CZU3I3k^tfD-N4VSPTtRMJu%M^QI`&0{ojhlak81 zxN6T0j#>K>RH2YQ+RdUCJn21YK!k^z=Xg*jLx1zI1`uk}P`Swz?_pw{& zuRQlNRc5Sg3{nqyVb&FO6<%G{ZRL^JrKbl%4`sLEEj2)du@gWqBxg< z{P-t<@-3sp#y^u%ncuO)q3Uh6ps7xtC@^1Z{WNy&uH%mP7j2&$E&vPajR^ znY0-;tGA4 zxX`%gO=jXP3hFgM*3#j;aCQLt8|cBwtUn)Q{ymKOI3Xc|0Xb~(NUEU!0(oWt#DM~_ z!N6>=1@2qaFY81nqAQ9NyFK_{EfiJ+ zlPUQ>i}K&`2zrLnc^`&ulF}_VKtVs~ztl4A_8|@%Nt-}&yhE~(A?EcZzB3NcN404k zuNc-F;4ieS9PgBrQq#Cv$N(0-(Tb2Rf@q1Kmeeo&E&=+%L-~cLz(6I6P13O`s->l; zAJ*qwbYirN`(ILKc$Qqs8Vb+Br!|xx{5(pDKq0qu|IA=H212!)<(~LVNWfX- zH}%jLM|qwshQ3O^@J(HUGZm`IJg$rbuyq1~<7dCXbEppI_Cm!1iT_8^xj!=bxc~p& zd2`t2e4b&+*&Lf=b0*RplBCQb32Dy9>fRhSr=k#|=8)(hA}`Tl4n-wVjk z*d_qZcU9m5`ds;__Oi;KWf$?~HBZ%qFg_TklGwxmp^-ibV?{hbG|tQc0rR%&d#M&W0+}OI1%vbL5$qK5{SJ$H+XI*mexD z$N!L2;u7^kgE@^mQ?c?p8cM`kc15&irlgODdt?^}s#f_tHN9wWaxgpT0Dx`5oNLg) z2TY^}%B86?01m_Y%zUI%6ZWU`i8ponhaS64Wx?w;WFIEiFq_V$OrXcJ1KMOu@A;m- z&x!P3)k`O%KawS1WF3tka!LVxB{opo=aJT}s@NuEznG9cc-p)vdXuO-NJZ_gf#^`7 zY6U_@->4?>UN~{+;Yr+aftHuLJA#IBWnVx-l$IGHlL$bW2PtJ>S9iJ+xcV5Xo-lQ9 zOq`?)yY5PJ-H8s!Ni8RQ*OAl?nDnbsLm_>svGm}+Gbz8Wu75NRHs8h`%_+2G0B|1E zc*t4Fg%FgZ=x2T=b`ejYS8JHVd|7Gnt(h2=I_5LCmU-X`&x=XFpuJPkxmw&bMl|dC zVQp@G-lzJr->yB-GO7N-t(Qzu4lkCM-}5o2>gM;$(m5$%u|;W%rpI8MD+kW=_EfV9 zAu7JcyvNm1zS%)8zK#XAhB;8eYS=PxX7=cby(p+$0VE6v-7S>edAEA8;9T%LghX~e zRaOh$Q(!gV6y|Dw)C$d!Meova|B>Ng6AGxIz-MbWSgMdQ2JR*_P?YY#r%EbP(Wy{u z9RsOAg$+ms#25gu0=K=F+>Gg7Wo0{UxW@!YRU_&}5^Wo`LBws+F*e!9WVsli2^R_& zjK_!qRFOZ966=UaF&gSK4Yy8ibx3V3jyA@8JiN_7?;)PaKi(wQqm&_D2sGIP{9J(B z0_|!61c5&{VeX(YiKw{ToiU*)fhxevQ4=5Kn2HbI-uulvRNX%->t@zRak-|uuh#G4 zohe%kj3qfdWL;Gy*dS;}+Z?U!m<3|Ex$SQWzWn*UA6KgreTvV7HA)Couct`VqKemk zHJ*{ZJ@B?j?Rv^p`^HzPw||yLyw(;Y;7z|fz@IwcAr|<@(rE;S(iuMX2VW#(2${hX zS?6IdQ(<~Q#s@@mw@1!q8&pPH?0hlq6LDMU7}wIaKxm7axcvQ;tNF=q3ra*r^l~Qd zABclqqdutOP6lF7HbN%=K)dPU*hi6)Aw&lGV3P%0FvPktMY9<&0g6wXRwPure}UD* z87vz6uqlhQ;daMAY)Dd=o!3i8ol>Zk&5CfVsW+G z;3io$g-e9Kr^kO%&?uHI4>=?Z|6^lOujmGlPungQ@n@6u9 z=f-Rha4JlPF1Z#TSt6;J&V+b2iLP+#yrNGD7}^SwVlgTwCuK4lv-iXB)MYBp0|NYG zpfx@3Ut&XWFI?4{)J|oI(O;v#zIrtb6*5wX!uaSFFj!9%Sm*it2pu|GH00ie71`@> zzLV9TaL?U&TWnO3M)KO!*u~WlFBD#bpJ7s_?k)r?bT1lt05DsIl#im z0mml8^cg!+?!DTrizDm4rc{mkTV+oilDO4&e_cMQC^0*D|jtX+V2$mDB{OdDO zAq%+z;7sYKjjZrJ$)1CJsb;2V69eNwhBtK|u;%K43)o+D*bjd@Ei3FYUifio${ua> zFd4To)GtW|e1?Rl=`s&!Z%cb_-SvjlxIiDL9;z%vH2~8ye?{y02vf~r$>H2~0O+A@ zBPShvu^wb#Z0@PDJZevyS4uCTK0MQ*o+*uXfpy4J} zg-f_lb-|V;YJOF`63T1dcMq2 z_2w5psTEZ=-g7wgxPmkN`B?jh2g9jV4-H)Ii%p1qa+wsKxcI<`fLGb@M(P&f38{b( z9g-{>sVtEEkO7)Pn)BKWobFn1TGMF_LZC0vv}NuJKSXh%r5i_fsBA0Fs>VDFfsAC_ zow5AHFvr7InF@?vD5M72CK@}$4TA-V(U$NKFP0(r#HHa4lqe`~jhauq7j7V*j}hhq z@{9|?gl64Dywoh;b?y_K;bT^y*LgT4ra5qk5D}yDskaOe;w~ttH-G6}0)VA}`!Qup zkf*2dCx1PXx2=%oGftUSJglt{pMzLxONP>-FU&`}-Vw8%7XQ7UR@S)p=o$&XLXSuZXI%VxZpqC5c9Ny=g;e znMebMI0Lo@e%BaQZ&Ka29yjNyCl7dGHX&`T-%K*TtJ0xzWW42Dx+N8M(s=qa8Yq5d z+zM}q!u@coVSnCZvUlg!Gw+6!z2XpCh!oXOANV3BM#PY}81Ib-R1Q(DeB0TlUot6M z_zOS34h{TDkg;9Tkl1iI^UoS4u1(+R1@P9AJ;WS;`1`&XV&sl+5-d4P?Vk+S>aHWPF(>PJ4ce z+rQ9HT;R_4L!j4ebM_tjo)#{yin*i`(A{eOt*W=4L>&;rCQ z%kR=F$&oP{Uzk!bu!E!I%~IgWUh^+2$sU7opYH08w&{L+^Wf5$!9G^-Z^wnHiCCAH zRSxHToPQZC4og;^9-SJG8@yZ4_i(|D*$p~vEjrAKS?GM}&-@Si@z3l1R`cJ7-c78| zBBB?EuR2A2N%<9jC4OOauGbckBh`9BA}M71>ycW;p61&JZdP_Cu2$VRbS&Wgzf*t8 zU0yESP(CyIep#&xBC?(|k5Qfdbo<7(yuf~oH=aN$p9q^!MG>4Cj2_V&bE|hnko1uA z3rB|V6dc-k6(c|Lo7RDM(pl?$>6g0Zs2IJu&-fqttwA5~wMCZ+_ob`sxXl_Ud~gLV zOJyP?n|Nm8lK$(@Mk0F+?}#XJcq~yLS(Ofz+=0MmUFL?kn?Xy3{$9#l+y$GTMHMHF zP^ozmCT6!csBo$SPe@zlxABNmKi0vOG()#+pgCN526|{mj2L;k;r5OgTbvmYd+BB; z74PloYVyt7+iQRPexF0}-}d_k7svZ-`$gRS_J&myw|{KubV@E<{>R*YkBmjw*&TN# ze_^zVkNir8{c<0F(-bIV;}GJ+TVdm#ClmtRoOe}z-xIZ8_aX)7x21Yk)v>{ZCs@G4=;p#JYq8dqK<2KarvRSdN?t(r$fn&loCH8(A*MT@yPi;qO_zCU6_|00n= zm@n8sofY#LG9AktizODPG-q|B>E9qHgZ9jIoh4O>#$hiY^Erz$!~B66YZqrx%! zY-r#o_&?0iXo0jCu^iSWcdSy(Dr_mG{B+8j++@9jpDx8t-+PI=vv#alDJE><^ToYa zxroSRhGcra!3V* zx%ItM6=faBRysZ48<=(XzgvTx$f-alLh^c7pR!$OY1Ml6W8LSly?_QP``YmXuVaTC zb{@W&dHPjI#kuGajnwz#(@%PFAC(m&LW! ze5?#}&SoLRyL&FZwvf53ddfVZzH4QdSumHW;7`SK?WVAw91NLdS#X#$!lJ$^Q~Gbd z_T}!WzYB$r=fJn)viAuR0AY}hP4H}2*+xeN7OPH{>9DF}e4j9=Mm zQ&l*Hc{(y1QuW0#9(Z|NO~i$$hA`X7iM`nv-`IoNts`cL89bT&?eiWagZ_X@uaEoo zStJOG0(*9>fV2rhwDdUjsmI{ai?Au>ZL$7o#vuB7yQ2o!#L`_ER*^+_n>?`*krGt> z+Zw0{AKNCN%I&x^jJa~qng{4u6l+%(!3Hf=0YD(xX5bIrX+bry4 z9s)!&1c0w`YAJo`QV`EOlTNuxp&J-7nnAu|h0d*a}j!EVcwM>zVuI^g%B?9uX! zOO@A9zbsQ>Q?NS%sF{0+7nGyW`>LpOfb&R?(%sc=0g*~5rIeOutThpkw#W0rv!{@7 zppQbDfr;hm9>*9LNexBg+>RJr7Bd5gPolBbTRcBOJ&!UToks%PxI!>dPsor*rk=BF zv*grFIGwlG;C8e~9DhD-*I51v>JH^8wQYLG!8QtbHEQp&Akz`|SZGyg6M-2<~gl_!v`XqGoX2JS>p;AaG6%$99rX^-1-`&A;;5L2|WAsxPOXre!=%psMl~3ZiRFYG7VgA5ARdS|;OokkwVQa4e zLad$E6z=j)df=+l&Dj)`@0$yDd)_sln~7GDbxFu5dvUf}DEWnhbyH_DaW$73m28h$ z53vIJ)yi(FO zenbB?#-MQWgM8RC)rV_KSU^KNK*c|CJM-2@jnt<*W`KLg*m{221-qwvB$xqVq106{ zXrOZKXFGfMVy=1v@4;71^z`Qk@1H}uCLY*#>)ho%O5<4l+t_Wo4ic#BmzuoK&lu(w?@ny?T0U$@6TV#(&C%N;o0m$Wu_UYH7WODC(4U)?Ux!_tiD@Y^1fpM>ckL> z1XT0n6y^PS=}jF1!le97i_}$=Up+G+Sf}t1y0iO+qAZjhRQo0gILhLUsUY4;Kp={! zA2p_U&ZD2fayULO0b*olx45D|LIjnKQ5Mi>}l!HAd3R{uwp^v!3XvO>i<~T*COC4O>Bm9hA9_nz{^Z4 ztzy;Nx-)h%`8QGKW`mUb2kEHTcDN;%rNL!cQ4O!);X8AY=398p@cP%n_1ZUg|fT%?u}*?k^>wgV~@b}9uf zTq;2KgXcR8N4cDpY?xL%GwnR$lLTT7^U%`Nk3p>O>r8(~w0h#{P%gSVPF=Bek>H`^PoKtZ2m9UHyvWh<5MT-mb z^ex+9p+!LF>{{pCUg!MCvr-fg^+sxM&ofm@Z~8;P;eqs5 ztu`a~%@Y_|R4!B>fM@lxojKfd&$@p#QydxWq$Z}kZ1Yeg*dc+mZ0fV;TsnhC0HqKS z2I${^`>H>4cl4fm@A{rUeX(%R9eu-(E_9>E{AcaH-#1ZzY9XiX)APw0@-&5~htgwZ z+0I)K$*_(L3g|{>pFpR-lw?Ys7?wfgtdtGQKkz89==67E74ra1@{Yr+5D7AqdBLKB z@hXCXie3a2DdIRDoE`@WgM*i99A84I6-^xnWl_gzOtB%*rMcwf44~AGOeoD#r!=A& za9|u|#9$`03MB8H08UL6{YmtjvCjO@C4xF*k1 zK**;!`*kd^zrgzN{Gh^me3 z#GZYgCi^pmN{&T8d<_S2TW=UjV=={7)ctf_!gLGz>-!6UC;$iyV=0e6-lu`y1pp$Y zthVz=c!3>n2+nA^+HMbHFqB;BulQ;tfG3n_!hN;H5+rt6@xG}3%IfPQt}jORe(?r? z{Us^}5e9D#?Dwg&0MJPp;oG3$nbIs94c3|%r!Tt(N~$LnJp*C%iDSI+_dy!WrjFV) zWVYxF4(*^22!^zyVl-e@n_&0@pI0i^_f0ajM8}oev-j~(@r-m5`A}R4)fCd~wGEUv#Ue-;U5EqX#b)-VI3Qz8)Nppw3+d>O3ZcI=Sg4u`2h&0wq!8m>Zc z1+pn=atzHU|p>T>qs1?66(}woT^Mo$RN=z3E6>a4)@{90pRu@ zwgDF+4KVR8nbm15(zx}%zo><05RouuwCz>J@;&Kf!U;E+8l)(~W$ih>7hyJuAjHw|9!@)=GJx7egV2I^wkclOu11Pv{;ppEk@Sz05)Tw5aVa4Bk28IE&(V8A`w_JP~;SDx7j8Ng%J9I(YjM*17sqIB8@W#6ghsGbS4=L;IR*(EthVJRb!Dg|B$sv@G24*tf-P1 z_sPBfq`2N2kjpKh&uy8Wg=Jw_nCg+Jdwc@Fi6I1510Od)*KEMY&%jDth74gf&> zIBcWVbYu^jy9Hy=*oU}T`#RadNl<#(hZM}0=iAWd(F9Zoc;i%jMl^or5Om>ksptqW zsq|&|huup~`v^}0gTi0)EbjK(^Arxih>S6?yDWZIcLv27hSQ-ld&9EnV6OyH z=Ij^!qs!L{7msJue#qqH4rb>~hf%E2^4p5<$R@+-2m|5A3=1WJ1*;l81uGIzqh|7U!Ag{N5 zy37ZUT)1m`W+R2OffpHx;_t9A@N(IP0`_!NB0v4P! z%kj_uXhAG`sGD-q zc4dee(8P|Hh2N)Ka18!B!h$CPY}0WN&V@ejW#g?RoQx__(qCInF$w@kJ}tbCfYF^f z_Xd49d1$J?=IgKTF@^OrCi(m86hOx_o6fsYKiw~~z;6o`o$CpV4P*{8AY7*Zq}TZ@ zWxCVgloHXE^IzGJsYB_lZEAAi;h(Z$$)u#8XByKVnWu{qL3;)&vHw8f>PA0zEzK9X zgF(qnUsU?hska>6eWQZdm#4DL47lq1C zVjxok4Fx&k_QWnG*_i_Xpj|=G^2nDe8#{Xe#Z*!YUKL&Am(pa>_Zhy=f~(6TGT)$sC~~us@};lU6xG zMxkzLH=BIshl1X;NA31$r_kpo+kIWI%Q1bq{RKGPBM{z4_pc8gto-`dJ5(*W+$Uy9 zTYX}|kWLPlS~=ZsF5o28<6zH zkM3r!7TCr4AHOSx^ao?zHMPRHT~N%QF07^Va>0nB@mlO_tiGiD?V zISu2Rj0wx{-cUeTN(ZdTko2p6m-Df;y(jmOC`ug?bpE({`9%n~CiFZhTIFoR_Ni4! z;d3J0CIzY|$n#sQWEIgp$Ac8{Pcx5+15!lEBUy^~;LzMdi`m1hQs~YKR5?Jy;)Rq- zi8wi(aeAFX!d4(htz>bS(fl}2*y`Jeg!_(N&XP7-&kYZqxVs5>5dnhnYOdwyZnMfjtecL3lr~0E|@uXYQopLWni=T$>fwp4tK{<7o zwQh7Q%Oh)0c{e3+l4b++nqJ&FyySrnpVkWob4hHLFl~>^)nYb%Vo?L2YAw}%-Y*1n zAz_(}LX8eVXO;qPoZBf!oyAfD=l_gALO&B5{?;5zL~|Sk3sdtu!vT5 zj9Ao#Ri_}~+i3UQ$LE`_CA}N;Ra-vVXZ)K2j9>0*yVtkbXZClBdBJgy->yP*kJ3yk zF@8Ye_T`)?%&4Qy=x;#JVN#uB{zNYa_W8hC!J+H&RWqsbb0;%bzRxwBI~C@^sd~b! zf2e{xOc;7+JwQ&E1F>;ZX5fs-xS;ZRUFk{;#7UzG>B-;jf@_DBdWAq)fBr_L$qKgJ z(lZ(IyZH zvsU3%8RshiiO;L3O!c6~f1<}k%Vc|n?Wr28&M!5bo6*QPUI`5kLHzl2v69yQNU4Bt zWZ6{~h!2*WKFV>uBd#X*qP+;$3+lX~brs5*_8XL}5~Rb)Q$e=ju~BO>&_F2aR(+^a%a}|@v1@dDQfx-DDmXjn%jgAuaYO~uBOW1 z`HdUo?+l~ElQ*Y?9Es9f{+@@W>VeMn7G)9V8Tpl)b(TidmkBQz2OdDhGX{6Cv`jvl z$x+;pG_tL@G+A1!{+eUl#XVR5zsYHTOcN#HL^xnrJ^YT|cSBGn1>|oX^Gd154s!U`j0z)60Ri%PXmg;7h-hR9IPl^QN z52q#Znl7t274BX8!64wH7CLs;@%+q75}P`bRsswPIgqg|>1tc2>KBpg?v z?#V*lm)5CDZ#)Ddr|Q%4!rKwVqlRw^?=0UO)b_T({AP(UuKWDwiDfzWX(Ow!6obl! zR4Uyo54=tIUW(GX&jmyyc}=c)py0p)bb%y7J|;tiPQD^M&XUCgJ;P zpGxQ|wDCw_ZC2@6U6W7eDa@TTVteF46JbznYM=;kmVMd3^j|*pK*z}46;CqpMKsur zBJsIiiuiX+K0grkP^xu^3oPG~F2kOKiRsvS*I;1{dyZZoTfKhZ;V%;yxZ`No$nzu9 zqFn60DY(@igDjz{XE5)3PO6*&*pE=s{}o7|st?>ep^K4@2C;cvXM^!waPlBFOmXAf zal9=KYYP&P6hp$0`Ih=CV+yq1Y;<^wrR>d#q)RLqmDE5DN z2;*pMW`naD-o%NtS+JmmV<+j{6>~gNPIZC-ug=%CUY%hULTdLCR?!X$lZ+2LOkC9D zc#{(Ey09*!TWYgP?pmcb7%MpQRl$(kF4Oj-0Q#3qhN&@t*Cm~$f@bqg8P|3VXUXH= zj`#bRw(Ke`xVLhn5u-CD@l61(s4&CUa(b`>Pa#Y1>=di(;}!d>_a4ljRrDxwEa;Kg zo)#}Bzug*dBLGbpV1%x+^=8+jV-Qew{a&lFe|dV8tbFc`lvl+MjU7She3x;0!}AZ$ z4i6V4|1()r921Z@S+ooykB1?1YzV^+m!q5JlzBAUN=Yc>DBn)0TEkALdWaL}?IbK} zz2$Z3JS5X-Y6dUk#=fx7_g!_LB>!*5+V^SRyp`;+=>Cz~M#vD>}>x0Y9Ri ziGMVn8yl7^d!(gjtSwizb7CecsU~^)+k&}r{C5vL1>8w%?NinKBPsT$OG#Sz$jigx z$pLN;*YT3-5iyZs@x>a1sQRw>!XFSJW8UtcP0|+gRePtcyOq9cNC3-)GM~4>;(JG1 zTod6Rov%o_cbt15t@|nF;#TWlasp}e__*_Ji$V42?{D7+KT!6U%7KwyZ{;gn0|EDv zKo|wkqZY;+mwM9Pt%2ZSk{#faYnjv&5jI+qkJ`$9zXIV|GKw3!$}Rd~EkziOCIA^u zY+-OwLM~MyS%~9q+tdp%A}e?l29SlV24K230r)8%5Xlnqd;a_H+aNQRg?*tOoZVHn zZ}ey{%a|qp{fJdNy@psN9>x8V|K_^^CmmpS@IiM3(Mp6a(azfz5x^cbcqe{J(uX~M z0szc7eUhKP+gG@S|6WFkr(XYJ_YhQgWFJ=)luEMux_0^NgLK=FOpJlwo})8DQB}fq z7spQddS<+H6bVux1pU3=3!4(x7c_bARl?G2r}Ae%TV`5P#jN|e0tl+;fUr&|2(zVI zJJWk90IYnaU&HP znE!^6?^!@~{|nQ>zw<#z!{)nm>eDUK(lu9Emc9AHB7FcCq7TA=_H=W5n2sXrUF5-w za#y?xfRh-enthKMNy+3UOBLTW*V}jL@j)?j>NZ>_#LhazUfTc4D6Q{{rE}CZu+OjRHsKbsT&tI>PX=#k+9ZkOqlou;MJd*47W27vO1sH5#HpQW4Y z*lAKBs)VeLreK%LA$xo--QZn>p;`L9YW9O&w%n_Jcdj1l-l3WT@A$y&nCUn8##1My zn_I$7@I6Wcxf>L&RIRNEWqyA*^q6mvXA%g%Z!4B*lP>BjWmxC7>JxC?uH=?2o!}T6 z6?)9G=h!dMfl2DS>dqj0xDAHvoetS{7kbJl;0ck>s(H+o=&&dIdn8>7caU;M*JS72 zV3OX>Z===V6sXCj8ek6ts7&0J>(N3|z^@&VNcFk0S7W*ZJ6Tlv5*Qz}^Fdl6YLmL( zzdM%uK63CQ#s64Bd9H0!4>=BMqH)1Uv0DOE(>cODz`E+&Hsavi7wotY;d&}|=kprJIl?0Y02nhu3 zvrR?Wuq_RU2H-d!wk^g3oHKj`Iwumf$UO(40pOZIR2op)#A7y30sKWIH?zZj>0BME z*iX~!7D^Z`i|$|ChBg5YYM*d!qQvt-rP(Um-mG)Ti-;y3vKq|TOW6n4 z0ilx4_e2g(gxOy{zf^PwwB_=e@tS3WGe}=5lVN{=&}G_+exjq^eR$@gJ+-!xjfngt z>4b&HG#`78m^BNnq@}S^6_%ya4eB!=4d{e_wq+h6Y z+C=nIkrq|F5X6l4>k)W`&yI#qYj*g*z60eoK0JP7R*T`GdAA&d)h(5`EnP|xtzB8F zg;KAk@Wjimh1b=={?*&U4-}Wc1&Ut;m@S0w4=l^Q0i_nD^dj$Hl$zFR&xyb?s3qc{ z{bKd@#mnsK9W)eX`Jyx$5p;ZE4JNq^y1vvUi2iz1&X#%c#$~-p7JItw@K}dZ(xSd2{=HdTkE6|yl4;|@c`w@! zg%7H89KpuL^D8I7lTmqNKg}20?n@%HZhNiek0v+TlEMGbc3M$QuCiYlq>negzsDRy z1s#_VYGDXlXl-^dM4ppZ&wds8kBo4JNWq!%@N}y%J2^Ksp|~RlCmCX&9Wl3Vi|u~f zY<*I6PFq4dTGBPzEksvx-^whAX)?OMQ-3-rcNhcR}0v;?`P^ES~hq+<@3gR@RP@usDe* zUwvS@PSQ6N@meQr7zj7K8@bygyYn3JElfqh&{yRS>1|Vgl#Slt8sBrBQPFM2NpCqE zBPOw?;}os?@(!%F+j78;(r+s%8ToNPSGR_&7jVbmkb#oKhT*YjRihRW1tZvI6WJ0H z*S-oPa&#(=3-C#!w)h?_fMuU+5qTf}p-C&?qKW_OCL=o;O_HtH^2DK*yJ0WC zmBfEP#{Nz_m+IEAVH}ll_Ul_cp5E3`@yYr)6%ppT9iD{o8EZ=wMTy+( zQu1$zOoc~XOHgy7;`tE5NW+QUrm@=pIl&X*B8ef_kR=OUJ1bls#O#9Xg%E~r;=P(t zy-%#aNOXb{|9ngYwR8caOH%_fJH6qiumKB!S>5cu@Bg3EkGSo}KdM*%I|FOimALCG zn{J`l!*yOu8~bqzMOjzeI`feV2fDwF_E_?4h975Syxny=_Mk8+-4aO06(m6qC$YTN zVbpZ1ewNm`T|nzruGJ-uS5kgzhA#fwc7@Xh_Z~<-@Wa)K zdK|g=-TN53^f#<*ZY$(M+aI5Ag0oIDk;|j9(IwA&N)qphem1)j%*%RSVm04m#j_zt zBdWE3o!5qI{!J>lO<6ZiDcctv3GWisFgsvOHPz-E3Ak|S+E1_Dhb}$3hn&hHUvsRV z+bRh(zZj9?R?yM#qa!d@*5Xg^HH)@0Rq0l|bOpt0%}JnGh@D1&u$74It)6RF{#%8l zu_njuZ!|IX;~G&ERyIHAiH`l9446LKPB-ms`R*7q8R)6kc9cz91ztnNXRf0gQ#%6& z+_%#Qcn>~jwO{D0w_Xdsw3!e8CUhdTZahUS!eS`CbDKx|-ri$(&vg)C36@&g&n{-Q z#isH$lQhltLdE_(R=6*@&>JrZmD6VLTT38=)KvblkA$beh8Sbl!j6`GDPY!#C~T z?mwfgsuphdqi&`>e{?@+XK!bJ$iCKc@Mjt@x|L{5S#R6%O*=VbOeqWwFagUXhPS@5w!Z02`<{>c#BkySLkQ(dWgnn1Ti67HTF0+C3Jt7fp`4{Z%GaT}b4C-2wy@)UJOyg%;lSAG;qFN?x8K+3@ zL}B6RCb~*D+_M38pe;?#=mW%NdGLjct?JUNx_vdCnKKcJhRVLzeBv=)z25hBxhUG~ zEOI*At|@BV)0Y$W_+I)60fjH`wUSoQw$|a_W48zJO)zy9p4_{I;pdt(xi=N3#zzaqy@J^6IJ;aX#P%sEJz)t}Y?^ozRJ8`BoU z(b8At!1b$j+moLrgX|*YJ9tkl7iRKYM)(x#!hlbU2=oDaSn|e}qwXZ_K9i`LoSwui z16C~~$Ajf9`Jm*G2QIlEro09Ejr@8GQd$*LDgTE z>UOvBS#l(_3qinS{1k}Wc+n$ik|czd6_~KxUZ;H%fRKEMgyWvC%f~CS(aWkuiXxB- zc}lGL|ZzpZn4?)nu+?YF?O2o)?52nnL0y0l(S^!QZ+cg2`Fum9dzgJ7{;}$ zNxF>FFdqWXNnVd9BntFHzhZ3Lo_Sy1)aj?(mN$trmj=jpKe;Vo)N%L`F1hTvt-_uR zb_%~n{A&Hde2uXSSW1s3?X-E^>1K})LSDDg)g%#iBh+U z%PE(sP?@lco%P@JlAab%K@Mz`_f|gJ$cx4X)zi~WRk|c!t+^-k&utSn$=9p~)}GVr z=2a88D2sXqo%z1gsGmak$nHQ^Kvl4T)S8Sbd1NWqzM@LQ{I4 zNp6Yq%T<%R4})>I>LK3JR6 zj#?h8MFfPw&7HreUyvMRSa^h~NcOQw%R2-SS>JA~jbxFpo_0PRMR`^Lr&84<^$U21 zExTAMoTQhhrkQmiZovw3zI~RaOw4lI2R%U$8=0^H`NTUL?K`V2Bi1Fw3gRfPf{#8@ z*qVckbOo9U?kbhFE42ud5UD1TmolyW#70;FZKLpW+c!(*K2apWa&Fk!-%c@uA8Akv zRsM;OeP8}(USr?AXIcm64ZkxMEWHH`VNS2O#}};i?|Y5@_agR`E{ABimOZneWk;?; zgv~2du=ky34AKgCMT-;s>qytr7pr9TNl^X|&SQ6@p^K?H0z?1=gh_q~!_q(ihi6%= zM5Be>hzJQm+7L>e3>~6~1#_V)*JrS&HD(dvo79pMUyhPr9)cfz7+*d%wNQv92|P`k zE(y;UqXl5s|0Tz}FNbFclLliOW6xjo|H_^_Gz+_zJeWAWaRqg1(IFA2nP|?V!UZ-i zM&EAE+M9bLezJe-pwGsZvt?M1A)ljuY>Q4SoxJHq6`G$!zJn z=yi!0_YCngK14#YS14?i)pU321QJ6xFCke-gCgrH1XVq?dIv(C%|By0#1oJSc`D+loh86Ln$jU!RCN0c zAxcGm>!ng11lWNG2pPb(2wVe58Ml%5rZ*U~Aa`ae=L3~2ArN<=VJ#=M&_N*{Qz=Nm zv{QFUp}$gRA~!Lwk=wI?HB;$+mC!T(oq8mcIwZ+a-Ep~3hE79jUi&+(|8L>;zY6Sj z!iOm10+7QmxR52 zQYGmP0-lhQgFV>sD#g=01dZn*&4Ut2kb>I^r-=?Ly?ewNkc}6&t#3l@d(j!IatjRM z05bBT*31ff#$F5}MV?j1>Vh^1Qv--NPpWo6)Hagn-y|Gd7_eI5QsY(ftsvT(XEu3MDe|$V`B2~xjWDumW4%hCtLO_($UKfhwaEm%p+(hb z(b4T;(TE!4Nir(2pmDw%!eXFv8HlrF%*COb?L)#x3*md40-o6+gomVE3}jH<3TK87 z_ZA}hJr3l73T=59crz5umsqt?n&Riws%H5H!k*7T&NE4IT6%`j5*V(;#EgW8KvYG? zy$ckl(4eO8JgLP%C2SyUUZA3NUL2M$xoo4bMZebFVD4FcMQiWEWhbd8D$*Q2<^xlv z2t*F?6(?16RE!?JS%eW#1id&8S>kJ)f$nKQiwwdRTNF#qIn~=*GV}E$9A;!6tLH2l z8nvh*R38;E?W;V$oIYv7Xmxlk>U1<+HY^<~p!v4VC_8T(p|FBkTcw59eQkZlVu=lB z@M>d#Gj6e%u@K-iM467AFprIHqQL@7;&l=6+}Ha+gc)ZSEqu zRY*0IC^5HOtM}aIe$S;;a|uP7LPE76B#ACey392SxpblQ*>B(9Is1R_b9TEKHR%&}*{BwC zRikRADA^IEu5lzjP-TCC8X=2&=9-jr-@R`m2^4dHy`-sa&@SR09DR7l$_Cb+^GhV*+0OWOD4&jKl}(wBf>dhJ5#jJ#_A`cya<6p)p# z5ntzW5I<^fgg^}?7|3Rf@^I`ip?(+!JT6p(vV7--1o){xRpzgpSQR@NYjbQtSU0#A zA`1d)hh&ym3P>t4UpYkhpmO*c%<4tc{EWgcVxtd(h?wQGs^O2Ki!f&-P3REfy2Z@l z>gK$_DJc1s@o_Ek@#&w(g(hI46Ur&ZM>N_LFx9TIK<(&^VeH;5CQ1GiL~@-7t7%cf z-z5Zwmf77=5-&pE)K^d{Md`n>nN)+42|_6|GK-3GPgs)dYTMJ%dUoWK59ufEV*>0r zi?WJ`F z(HAYtXRx<)>=FUH1mfR=2)o;{_YC$2;C0`3;5lU=V~d#M=@lkI#|P zsmBIm4?lUQDSlL!N5fU?m-lu(>lPySS!_u69e**Y{6Chg6Ql^rul$2Mu`G#K4l`Bo zuejvbBH7#K`R#YdC1W2FkeR+MpUKY5p{Yp&((D=WBL%1RlweoqfEa?*K((B6xk^XQ_^!tA-fY}2WZ>;g830724Ie3@gwJp z$ZffFso|xxO-RKSNr88vg|Nx8{Sj$A36nolk>g7cf0XO>nh(LcB+io@k+Tj)I^`AX zV943!)t+9^t1=1Kr1t36Nh)M0E{bm9^50;3oIRD*QAfDv37wN=VKtZRfs%GIx=J!z z9d@0yLyq33-_jWuVUst-&YO`urXHNPDp~NeqTpX=_JHZtjjupTd}hveX2fiT)Rnpw zGgZIJ=?l(xYl3b5>$sAms4%>AeRwA5h0;y2=cfBNg!7pAL+JF)nY4@qR4^#Cx1?-o z3LNjp)__UkY4AdeZws{&ae%Wks-hv(IVhaoG)fNY(m zx8hFb4)36N+W5Sz`KtE`P+i)J`egK~M_o2wcs}~(Y+xb&o0)N!#LXg$C#4qCjnY;3hFDV5{RO{{DqeH9lxef? zb|tgb-LCENwt)Cd+vMohDW7|A#{2#rnX}s5W7ma0IJBFoB9r^SCmgl`r~gxIIp^5& zv06Sepdncs;nP($@?7c$(+D8fAEVb_reC>ClHa9@&QC*^rk`X@AyN{{;>l0#W2E|L z(n1vP1S30BtK}!EUyi>*yOZvefa(ud(w7lw4-$u)l3SJ`FWP(V|G0XuVE6tDX?_cz ztFX|!eOJ8l0)Z3{Nxw~!+i`rY8@JHLDN0wUSTX&GuGxg`Q^UZwR)OPuDbZW3=&gjC zCG>X+oOeOj7baj~p?tYV?Q-ssWz)VnF0gC#MfXDJ5waWszrbjxLDXe^ts3#SL1I7( z^k{2nX8z+c&GNSg|GkwUybBoW|0$KD!=3N&aquc3diIGA3)tLMCbH8z6)r^}&4YXr zf^>hjAjI3k1gH|GRE;PzWXp9Sl6JQS2e%^5hu#+ zM0xVl=u*~$wFb+hUUr|Fz2&uhZcIjBdF~cq+(hT!J18t^*?Y4p_Vd5V%Vjc%g>??R;jEHvO+XgX57LrVjdqX+4oKWS z%xOXq-;`PKAqishB)ML4M9cfU2i&VGFaKMSAgl%%=S7Bp>uYAe$d}W-j4lldw0?Z| z)+`{+l4G(2Q%v09r{Cq-C@<9>MsuK=c=;P--YHPILVUgC_)Q_I)(xkNROrL3n${p$ z_U(RHBKP-4#qHENC4c>xyO9302M=sHI3-QNMYE8-_k>qs%@fChq=_#>FYCAhuf|UP zGe%%7(&m~MdB;EAl?nkEAwWQz9N(4Z+W^A`4$@HgR@fH@`}7=1;}A)M-v2k*uMcqo zh-w$!_o^f;0U389KUT~~Il4Z}k-{k?uHzMLQs5GlkA_Fn9o+y-_Vc-0r%tt@A-;H!HjayGs$d^_4d zs!X@vicbPxm|aLkUY{1v82Vgm`ud}V%4WD*0l~i5D9iJ--Gvp=_Dhd-+nnYV9m^~$ zqxJ^jME~;{ZJldOHNLVQqUz+^Ktn#A_xN!xg}mI~DCb$vQ6#~kq(`t)nS!4~q5|?IxLJoS2^$9nt<380WHOsW?PH;2kGZU{JK>XCH>WnhKuty*) zq)CGX@XEI7tz^$Q5*Q3OE^(x=I&yah#l!pYW|T>k8>ms!?D*f;vosDA!;>f-aiGwo%8xVwt$4uZ zW+oJXq7@4nOEn6~oFP+y_rVG%X@6x2adx9Kg)L0GmTponY^4fl!~=a=D=RR2tXZyU zF&aftU#Q8m=C`TK=Rt{%0jIKAq8cf$ueJY=Q|%nG?fuuc zT$DV$_2vFsozYkYYdXcd){M%Kv-s2)a};TaJu~Ow{@CttzSJpj!1P1_^I27^3Q6B@ zu6ZFP00?`(+)y3dA$(GN#9m0AQMsMVqujnjdni2wgvw-07QCXl8{56owqFz)RF#BH ztl3Q=?Z(XPog$$R1vyItv1t%qAx2@5fRKMbhAy@b(&EVwk zYoJPTvcYVT`*dN9H@;WkBp#;181Hj$1l?(yM5MzEHi1``v|A_EM?qoAF^WPRfTz`g zR;ug>=d`#?kkqRRhkwZgxM?R6u0GB)m<1^%$7l8foc=634{sW8|A15iGoy*_DWYuz zBv;99F~(6{R3F^C$y35(QqdQ~YP6~#S@?Xs&=PZSZ>c`~H?L~;53~`~-@-RKrE3Pp zWJ*2;6uEnolVs_s+pHk` zdAcpeaUIHZD!Hnct7vl6P|!ZUTA-9uV{xfbj8^!nXtwUgFR;kgh6hw!p{MiHf8uqX zAr$^&IufGR325U(@?QzhaD+so$l`eQauy0_)Kc=mA<3B04m*-nj6=F_vg?BF8+4n9iT_^X8@zfkOCpe}y zW~uQA63pD|KuI~CnX0j*pDLlfZu)WvWdR1DjV0UUw+oL6Z>AKU(tS{=|K|gw9+zn{0u5CvR2JWB^y+ZI zYnukSlTnbPkF%dM^4pv3T{VSWhP?H!i|Gk5`^i_y;)AnR?N~vO_52mWZ zqgIPVR?hD8BE*B98RMe1%lt4;c80|~*9T|#iKo?c>a9JyNOdmql(5#Pu1I^lhrY0t zb(W6E*Ph@+TAKF$fsjggK9dW{MwA_o0o^uVr3;10H5&an_AG{ zvo9aG!bx`FZwjnLzj)w=GOP}S9yeT577UvHKpF@TBvhz6D!K^$*EuVuk0|aMHl8!& zqQJGQl0Coh5hh}PWx`t!SFz*wa{kI3#}d9LY?9X$zeb4~-ZXt_ zQsnA|H2?Mb-{J>3k#2j(ESK;|zpGnJ$OJ?10^woX7W)CG*sw{#B~*REO3(Ur_orVe zKf;kP2FMpih9{j-$Bv@XRFg%y{N)q5lJ(S#g5nVK)Mmuy-4?5sYaf?)q+ZUdLRL*a zE+3jyejEGflL9jmXY{Q?yxT|~u!3Gcq-UY{s<$5X1oKJ%H$~^>9Kd5=;T&ljZbPNaVqd$xVAi0dJkdajRt?dkL(IS#iGMUOF#EY2=<;9J` zfaOf&o^V2#vGoD?zfs%0yG7ByOe&JI{7}+=BR?UnRw9rM2t*MXsAM~F%OQH9VdO_m zjH0Kl-k+BxPkz*&;U0in0SA@BO0^s36~#<$I*xkGq?_Nd%5CaZmiF|%UO zqJqkAsX>NG^~%yz>G1=9Zv_&Teh2rF3gU(WF+e>77b$U8`cY^|P}e@Eo?t*TVjPk13Ln(b1^ zqgX-ceG(N7P!H%U%ckH^CZ}ey6#wDAVhhdR#a@bSR7sWVUuU_&=CBvpz-W9!oWdLR z%l(JP!RXKK0%s^9dWK1xM`M2uLK5`($2mAt32eg|NDxXf;Y%W{(KyLKuzp?8bP!WQ z2h7HzOH2T6LF>iSkrx+dfFopqI!7E|Cum4d>iKdg?2BOdLlG1Q2qdQdSdR_Zcj0v0 zh0wv&r(fbg_4w4I@p~$iEm#RTlkrH=gp#8P<>d)x!k~PGxuZ}_mrgvqwEElZ zvK@dUqVI#3OeF*x-7o70Mcr-mH9e)l%Dw&B~b1TZ|`^7TMqE}qY`w0 zyQoU`q&YD8OlY)rI!&GsGwg`_LCLrfcg)x;xEsWMrK6J?@~MjGPchZW_wkjKMi15>a)aU2Ud&x{Q1pPvZB?I|FW))ic(4EeL0<%)e zBkJqLC=cHP<3iHzEI@j6)z0jK?5v2VS&`WCu`PDK`c$6TOc7yEvCd$5=?*WE&wuQj z|E1F@<9UAOo^pX=NZp<*^=42WXO`^@gxoIk>7}jC2+Q);V;?gQDC6w8B2F(0 zlhO{fyZ*fske;cKC6*hJ%W*vStc38@@jOT9J<~q(wer79b|U63VGjU27CGIsnnTDzah+t$~U?pkP0e zMf4~|-J!Jt?hu3bx3HlGe)sG2I2RwhQ6wFJ>JLcXO`d zYbdbcpysUvejunz^-tY+!yZwN$eEOr?_bvjWQ!@&Aq@$l7`#GnA-UsCt&Lfz zm4_k^!Pf1oMl!eR-l-*h<>k@}XEtwEUnQx5xBP~00rNFdK&|pl{q3s&aagE@+VDuT zUWU|wB{dzpBX;GH^v`0T&+nEaNf-bWxH}Af9>^_O1Df|oM4GI|OsprpcNe8M{;4hz zBGRQdpvskXQNu#BcN$M-i}h>PcEDOz>gpG}>beg|4V`To@vW8cyrrXl`$^)R+}6AH zU+>y0xms!73pBr>^_~`MSP`IE-1DAs8ruAaRBK%%r1bpG{*61haYbKJgKlDr6jfD9 z8uD#eB+@;w)%{|Q=)JD5^&Wp}Bo!I*=J$mN=rSWgS4Np>v54r{9ijEx7T4MUJK@3v zQG*VVIpHK%nbuOF+ePpOuVa-E6KwT5%vM1CUS<1b{>GrDw&zhDr(}{UTicKSZ9mXt z)Nb4HptgQo6RIlWdbCMIE}rjzO*{9Xg~bJzhtYo@u0q-m{(T7F+IxSX{e(+e=dlb&6?wfS%VV`8&bXSA` zv3$BypsuSZr@Km^bJd`|xSOb)65FNK-KXpTQ1wn{ z|KHB1-46^G(J#bBRL#3NGEcIiie@eHPypW-3O0H@;XzVI!S9Z>YYzoto-B7iQ9t^` zLgwk6Er{_1?wCHTb*_3U=V?~dlczyX^Ie!*IZwX6c#>QFXslhN#XW#0gopz!@>j8> z!=7Nmp33a9`j<`+s#xwtf;;X3T!G(MO{AG}ayJhhUO>kEhv!S5>NQF3lh=e+4r6=Q z;k1&cAu>qwMVul7xD;-qO;CMdtK7AM3Z)eg@b*bHuP}b{wxV1h3l* zm^`vLVma_2=h>;`KBeRViyWWJbpH42#IFoYJ%Av#LFcpjRTQBx0y-u}<_pmFx~m-W`|vFeZNdwc5v_`J~sm&HW0p z5Kks%iO8?bfWA)X``*pkNO~g^27k7Wt#gO>?+l7E5z8RYK?ze5eBvjJT3*KrY}ad_ z?=bsVV|V_o(_^T)&O4RsBOa@5UKiU>-W?IX`+9Z!U1`|Fse?SaSTA;+Z;XWtUhn^6 z`FhV?rq}tt#dI7OKyk06YK-l&z6fb-(9uzHPeh4<&|>6ASmL?sZ71c}EBfq1BV!?g zFa8{B573$TGtCZtOgeUPqU!Ohlh@xJ@t=Z!n27kNdmGYwOwccq!(X}`dtU!q^!5Jg zeTWi`gvVpZeBZH%Z;%QG7QcYBr3`Wt0G(#lBTT`ab?k8b(@#r~BZb&aqM#dH@)rqm zPj0&V;PjhDRiWR4%aa1}oC>%|_e$d5klP#1&a;`txg`aSv4H4ImzC59?!Z9h2Sd<*aZxJHU*v+o*Oc-x4_hw}um5 zE7WM2Rq@lH$#TBuP5fu|KD4O=Z2o*BZytaz0HdFO_sm}oTY$?#WGQ*ycEGydJno1C{Zuc--rJq`V7Ofl(lPra?Z#5h zrzJ<-#i#yLm8+i*{`dKB-sgw0lleLeXPXzca~Ha;C!~9dTdL<)yGKMp$ZV&O6&1O! z7Jdywt;qX@SYSPN;d~K~Ep5~|eS*QaG>C~~LMLb)Ych~RJf_qXr{)9y zAq@fDH%hm$JQR4FRcRrRn+ha3Aq9Ui1uWcQDRhe1B8~#87ACfzBc^>Peo9NYs3u&i z%$Q$Gs+VF431~tz2VpNNr-Tc!zd-)|;9b=XzOute-MNzmFA;v+O_2Fx*civ9(BeKt%eEe^2-Zx!tgKNuQtimY_9#?vh-r6m-?Y6 zg{1f)&`diMgYSgs+ouk?J_QjXEn!m)r}0X)#pzaMKUXFS&%YixKOGxh*?RHCk$=~; z&&@CezpI__-}!#?g_pv;M_2c)&F+yBebKNgEU)L$$dPIzovQ5`1>zM|FyK>9JwSh3 z757e1@7=tPg{`Xe6F;*kFmKr`U)Dz%s~O%&!uWn|bre-{#aB~6q z#RqFt6ZumEcMh2M?Ij8WNo8T1&ov~nnN$IEW|3TM5A=W;HtIv`ph7Af91;nPKP~GQ zMz@hks@dqx37J=1WW5xhWx|X`vj%geg4cfHC8znCOwcuc`t}ZW_%E zrQ*g2XK|1{re%kZ23(2lx|$#Db}+Q$!7sm$;ctEogmAmh-+dpE6rJxE-YWL+!&2EB zlVcRvDYrBfqdOfTt=ULOMLS56;6jN2cs+nubOQN-_yzeWKr#?KxqdrMoq5A!2C!SN zUgVQ^6Z@vluQ5cJ$H-EMVi&rkFbKYlfOMp^5}i&vw??(+leb<6iz59lzH?!|H;YE; zIS-MQa*eXHV0)lQ0Ie<;50pp#SjK~pnE1M@?You1g-QhfCD40xd|2rL_x1ux-qHpm zqqyqvMOZpnfBa*5PfVKJ#lk|R>&b6JYk9LKrIetdmeIs-El;h*_TXCr&&b{rO?hZ~ z>t4Va>4uY_v;^?Opbz0XnDvYXabq=zNppP|%K8L<4G%TG&PRiI?&!tUND_NWEjO)a zp=tHu+>L3wfZ7ED`t(36GE?F;ro0vt%pLr7W8l2RUrN)(a+A5nm;VNqWbCp2tJkK> zK62jv`}Oz7o5SJ9e|9(A++~X=a>|px-l8sz?3IK7mb|QptpdB-+G_^jvwvG^2U=3# zTbC%H`B1I2pHs?Q&w>HYjsO*NBBB*o*m$D=q^>^E&}RT94Tb@CIvocxII6PXoWhND z98%a28_2n1mwyeNS7<_SZ6?Fz`&njxX0ovMAfT9=s(nWk>%qH%)XM}gF?cvUwl&9{ z!QwwbgaQ-*`J7yM{7yBRD^}D&CV*9X9y&KeS+uxA!~tV zFZ|5!UusXt>uh;MiV|$Nw(w0&f4W@9^lC)XRGNZ$d+5`saNMPhAa%=!zE8h`OyDWN z)KLmN7}wjU_7KB1l+MJtWvZo2tV0kwnIypr7!96QPbFm|FJWX(W`N=-7spAt(yF9{ zvSg~Ws|7QHxrFrJk{K`c-3#k~7^pc++X#klMu>tyxqCzWaBLwhKwrO{rEA^7+cVzX~F|C=@~egl?1~S9uAQN z?JCC(&8JG3TtjOe4>g5}!W8N=(Q79}Jo&8x(EM31YwP{qH3i2aGMZ#58bInvMxTO% z+3Iiezf+k;sQd}xyB3ccMn8aFodb_gTIMB6;0Tm*kV&=T;l77*)*X-ak=F z5cF79drT@C(1!%unaow?Kl4$;K4$%i$czFRhw9LE`P0u~k;4o-YK;N8x7ydjuj#m`S#RBgj% zzl&%%y-5}CNs;@_Ns~~cP&Hy~BAiSE9QX4B$MfIDm79S=NLmAIrB|+p&>MOh>QyOz z4giKwSueZsCDyt9YGpTsOjvnsRkblnAW1ZZ9&zb=(r5ilVPCsKD$2GP7qs{l@I71$ zYl)#$6Kn$TTPJdcf+lpgvwD_wa7leWFA7%nI^rM5(r!%$=jucYj=7o-xA^j%w?=7= zzjYUqtq^(q*s$IHfS}G8^W;cC9P3pi#Xnpx;Q=@;@Bb@$E}psg`26H;u8Yn!i{FcH z%aMBZhJqg=6Uxm`pxWQwmYKfb_VFzTkyz{f^4iyUa!FARInL8%^bxFkpoys-h> zCTc5P*tXZ!%s82GX`fmfbkOWTHB>N!4B^{`@f9&VLe<%;m;v$ueGuZxsFgdoK4OI} zN>v0;upR%fk3(hv*l#Cc)hyN%zG&&v{XFmeV21kcT-b~NQ^?{SrX$|H$}KRa#QW@ zbjy-v*W6Ww`*U5=ZEcI$B+sDyBT4O@IXag*Q*Zd7F+Q+Vu=7b09c}u*ppPHgk?}RN zl7RnK!Ylp=;0VUiUkMs&jvBhSv*k&XqV7%l`I-|41LKa)x4(q5^2i@G*uwNc$xbKG7lcn{Nf+&lNJzSNTwQE>-na-N~THR zGb<{tC+Q=uu}q4(^oJoT(k@y+HDF_8XXkC_@RoaJ@OJ9YH!#eWFhJ0r8M3qP*C$q~ z%Co7@vjGfH{rQEqN`;w~8MMX;#s%+&nS;h4QPxtzHH}f7Lo8Ycc}!IIDiv1>>M|NG zE^X?vd*jS5Eo6imnyd>k=obB8)I3KL4_X^d~5wpQ4VU-WuhBli3}7EkSImuLs_Oj9fwJq z5@eldZ#`1TK@I642a@848>@!zsMJ=N0>(TnB!Ex=atfE57MNNi%Scs@M6KNc4YX>R zzzcp(`RQCk$4y~}Aq^Ry;d{}5q|<$EE!TYZNb3sbf&b$Mrx)#EFCON)*vvpF6x1OO z@%J_{wv<^V_40LEzOa#mckSRsJN3H{NF7aGfTA(&{>{14(Uekkr(^1^*GQ|+S?7mY z9nr>}#~xO29ypLufCkOUrzxx`d>f5)j7m)R3rBK{*;PD#6Q*3yWQU4jrw@G7E0A z@P6K%3P43d-puowbX#}SKslW%9vO99_T#v`+@U`)=>$2?V}Hh5A7$u=q!2Vx2p~iq zq)L*F_8rC?&wOKcOMPu*^spCep>1^0e`sUFC~m_%tjBFdw);uH(Rwv@di@6Vtr1O> zd+5?vG!n?_S{F%ZM0s(DO_78~0hvN=%NN^{ikuAYaB>CcllNyV=h?6+U>#ui+fV)@awKp!qDptg%UV1)`4qpF(I@CywE9FaUKN<)H zE-p;^|Ct2k*eMHWWC#*e&HC7ca@oeY_@gVVP?chkt3O9u-mo6bao;X=md)QE{i4l^ zGnfCd=WvFrg}1%i#*PtNfBK8)bbRi+^|bb@nPOUn>F1cJh{kjaij;^xWILJAw`=@Y zTODE!Gz%fmQ&6#E8K*lDha_`@Ro#u+Os4$NKWtLZchWrZdAT~Gq;*6r1$EX3;qZJ9 zijm^6j*KJFjj!bYzoz+h_^y#`=qlFrS9G0Yog3ucT z@iIA3-U%_VFm2$Jl4s_24d{EXD&9w+Lh$eaQ`%=$q#;=d;+fy=_i^IlM|NzEIPp`G zA>mck8+rP}BW&K+m~o01BH5khAJ+KcAcFTs_SHx~Np9*>D=}gH6Z3~pEdJ~Df%+t5 z_GdHF(mDnITtWRcwhoJWcfXyLYBZWy+SP2^-Fd6+uAo!2RDjR%>BGuShyOVWxhaT^ zzEz9?(LMlT`|&cYP)14$%B!5OqXihC!{#28JBR>X95?AoUTwMOMRAEWcj2HC66hsV zsytCD&=6H0g$UlCQf4EieGm8{>O{5n3itrxneS`hvk1vR%@_>pZ2wod{16^e{Crr+ zWmZrlkTaK4;9+pD^rOr&0p;GR(gEH(1<@9@&`+EFs#2*A1rZD&HWv4V4x-sXF1oWh z#$~soq!@U<6lLIEuAvPT;@^mhVnewMZr9I%$#X-rC~}I;6HKu$aCaoYCHT}_z(Ib= z`FrqZ5HppQ57r2Bb%W;c;S02QFy(rC{pVpb=?`ybYgqF>?-<8*+jZKP(gI>aXTtuF z84Ika8*buiUs~y#;iOI6QPmCiZTMEM9;+V>m+mnz~446#8wB z+-}HN=6VcX8(qGBK^?ouc_7AB_mXRI`W70F3}~?qZFzZi(nm1dpu6pHP=M{sJ(t6! z^-I&L$3#1VAAWpK`W70krVws3-S#B7_1C%2jUt+8sPT~Tc@3C93F08IGH_vKFk?mH z$)|;Q`-nHj<%-m2ml`mPDM&m#X^0kzh7CHMV|MT*b@UHkpuJdAc$vR4nX$?)Tb;sM zFzQz)bO9IRJ)0lpn+Xk6 zi`ZWL{-5>q%X$DC4<|CX60hCPkw#NJ*n8$4Py6gtPPy|vR#Y+^ElP*TdEvH5G>sKRg70E`e)5!LT$+1r0lo_ z$W?{O7brYBvR1%XJs_g2cyyEfD^hGQcfMquSxQ zK0Mb|f4=5+l!4>cd$ld2Gg~HcTl>DBpI$o~pR#5CaLZzF%W`td>dTh(@2&kj)QrRr zlKKyu&s(@d5)~{7;Yvp{$4I-ASX{3}GHFxTIef?Aj&3GQcP7GV{~Ub#apfh_=gh~r zt1*{C?R4uw`^y-`ey*He0I17Ml^$9V{za1aju9mP_?hwJ_TL}w`?qwz#~%9}Wq%Jm zPHS2FRcy{qb8e&#+I>F}m;YZP%9BDhsx%MOi_oJfkjAV8sj$0UF?VYt5}8P~_(8YH z3)dP&f{7?k_mnQFXy$()fejC7Y>c2}X!iOP&@Y_Bi9fs)i*rg(#MAV9J25v|d%%pd zDBlw&AR_d}KY``oKR;cgE9w5jm*O>e!c<7uS z3*PYqWy%&X{(f%p7eV){=a-m#%=!hb+X9!_Dd+aBmf?=L zrW!sT``<0iUU+)Luc;i>tS(f3G#`haB~Vf%mS#FW{gq$Y{>*m0l+fUbsy;9nIRhqC zHtZae*xl(Eh^DyLUo+=-hXp&)RH|ulnMh9%)*tuhnS=zPkCwE~k1N=oK9Q9`hkeao zAaDg!QbB=Eh}0D0<>cy<4pM6XO6tz;f_3}!tBYakIfYPm?G)stM6#X~B5u2R4WDYM zj~Lkv#AVXiXGD)4O%l=1I|5~1D>quv`5VbOd5`(G=i#LSz16{;v}XFHS+3wMNM_8M z(gwf{z{9~behK-o&UMB9G(kCss!aV^8`SN^pNShvspwoKNIcpjQ_4JXCb9kbOhBCz zPF^;zFD}BZm?noEc!m0H z`j)J1N8m^2U)p}M%j;5Ci-MHE=HSZ?neG9Q%H)lX6*g(3!9Pa~5hPofEoZD_WS3_5 zE&kMzbg8%ZV{^u-LjE5tZ&O-pT6>3t%$7O_TFSB!;^NwDo|Zhj$@tfJ`aRu3{h?+_W@0W zlu6Cpx4m6Eh!_0oeIvEli~~Z&NAzu}gp6%TK1cf2A%f*R@X5X-9aTwEDU8JKPu_{G zbuy7o6QbgzGT0(=Es}v0CC++au3`QF1OjK^Z}O$)p~f#v=PEzPsimp(9_Bl(ADE?{ zfeH+lUpbN=p*x1IE3+iU1jG4zGL-yYAs(s}5h%o4SA4=NufzP~_hfn455#JCYNlv- z$$hBm8{OYN#^hW!d{=_gI>9E}8%b;S(ov`X#HeMdZSIk;1AAlo&Gpr|s3k~BZgjr< zZ5<*}f-@AIi_1+fy>VPDL?8M<+=EDhN_p$A-dEQD)qG#MnT+ocXy)k``RodbP}Rlt z-YVMzWuT2TpbrI9WJTB7#B$erJ@$H#k3ywG04N`yMiW&)WlS>MMhsZD@#jk*l912U z+O+wmQ;00o{H*&q!cosA)cFdD0_E|&A~KIa@A+Z{ z{k7P2tL^vjH$#L7j7ZenRB?cz#?&}MPDpzqtL-!P{Fj@`%dXMwR;lY$8=1Z(1K__) z$0kPv00u-ri%z*7ea!0^iys4XFNb-B^|`5NCO4n&oGas=V?A0nUm+d0FqGLhyX)4( zXR$!on11J_9uskA(@cW>k-wxHgs!KbD*Q0~`k#%hsL_+?XLZVM#@+lU*Jk>JMzsH; zrRjxx(O!;C_^*CfdWg`l?t{wCUPpnLcBHzu1SETNHSV!|sC~rPc5j$kw?m%*&u;~u zGHs@M@C$mgL!xoomf8;DNY9Flt4MJbyq)oi&m4?jJX+qc4Sq&9=Ad0{N6;sNsgmlOGTSAHC|M_>gfMN~wN&-_6<&i3-=+4Te0HFMqKFzR7 zKeg%LjEHwK%FxCGp6W3yKEtblo!v-3ST!ycUqR&($DSEN3AsUVqLT(O)7v#t9*CzI z#)KGPogi{jTm(i@HB7sA8<1ldNkgLPw39h#UT|3eavv!vjWhVGUdrq3V6kvBH;&~6%N zGOjRCG>omW8@_FKneKJnWaGM=J7?&wY2+ z#qp+q@HYSyUY^0I&2wOi%yh3CHTc~gTO2}&6!%53;AeO#AD<8eMi0O(`jv~H&+%3K zrie>YiK1_H_VI74r~sx+YmbEN_~$vEsf;iI-3OVll#Q1~ulrrLC=% zM9QD%1$VUjA2lKM>{HTwQ%pU#LC4~FLK@}IK{&qw_JX!Dp0sYG{$T?b_`{K_mPbBd ztY(1J%!Ej67Ji5zF!PcqDadvR3sS5$qDTf{5(Fk<6U4=G`jslLKQqm@Md{g5`IG3j z*kV4Y#h7hq448s9rxpbKBRse#iP8xpz|YSINu5|v(PwYuVza?-nLCMWiHo`Vl^o(G z-ht3VL=fFm<^C1Id-RDAs3j4-);XxCtxpwoWkO|4$6ZYJNuZh)u{ND7!Tv)2D%W=TWx!aoxFixn<$yyVjlLL}%uV323^ z_KDb+&cX1|u~~nBoTke=v#&7nFV&GcGcU$B>nn+9(OCk0+_+2oEyop}8GhO*EVo?H z;SND8$q?r=gI{%eGh;b@qBZ^~6d3DurYn4kppr-#!-&Ibov$w*xRC9U2bl%q52}VAT+x8XzcO2xsOaNl-6((ur zB=_G*088%yh{}vUvr_+6zEq34&u|D)K&5~0h`g8zyu{u{n2-iB>ihgs9#FCQkB9Vq z-ml!;_ZcA%p!=*iw%V9u$g!LM79juaIN6fH;5=Iq{uA=vsRx}Don?7;IuP$a3^n1v zRfrRh;gbn+>@2ydtmmjU;H|UV>ha?f5TYDcg765>v4xR%0_RIF(MLUl>(_b5W6wP;(h3lAnDEVC+AfHtvU< zf?9;xN*eJGj8BI|7RC&{GF|HBr89hzkbS#yB4HrH8-OJDz9vZ^$jU$_Otfv_H~?5w z5a0mtY7dD7GK;hYQD`g#NJ-=Lzmx2LlLymRNkgdgL%l&q0K`&Y&!<2n16-|>-Csc! z=x0t{N#Q3POkw27*^T1Th@yl#Lk$(%V9@p|ME3BEeK^qu%^Llfl53ee(A;MggAu^g zO__d3d1nu89Jr?f=yDmh`@EI;W&4M#Y+o?sZ7i93Lw!17OeAA~cs~#AA7sMcXL4a~ zU&fq|-ALz>3S_=JnW&mFHza_4lE}07*zKbf_(^Dmx5lc>^TMUsH*1kFl(RQ z<(JOYGY+%fL^zXaoNHT)IDN`3`1IOoH(g?I3TXAbPoK?1y1syMpw>O9GEO&b@G!ue zNX(uxD32L2+%T)Ri!}=7z*yaN|+A&G@`yBmvGq9=Jqq%@z3G5#~mev_4TnCC0Y)mleQj+#aHgz};Vwplj%7Q}i zd>SgGxI7r3k-`svd`k{LAtak6*;mvCOZkB@D_N}@eI+J#`>p$MnPS!Nmd&`ls(f8G z98BHs{tR1nybzggxt=0C21r-gS`b(&*ZZ#DVb%o`Z=JY9kwaTEr}OJ)bVt}Clmk7M ze7WdJ+}=WeCx^Tz{itLnnFR}%Py1@6c1V(`HxF}($_}?~LNzY$XM~b^LaU(6s{aU1 zL;aKJZ>IQf5i1J66BK}vpyJF|LPIs`3?lYanE}8wn7^&bO1B3Ej}|&F_Uzd!{A_uT z2p{JxVd;+jDS)}+^q-s^V-0Cpc#4&IsAuRJN@ci4f9|C0*Ah)QpOaR5*Pg23J=c+n zp@)O=f`PNo_)cM&V*XIMF=k+xbF>c+oY`lD{DPu@y?eF!GI2~UXouV--OXj;y}vnYrH?M()j>T$)R$RCA}0TXL<< z-0!!LqPeC}QwpV;Ye+(pikkbi-bkhEem>vd-{;T$an7Ev=kxJU9VsWsmA$!j=7LRV z)9nUaN`%JQy8N;35Cu?wk8&s7se-O-We(S;LaEh@X5kn@4?{c^VWrWsyLObqQf~=3 zc*@73N(6%)aVf79ZiRWN4_H`r539DmzisIq;^9xt8TF0w_Bh>IdxuGv)o{I3*e52R zaqt5uU#A(!CT`*NsY+z0~f7iyfc&9W>1 zBDNj-xt}Z&VA8#l3tHP+rCh*_kZrcv?HR(JoBkYkvTL;}J!HOW4W7 zTRoU1mgtAf@3N}gmZ?*k>2Sn0StxC#C){HQDz~j9v;=U;logsoQ**EL+-B$Mf%uYM z$X3sp{XJ2ARR^NpOt`MLpTxS>pEU*|eUnJ_xvpUTY&&>;(Q;PD8yZvn&hnl)mswkZ zz!J$KbVG@yWiqBEKp+t)!ZvCXHhn1^eY)=EigsDFb1GjcmQX|U@ZgAnh-^W#BAnSe zM1ZLi*TSoGRb!vX(xOB}#o1X@yjAP;yP7w3SS{80D^Yg2@90ry-q7$v6f!l*<^lIb2^R%stDG* zPB$v-(>S1s3oYy4xPwR3Skb>O-~REmQa9n`_~pw^$faHb6Uc3gh=8A|-}C##i2<^m zbYna4?K>=A4*hUTq41kR<0**tI4jH{b}Wvu_XuEA_BIlTHD_t@F}ltqsP)l)KwiPv zJC4uCz!Zq$E3M>v^qL`Gil<_$PqlFy~~pjFi>?R8xG>%R1h`?8A5T0vb0u4!Z70aD1^g7HxG zloqb1oWEkQ@k@&FwuOLv&&4w$IX_eF-yYzDz}GpFAXWKD7eqj55Ld-DjcFqQv}CR| zMK;~1D^CH)h_+dY@7|0%kG8%Vc~Z6V4Mx}(jTIG zwOh3ba-0PeQuNfd_sP^2%P{@fKGo~{436w@59pNDt38YEPVHg_p?!6@Bb}@BrQ7+l zGTUG!dAR-CyQYXfC~n+fMVGK`a73Xp1*;|hpK;SoY|XMQ8A z`&l{~2}!mztnMzDl4RvAWe0kFtzJe+f48uT>BFLipZy)b`Df$>Ng$13&wxWnIJx4%eEobrDsf5b(Quv=i$C5SN=E;P=1QlDa+3+)US_i7CMJ6Tsl$FR(*uM=%=eK63&eaF$DbF7oABaqg{|0N z*S|>pT9XMHD@9Fjm)3I*mjCJhfB6spoa;aR&7s84)~QS!R`}%Ggkff`-4&e+zq)$e zXCEEw-sS^$Mu-~geE(45XY>9+*r)7$_B^8VQu@Yd4t#mQ*Y-%)*j3Rp5)GpF8$DR7|^X{(V?<RZbt=St%DavAWl!gzBQc^y{!T!s?GTgWt4suSzb!#ptiK^F2;)Ap2*K7 zS~|is6n<-;AaSK1u88AB$ZX9_8_x;)u1jo4BC0P736votVs( zgy7aU(+Tx8JrEbuxYu%pRu}B-70*PVMluQ$*rM?)ZA&$w>wo@Jcr@77Jox^SwbO&* zKvxyH^7Jqr1z2`bhNuEL8!-}*vrK;3HM6e5&Cf{e$DN-QOG)LG?_8-4xjkg=4p{86 zsrK*I(-ETNZ8k)RK*$+xdHr;KQ$$P|2@Q}%z0d`imLQNsK|cMj*1l6Ey=(+2&8H&e8AUE zR;V34n*440%#9u{ZlfFNSuzq5iA=(H(h2Fjq=xQ6c&s=aFazx3m%}enW*}mxeGZta zxdOTqMPo6kDYP0)gR+fJp1#;P?Ml9RYKek<+~JevsZka>WT$Z%{-!>ojUIJ3&UGIM zv5EIdp$-+KPEFH@k>QI8NXZ~F#C{G<-_S3n{b}M!kQ|;AJ?(-Xo}l_orW^zWjmFR4 zD9X#J4BK~KG0G&I$BofXGbM^aLjx=74~7>|n~?(FC5HD;DMljW8dp9{YYd-1}51**-Y8y^X=HEE2x62UKF z=X$?#8XFd|ONOg_p&mIAGoL!yOF~Aq2^~$EhaD;eE2g-0%otj6LK?7ElCHPlBK2gW zDRDoW1p`}PO{XAnOYTZw59*TR{mQqajX!{KMiPJ*I?w~j@0bs>UUC(EVLlHRgW=0f zTJ`;gGmNYv)6eqA2=B)gS|&Vb@lz~8y$DrAn2b9`IWF)<&Mdi@74igl&aY~9jqPzzgk@Oy-T4O`;I;^bw{W)=)j;GNF;y4gsK=O!^B2Nq7q0Za$oIDzLD zQ@(BdMSI9X#}c=-oyvWNT3;9ik(Sd~w>OMnSt_V%=5WrI>UZsq4sO>8g^^WN*@bij zg;LsOqM&sg5Ivf%DvR9*8!?MAB|}Ldb+H~EyKQ&OK|y)eFxM^C8YDK$24ko;W+!@} zl0rRT-e!LHh9hrIB_p8(f`zDnPfmQ(Z6Qel&)M94jOre zPm{X12jS5Z6T0_aa_+WlR?T*?sJAkUb~slK7Z}mQizT~9up!dlBbfh#wf>eJ0P2Qp z&BV4S_Y}{|T=t(j_`9xl?||coi9*1kjw6ZV*|?1H@w0|&n6*DXQoEE0Q!IA=Mg;4M z8FkrBxA6WbBh#GC)HaLY^*J%>0EGbn=XzzQgz`fx`L4&2rYrLcSg{F9gHD_DNXO~W z_fGD&#o@+xLb-2e<%I?|kJ(_^)WZj7%kKawUm@33i~bJhE0RCAv6>m}Z*^Dh-?glg zCF&FCp1gChZ>gAs+`;f2yWa^nEuQsK)~_G=K+-L4Ygx`9Ad2>anWiLj$k9_;edw}` zLwl?f!fj2lE@u(h@X!#EbA~<9;d<3d>M09$=!a2nJ_LMA zDCoL?^h!R<*JtD&8QXueZ!|x3iUQ+3bz^Q}B>%k^1hM?_3JB|i_A8hXvKqf`Y4;N4 zW^C}L$QmDDPI-6ue6*S8%;4QkPSHlP@XsOp>9(_nzYVMSPe;kgYrEyT^ulId`umm~YUgL3rs` z`425k9*D;NfR&n`kDWOFSz3T-S(BEtq2@h;`lcHf!1(;b2I7b1w$6kLz1v5 zZ$VsM#ux-jB`H+!=X2sm<*+k_X-c7N(}6)l{$Vk*<#}ouZ{Z7E$9_076iQ|K`R%10 z{>`1p`OQW@+kbxa-<*zb+OZ@$uK0QSC&(Jc_0$@!0bg4u$^)R1@RI+ zL`zcU1+uA0scGLs@BWQC5A#(S+r^9jso7(b-WafWjASHc!~d(L355gcE!pHw){tz? zZDRf-Xu&pad$TuuYj0#LQz3Mr1?fL8IfMdoUkSLgpsr9Ac|df24nH~_ef$f?e+fwIIZ0yuXfoM zJN2}k6FFc32AGI%tL0jg0K-Vm$9i);jyU`NgCf!j5rP5lF*3-jAmMEiNS~tWyQRqR z=UVmIJv+ZW!lx9m_N`myyTOD|1{2YSfG7rFN%L?r#YEOZ%!U8=)KY-}9^}P{5+Q?x zD6l0AU`7R_sDSs{Lio8eYiR%$4-x@H+Oqn-3__IgRuL8ufWpxr z6rcc3y%O#w}GF&B{vC9`G7ywV|zZ)3wUc6gm_ZI!Sb zT-Su;S8ciPMHHy4!he%;!T^xXrF2whOlRR2^K62}Ynj2#BNThBS4E1ycePwtHcvIB zt7;EbFNNq+aQ2X{gPp%lEmF7E#-DeuaYF7Kiy#B$sEkI+@94l`g81VMBN!WaME1pe z-NXW_8hH3%$QgvIqVA;164@-cPlhY%OziUW+O-K;S;#`J;&BAvl_~29WZ2=yyb#2i zB}4w*V^(#_d59w?Qt%c_stRsSRyrVn@}k#4Zsop_DEpUY1HZ2?N`6RT>b@p=&p619 zWXC0S_-uzP38G3lOwaGong(H9C(Z3c?nJ%j}H*j7@n zy9Yzmjr#>0+;O&SE_b4!9*R_D0d-_3ek`)Kq^n&-0t^eHM2fr3ZmMgBl`i9mUfcTE zx{(RBqtlXTFeDpIJfbVB!?4irBXX2@rw%wkj>CJpqe2+~L-iI>ZmG?tqxAADO{|x$ z(I><`9Q9tmy#urOu)^h^2N6Wt;|h*RagUL=#ar1@)$~iPE!(}Wr-CbWz$AejSGcW~ zHgSa*I!Lq)Xt#0G3zel?-`eX2@Lu3h5b?f;pN+b1jGSGAgD%A^y3YFckzwmEx703J;IYWpdM$R})S=x-?ssOo@;M0P+^G33`V*PSVx@P)%ywYfcOaZbVj z`Iw~&;AtH5#BRXhr7lNKjB-469{%OCJt5ou`;?t!EoW%w`JWOW2ukmWJ_*`ufVU~S z({L7b%n7U+8vHO&53IMwb@bxHpqpX%Q9=JFZw%t}axUctaIA=LtU@jxBb|O209iU6 zZAW@95OC^ySJZc-dNwkJ!k0pmx&um9v9L3$Z z?9Ur~6%qZP#}OSMC~PqF=EF#&P53F13kBbU>ru_Jd=Xqwm6nGWzP&k_h>y|)neU67 zkt~n71-E;%6gNoYNF{f~<^72Jeb=YxV*J$~!6D`9Ql!VYEvfGeiSnlSs<-FcE+*dh zOzb)ofB2%)gJuuxs5GiZ;&I2tt3S#KKN8zKY>MH%DXOUc2vBuA0ZNn11_!7ge64Re0=7y!#@ul`%rA|LfT@0@r zi@)->v&e5oiVNIvqT&i)g}YUqM~LB36_(@N+x(((u&-gZ>ANzeW9kK-vGi{V;@K7R zy_u%+9#O}gGR4d53@^>Kfm0sXYKz6)ssJN=1eMKAO1mmIJ5c&Q2d`E8=y%sAj#qWP zEzf&^gl!&j?b$E&Knjr(ECH^n%0Zn}ETFrAJ^ZR5>`4V3_i8|Z|@C*s1rT`7Y5 z;SCy>r16q}d^p0y`V3K{ODYU5W)F@EvIx9-05>^mDp7Bpkk$3G$edBDWmGr!7Lh$K zWmkiE8Xa%^tIjgP6AF5Lc0iiVe)!9?G30%tLOF<8gG;FK9@e?(lJIEB^LTWxTQLns zl`+$Qf9qmGJtVd1+^iB9p!Dl|M8CKdx}BccZFkDHY$AfW|@3m3@?ih$~Q?OsYj8m z#%)ml&K%>%7evy}&8)|L=+G0*gS>+fe5AH}q<0&XU;TE?yr$P=0~KR{G955WS@$%I zm1ZTME}uLT(fjcC=F^~sj?2e+CTTd?ny83cvZBL-%^#g5*B)K{&~;8krT%2!vy&Ck z7Tr77di;JoSxkI-P7aL4_9}Q^;h#-8e8~LSp?i01$(yLo&xaHic)BqDDpGjiEt=HO zM(>w-X$z3oq$uftr|oS%nma39Y{GDQh?<;N-8IL3>5*nAJ)A#s=fwQ;W1{gduN8$Q zVIyYqzCGY{OZGzK*}|hfQ5dH}&a_N|$>@Y^cx1Yi;^TV{-oBjo9@8@#e6ut*Fx#J8 z-sqirUd4nq^dXL(G?Zf^oo_PCpM1LtJEC%GM9``xvUmLJpUFeu@x>&BzNC^+@@bE& z>LS^7{hu0X7i+V z;FD<(BNHT{pia`2z|QqjiYNt2q;`x`Vo>JXM|8RqsFF)Eqsc5wd6w9}d68;r z*suQp?|JOQ8UoZp`3p#-;?l*mFIej7wRMxubN?=%H(UK`oczv&z3?!|^U+wq)++s} zX{<0bD)8Pp*1ZSiLBA`KeNPXIt3vipugO(U$J)v%f9zc@2NS4iu|n%ts@I=%>sOm? zgito-W;fbSZ$=02e6S2c!ZgMHEc^V~wm!u=j7NLRNZ@9FxBPyn<14)GgDDn<8X0lK zH+m!<=JKep5M&zZ&~d=+WWHk$JjeOpPEM@!0zdT*!6sz5VRY|TLAbIDeUoHQDa|KqZEKd zvqJV01T^3bWU6w?B(JSz?&s;?2f&{3J&m7 zgnR=90yGQ~O#LxF?dJEBT8qaqAiRatNs&+AcJB?#-Zxe!w;-~VD+Wr&l;4c2$%63- z-?BekgJ;;DD8B`&`Q@M`SM>=;k`6Gwzmi?XV_tX=?H;gXN7Dok<$HH!q`_>^y5GV+ zngo@c2F_>BeLe!G`kTM_E-^{2(tj7lx$_XROsqx z$aTft{dk(Nr4Y5^lr1L9$~6!o98(xCfh+eufpiK!nkE|Ph0Wj?%9ob#M-N~0wp&fOBkulj;?E!QloWZA*6pXuy$r4IjdQ{$i>{|7jFCCI99w8^SvL+Moz>hHu1A2KY%$ zKx-V?)?=yc$31wUoE9N#Z-+SQgr8=12K%GM$4(}$b0*n1wgi9I`l?AOoXBN>KdMs`h{LinG zS}d^OECzPAQ}v)$>-7U8zPYChb2-tv)g#RgE9ygWfWiot#A2?Ty?|O@Lm|SG@W8fy zb}$k(W-sqw`W&C*7LUQ=+e)___A|%EL_1H${p>t*|BodS zt(?gWSwi`lMqXE}Gx6`mbYV}A>b^~i9^-Ut{e7H$YU>R8!wj#NXjjs#U(^-1On6h! zlTChyMCq%?T7h!(sU04@?-0`O&|`PWdABL)me^IH=bhikY~*kS93d%EEk4R}DO@nO z6EjCAd8fc^EyaG!%;y@DdyrYIbkhwP9*MYqU|{IEPBkI5%z%MeG=NKIvc=5z)g)pv z!NO#7bRy6Pf5@L_l4_ozOQvC_nlcWZ|4|O^y8$bJXRDvA++d zSJC6O;`MxmCSQ=4G$Pb7W33ef2KJf;u9EOz7|}(toJAMy&de|m#fPDWQjKSQc(i8O zuyg8Ze2p*w9>b*1MB3ofIfzXC1v!D6=G7`Lw~lxS^j>jWbe=;M{+}qP4V(utEj(bV z(L8n;To?}my-H>P5^G?4coK8J082%FpkzqhdT?LmZ;#X;DwrG5!+V5G;<=M;y_}ok z7@!laHLGG}3SjsEEA!&g_IkJDN1wJ!IY2;oXMsLX61ItXWwO)WL6MEz@ zr6b2&X{dVT-ju@FE;KZ%FzpWla!Cg5KFdPBDSWOoCB~QJHCc;eT1Yi9k7y62;A#`h zQCJKOiD84|DH%q}8A7_XE_tCbi}>D)rAY^f(n0mP7lVGI2m{hB#|x^<5|cQ}w}rA8 zHkXTM5uKx}ZPomHi4nXj!+TU2(vF0)YAt=$~S~ z5K%7{RDHV?oo0v4!1P(P^>mrLkAd2D&E>0b&h5tgzG}ViZADd~0b0LH)h#A-C_-}L z=lz~Z!y+@SO?(AR1q5z@zrid5T3swBA>l(W#Iv?r#1Jw(lEmBM1=&Ik8}s@02i3Bu zypq7@<|URJB(c-FeMk=i)&G%Yc!(iMb;c!6DfB4(E#*0}k_8qy$Zzv0&&@^&bm4JM zA&i&_a3w_KC9*8IO(Li$-tWA!xd)?P12|AgBEFeLF?MAAe93V$mPJE|wAfImF=>XK8J_aM#9s z4uzATW=%U#977Szy*-f$-_A}{r@uQLg*6^DH;hsAKfn+~<_3lKc?IQ9U-HgeC*OS3 z+Opb_vVV~!UOes5M1_Tjvy|_(JjqhCn&!~MjT9L{e^}3DZi-hk{tChJdkj2`zcEv0`X2?%We<+%3`#`YDYd({(5}lD3Hftw6fh#>7 zeIe#?NKKqk*@)nSuL2fPwmBx_y$FvhP7W(PBn)5=~juJb2gqkOaJur5_G<+ysn z_uSR<3)#`ZeSCVLr|>}&9TT@8t6oz?V1PWq_cj5w9N`Zyy!`v^WufiM!rR7&CIn=u zkn)QN6O8q#gGd*z)$YcZ&5$aihu~RO$7Fb%$)H0_*sDR*e?ckgeR`_^+K#|=J00C( zlWhC^U>`>N!K6ufNv(8X!ePK?IKTjai?LL0PAAoNC32sH@)>uS@8xN9iQb~1LNLCG zH91M27H2o1l&OXAxnZy6+h zfXKosKnO9=Q@d~+6oMC1jIv9S>M{RblCr@}(b!K3lcS@E+1O4DJc4Hnpry*ufQq~n zyUdF}9F5^R9Tk{+_Y$A{NbKQ=3iSoK5&(-rgx&zUn5m@OE^(!pWhN$~&BQ6QJV6DVv|diNw_U_= zUxtA_*(j$PsL2H`ZCH5%29f~}*D&|IXe+Wh$Zh^EeVPr4G{|rQL*#w<*AD;#h3NOx zQl9zq|0zdg44u*Q&$S7uelRVN)m4#qJPTcJlpd0`krnw_T;;|*;IG1W=bi4J$~DYud9@1@K`s>p)MqL*WHITGvZd}_I-stZ~;EYxM%&#*1iyU{> zK|%mXI~HkKSaOGr+E%=hRc6=$gkEyLRen3Pa)Vm+3+gomzFSyV_46n|#)jRm-N``v z-@bIgPe?A1Ysw2fPvUXG%T4uSv_r~~{19zzlv<@Q;Ue9b4es7(W~sJBOdb;&2h$b! zW)$`71^MTu!;BbFQw%Qdizylt-c=aBU4GO<7IK%3s%UCH!7mUNcUFvpfgqWHJQ;eY z5$T%M`hKL9u>;a5#2DR{xj%wxhBv-EQE3OXf;P@hZbOtXkh%yI<)>n`HsFB|DdKOD z#4CJNJ@;Z-J|r%DeGn36*A^*uLk!P#AscUeByF|pM%oazNW#bV_&LxE)Q4Y`vc-rq z!jUE=)w`-U|2AN|X2ACesJU%OHcj!}ultZ@4EIR8Gx9;UHjv3e3EDv6%)}Sa0>_QI zN8+-hzoO8aU~Ts8xdvKlz-!E?(kY!aXLZ2SB^ z8});Y8drPrmy9&Sm;SqjeWrJ75(akN;ofDb+m8zy38^UVlj82vOd^EXYEL~~o|a=& zxHfN(J3M(U`Q!_=STUlk<96BJiBdEb)(xO|rqHzvv&e)N-pGy@8=7 zBMX+x+PseuV?}=urCvB*;5z@nqh8mJ=4#W1!&BW8ngApTc)T4RGlVe~6rii(j0-_{ zmg*gt+FXaK)GT8fB)F0CY%=i~Z*z+pPtR$NV3{ThBu2UGG!Ax&-~-s)d`E(CRv<_r z92#o;2g4Jtlde(p)WWL~Qt1+gRm@aXHV>+S%_Ud}KI?j4$srP8RG&(F@Ux!p z#V6k1o{g*#H`UdbP0)DJ{w7-Iz_6 z9*8&VM+A#Ix4t~?p{UUauTS`^YtMe1dop9J%g55^u0K!S7uSPxkM?T zSjWfql*fzsFdp@rTX^0nQhhr~wUTqLIL`Paj#>QgTJxL*-?8z#J?daZMoI61XNz$c zIo^wm7(ZWozvM_p`RlAz44p`U?_tnn0^~`tkX8puyz0uiu7fkq1cNeh05vtF7%Vb* z5fsob9)PFyuDXc8!|djB@j`ObVWMQKaCx3Ip>AY1M)en~@egyHN5ZHIFmV$7xBXg| zk{eXUy-IzIZn?4V4nJ0pP;eZ)as*_yORv2u$c+K{DMB}?=vz7(QdNSKFew?I>wlT> zd7_H`>u61yqq`K$9a3Tk4|M@NvgFTbkW>Su3(`)k3%smK8q#| zWKoxdQMXMpUG^7KC0*iG@~l-=abnICO565?RD;aKbhYSBzf;q~5z`?rX=5dCM_*!& zyqq%Qo5Dh8|J%pReI{`wkJDQ3^8E#e(A=Sz8OcJ3?gD7-bI0%8W&;BHJDD5e0n!|O zAG*ufCm$`NI=jdPy-KwlNlssxJG?#GW z&knUZeLLg}qayW?nP0kDB2W8orcY@WiJbem(vHmJ;lI4gLgqILPyAebnDjxW4R)1) z&?1bhedQO?MW#S?|IWPmAFA|=z;GZBQE}px&BL{N`%9=bsVa;wO2EHbBr1F==3@t% zr>`#pGD<(5w(uVYYminC2@&tHacGm(bbp`Y8OK|Y9FI_{? zZG|0`oR!ZsGW;tBEk(eMLC(G}hYq)58j?oFf58`7=!=C{&Ln(c`pz>)`#0w>rySP$ zwm_wK){f6&!dKP`arM_u@-j4Mku@v)td($F=7Q#DhubEx(CuZ|QncTO6;8PQPl4Vm z^N%KrKk&~i8MY(gmZSOklQ8eah?o+S&n;}ZDguf_;~aaeDSm*Lu|S{>4pB^XLjb_{2s=i9L+ekzY_FaTYDXX%mvwdPi=5M zgA2}piVh3Ai^0xcGCcSKvSLlx^vDTQzl#H)5puP}itTNFn|~1qk*r>sd5~rxvt$;Z7R~F+}*`oMHF(zRl@Y6LAj*t!+ECM_U|B=o%-II$g%7kLxx6Aj?zI;@`nb>6- zjAvG{*LA#!24~nT_c)@6vC-3#{c%)p-0zXH@5uJ2Jgk|2kp;X*E6^RH2lP?`h=45+dE4L2SUf zm-m_qG1(?sX2M!BnK)^$rY8jD{}-WzQ;wRMf0Knpq>ETQ-M8R7^5{>HfPzr*5FO$z zo>6s~>LLsGHVu~H(c@`LlZxM-UxLd9UQ?#~mxq0S=g?+E$qo~_Z^dWPX{c09OmNkO z91nRQ?3o2L2~v%}x)&ckZ1~mDy3ty<%WkXBGkp^Wl2>-{ z9U8g*prvE_il7MMhs9eUoQ93Q?22IgAxOV4wAjW|Dc^5CCJ`l5>`1N!a<7u#WgaC1yi!(*_s;dVBxGRzSDh+%Lmk_`7qj1Ee2C>0H7;Kyg2VM0- zCmQf)FxXz1BbEtBjDrTjBYwCH(wO5&+#vDJM2OLnk7?3=AO0ZAgd&|p z4zH;2U{s{{$*DZv+e$zZgKKzO7JjhoKEKverg>2IkziYhCE(9^iBnIiw)JK)9Tn^i z%Jr8f2KZvNrI(sg8WdANs39Kdeawh_x9{N+hJPh~yHtFlX;2({Tdla{xgOFE?GQ0w zGT$O;_Qf!3j>r)I)}C?LlK7l&rsyD&q8eLdG%-r}R0(Mb{0YX>^- zMBt&GUe67l7!=rthF_`nJ6OuIs7{@AIh4{m6@f~~Kd&}Qt&Ef8Cxorxq)Uy(gq$>o z-+q?6xbPH_BQGngQhM~MTjnqO1%X2d8|~gP6CsR}^*U(WIN@x)!oYKTw+$MGQb_gu z%!c1=8tFkW%i)e}aC5vvywx-VHJl^>-3tnL<0l@ch}uCRYrRA077M`^A_G;`lzxb_ z)N{h^y19CW%T-7WBRkR&!ehF_vMD@v^PGC0P~r?r+LVE>J*Q-Yi<*5hyur^-p0WUjGRw`j?J|Ci0 zCq&-&+q#saFLpor!pkXpW-U=#SdPEbmpl9)jD(^?Kdk1`%3(P>BW+)ej>tNf>_G zxikHAU9aQ%dT5Y6GA*-n`hjuW=gqv*@9nov9e@lZKXh1l+$(*c9;o+Ql&AFPXz4NC zYjf&g0Ww=YJ~&N(TINddcrTy&5Uu)2Gvv;Emq`KFmCFK5p!A{`sryBpFbjmzWlgtv zX*+>K^LM$tNFWn(JtC@!%Ecr-X|OhY{$v?+M1TrN&H#DA3pDglwlsODMQ3>(B%@Nb zPTb%FWD5cC+RgQ!8sSh8232&nt@n`gui;449tuQR+N@g0E7dG(;qXVUOLhi?aI<4e zAy4|`_XVx-K8=QAgCS-Yff)#z%I8H|Q-{+++Mm+epU-Ua?;DTkF=*{>r)A4NC9Whc zUIYVk;EEvH8xWh?cf)?CKOhJUFoA3JNn5c>z(;L8>XT2!RiQ>KkPrjNFByeE_kVqe z4yU!BG}!o3k?`imzpq@WW`%+1U%dZnV>&)v0!flts6QQz*ne}1&06U1Y5B@02gXtt{w*;(uc zV!3q*cM9f1& zpT{^mZG?)>q#Yk`70(g_-0~!Is@_%DT%#IT79DC19&lD~JaL~8dvCx63Y^;-5Sttf zt>-4|@}GnPiB`P%)PA%6fwQyLX@B})?Kd1`K&Vj#u{f@a+h_^x-e97gi@$zA%RqF0 z>50957H!~jq4hG;I*VqVUuvJ*|NP3<@E^M&f3P*W!mfof5Ja@gavaGf4wbi9S0;^Y zh1@lBw-N-|S0@d#WNf0p+EDs2rc=1*+7_P*Q&c)ZdWiG{0$jNX6wGbsnfu~zVM+`) z7e`jHYxIS4kxcxg!?RI`PZn@a65@``zC)kM=oa^AkE3LNlG;;~0Vf~gY6S2I3x6yG z5?y;SI6L}rzjZ*}(K&w9a>=n}+p%|6$W*r%Q3zH=q_nrg4+wZCD-9=GoIYHa9WZ(M zVb)0#>+o@DG~hM*lR?_K+e#5l3ODI5K5g-wKWK(~jj0GY4W&Bwl^XGlDsPNB*D#&8 z-rIi=a_S0oF6z==o*L^|aNbh4dHTm`Z*OcW#=^5R@7zL$wzA0A?pK4MNB?+_v1ea( zs@M5b;J({5wBVSK9ajt^Bf=|9c?OWcfMAu*U;U{RCfp|u{ATAUsdVgsiL7Fw_UI~1 zvI&WvbHZGJ^DDTlmDX^4M;v$_ka-70xiwtod1)9amlfBeH`mEyCKEz0C+@@nMTKdq zM1EeowD^jQh{80Ou!TgjE4kf8Xuw5T!3hv1gZW;lrm3P12&7C)RQqEPrrTJ(Tl}T- zpk)`t(2kGmmBve)b_1l? z&FAr={-(OF&$`d=0ZhS18TH4y_VP|Tp)^{ZO!FLG$G!QDm?l3s24=lEqvtWX^v3_& z8z=GUgM^0M-OG8^r*$gX^>iK;vPZRg>ES8#28urx(fX!CXCx|la<~4?r^1n#x(SP-D-t$x77 zvnBGM-)>zoZ$k85@22K!u6cc{ef(_{jm(Cqjz2A{l7&}*O~~@^`;YSM1N9dsm(@>{ zoqC@&@V-^g-MNNpUx{2E(U2vBImuRNa-GLf+20WAkPClV^=K(hl8{8(9dhgA9=V2-{ z`QS2-<68z^SZA2WkuNH|9By@GJ(;!kwnEj3MgXKW7pYNm8H6Z@%~M zzW<*;X0B__Iq&PdUeCu;%)I#aNNC&XC>W4YPBej3_e z5Ok4)dVRJxIzKf7MX!b&B+dSKrndHLM#dhjZ9s1Gf3u9x{c*1#V>o9WF>|doJC%#t z&3#sR8)Nt{Ukis~@nOTaw=*!DUIY+*PXb>(XM=o(>y1`_^@eahCST0n>&!@h@FuL` z&>%8%7%7i`mllK<>!#=_pwia*?&@&!k5Y05V!t1kQXl2r>nkbD{#KlOssDXp81~PP zZ9;VRdUrvXyB1P*hJoX_RTrE-cn))sv!Tq!zoceI@S6^fYni15@>e&7ujg;+=h)tv zx84=KDPwqh^4p#WCqpVVB>}43d9pn#G`4lKK{SWzRn1&!JY7@ZHyj^)V(QN!U^`kW zipR-oDcW*4KC|#+=Czo;X1LxL)Iyw%k#Pps@#ngkQhvyfX zpH-s$fMM9kpJxkyQvqXl1rK+qQtZ}I=L-k^ZF$!MOOLDy<5_NnPZ>PQ-yf3iB!U{W zz*Rq?X#FY!rLa^kHi!y0VQ1q+uZ7s)rJq<^VHV!QW3l`#;FK z*%ZvxmEVJbTiMCnCKbN*0w*LHE{**ew@K;VB0xN(f2R^ z9r>!OR5V2n#evJ0MWv?d&zUk)XY=!+UC5+%R0sNJHI05G4_Oa7w zOM!pD6Co=)>G;0o`LS27pB{x>H{QK@Q<(h2@0&MVt{vW=hTriwJC}tn$mA8Iv-17) zvhx_Ot+(@10l+CfKTI)KvE{S=dal@|bMjqvIg3^#uBP%(+NDTVVYZU!&FBHJay*|3 zkZOd0etQ#9N%xL4N{8=NB;I9aAmS*g2LWI|8>#E=R2u@@4yFRbQD-SVHmwN9qXl8> z*&E)J)Of|{puRW0qUJ-52!*;HdEfw`_#+I=DQgb5Y(*sZM>&zL-vRLAZ$Hx6`8rY- zSW0dXUyKd>5Nps@wD}*4oJ^j68j*spLD{u@C~}85vh&(3S4)m%|9*nn&CVAOk~7qD zw}+h}u4nta`yRB4(@-zi(her@Q6aqB)@~*9$HD(ZIFu7%d_`8#FFz&YOGm4lPwv~& zcpl~_lfk;2ln*=G?$)WF%VMAaG)he46>Z)FP}kVh)Y!XJLc&^n+1jqN1>y+XE4x#v zMToj1`<7$jZ##`IV2&>z-^9(W5exYLrFxbXZoIx>3lXxkB=+!?Xg!lWS$naUDSMgAF}@{6#zNCnj?MF+6}ydy)Doy z-+*f9xog#^z!r%7I!NRrX0{z^XlLEbJ8AtqZD+-~kOldM3=n%8RZDH=J#HA-!toY^ zE{!OM4g&D-(oFo(yOn4pG1j{A2tYw->y__M(ga&k;F$-9R)NvWZobd)(iD4KyHDV&LOA)qb;2Q~;&8bSRR_kWa-C(|wZ z_eTmK2|q)=3Cq<#44(IaF!DUrVMTIgs{D2oU&_T>ZRbgpq9Yl z!_gPjlL85fK!j{{S$(ZKzBT}yDV}vNUT?AUSUJ&oz6c{TWWF`0r-0b56YRV`K5c79 zXHZWnb#ipl-X9r`xG!%|Am2MA75FVGKMYGYD`71{pmz_QPY|K6cI<*HI$AdM_ux+x zs?8^%d}8Ei`%4u_OYb##o1ZO$vrd1f+iZWWe0X@>o)GaM zJCLh=AxJ9#XM18u1jQ^e-*-Y%15$>p^Ap(+F2?H<1Y^e*4AEYaH1ZXqv}T_mZQFW7gjXHIM7LTmiqP4VQE9_UjK|%UG*{TnJKOp&DhsIB0q) z5Q(*YM$W&pZ^&+z&U8AtE$&|Ish#=Oai``d#34n_Q3YpEYprLUdL_#WN z*yFa-bs^t)Mc9~)mGFAB!AHs`u3BVF7qR+m{xHe~l8P^#nNW<7dVpfo+REoDi&t4H z=73u^GriluO^ASS&F2<=yIL98c7R9#bh;^V`UXUE`3 z^cYU3DE-WEQ%WGpgxmw6QWU=IA34m;`EKYq6hNiT;Ip*4pqQ8lXb5mWE)#xOg<4NM z2$N8raYvP{_qr_1lrWn>M1tw5j!SyDQ$_rEB`U*o@nmIltJ}{1CQ9A%8{p6)1{47= za+i+UAf(VB+mm4cMx505WS!ISAvv#xyFjt)#t=A=+v?bRzxPRwf{Htj0)eYb`aM5* z=IQj>REm|Ts4VM))7jtSA0KsOFrY$Ff%~iNv!#TiBu|valc7dYwu{A$2L{@ia zEVyUK9(-W?90XgqqSj20Jv?jWcK^wy)2o@)Q!5_^`ik)S_#d~ z7HrLKyy~W-1-@{AM*2$s$<=>)sF%REl0i{444$QQqV(ACmW(K*Eiuq2OKf0oXa!&_ z7%*m^zW1GKRCez;R@s3M@y^|!U`*jyF?rrnF+xJ1ihyW;f&&v3sy4VoQ5x+}Z$yHy zQGFCK9B|H}^u$sW`O3ZGy23V>+K-$TSjC;TYyI5`dj4UFg*qpavZdgvod)bSYjCG9 zTFIBX=#3^8_)m$*ABZlpJ{Vcds_uW=7f;C?Y&t@>8Y557-%NU=bKE zs#X_krT+rDU2PBM`sb%M&FOve2<#ZC3fsB~>4&s8_P2~7Q#NEGJtPeZUV^N;XqDt) z9%iMtMn3h+o`*|A;SaYopF&!k{^fGs>__d+=wwvQD_K$Czo&zbB4ld89Hx5qH(YMy zIprDB1p~luIA`~Fpmz+4YYZq=+3j7cj~zPUK!^WU z1^U`e3M+w<&{S0vJQ|5oL<9B2R-;Qega6fEx$hqNU;UM*5TevNN!?wK%3jrUyh3Lq z*uvGRv9)ar3GUt@zuB#tY+UD5GSTxl^Iq zoLA>tR!GHu%-wZ2@SndYy09|z8^hwR+(L&kEHgHPeX)F=2**@a#m z!%>S1pVZ4TE2GftiKM**yU!K^82VOuQT}@-4zI?Sn;WB4+&xsLy*abP_xMWXBzMNP11++IZT6+$gIAN^WD;}S`-&c`? zk}%81z22*yJQt>}wA9|`kiR2j-(gDDT*ATLOOJl44Q8IA{=(3<*~1jX^NMSaUN={a zmae_|N*^4E3OyN@FrBBsygL7OKlx$hU|`2*hs;d~w74;-bx!T2`@reiD9wUDt4TY5 z&OT(>)jtiOpdYge9M%}H$K96(I^{l{EE z`y97mHk@%d`K;isS>&VYn&W3?@9amz1QoVB5#aTYTbE)AZdN`&^0jTV_RasS5TB1_ z1^~{29k<;-$ii&F94%_irp&rS3mX#Y3l&+XQQhCv2>lbJ$f++|S&9*Ly^*}52c}Rq zCyu}E>pqF94$uD|y|v&e%bOm!$B<$mwkkb&u`47m0Rl*#ri;j3!!W{#p!khUqA8#% z>Y_99_1w!($MQ_xp3d7kcJh;A*{|wAK zi466M&70g+0HggMf@@IVA||-JkiWjXE&Xw3?k_`niVT;?7Pl+t?^@NfXt#88NIwWA4S3V|QZ zC%yd`x*t63*PV>Cp8xz7yk0c8K34MU>IvKkACeF;4p9qYHz*99RlF3WRIlFKuVK%I zvMUu1)s1Exc$?-7;^8^;2ZGKQjIHgb(&!YElWum?=ekvKJv|eBzn&otLYxm$&{6YF zv!~E_mX|h8EFL5RBWkTVG&zn$0u)$qk`b!?entvH!=Osfy*iFd-W%{09fQ#s8vSpZ zg0Qj84e2qUYKztujUZXqx3X3)ayEm2WUdu_>a-HWYF<#G4|yX8HDNmjjH^gDMfg>0 zxJ{m{ywdr~M@P`zo&7WeI3PLe!(mMN2MM2?dM!tmrf!+tG#$`(#sVN;F^YPBM(%@L z*FI~F3`LEFtzi`}{Qj?-WrUFh_~-`=gLc7pe`kAQK7AB+KdXPzf}!xD@r(C~pqMJ# zRWh5e2+&`P4O!x7|8^hFi1_I~{v4G7K!||%2#E2YJDmqaht<*(1lsN&er7~#VCy5cIyZJ)`3Y#%=_Spv)kmo|9wN+kG_l-;?i&C*yMH+`QsUM z{&JF_@hX1{UBIV!o;KGiM{y1SF$KG1N$7#%EE9gj3^T9+AM6LH=I`JV`$8{SATXIuLfn zRU6OOz9UU}>rdXAYd+lRmx0HWFbsmqJHo}c!0Mo(*~`qnqOD!k_Xe68M{VF;CetzD z9-x$WsJtpem2|dYQ;%bQ^kH68{F)$Z~rn(mx+PVQ=ruMY_K1R-%^kwgISmG?x zad0&5|!KFFx-h8=DW_% zHT(0GgD!bgD~*|wyy&WEug{9(GDp`wX2NB&uc|(b3wP65fI?e16PJ5ZV(u^Q$qXU` z?C9{noiwim^?k4HDjk*D#G)&7Gb!Iz^;~d>K;{a+FApqj3Dg0=&21G?${|Qm{$4GY z`_nCorp;lbb5H*=Rscra4S_v_<8J*XsoNRp{ERlW^U+(w)WT-M1Mfboyv^27UE4%bVoKkKRFNcO?87 zx;)%<>TX7t!fJu+aJ9rT0I)kPr#47e9C!BMAqY08I{IpOhN+SYQBCZkv;y}#vdtNe zD)3I6yO9mR7>`8#z2wq#25Mh&Eoxw*G~mowkI|!X1o96An94D?P*JDm;15D^?cnrD z*>BUXO2vUo2{EZxW}g691yP5aUqksM5wH@t~x6fP(3?6syNHftHY| zAcUxM9aa2v&i>vd?Z;Q(!K}2paETyPYv#r69ha87eKLl|;k~$U06x6MkjlZyauDrh zH(~+SVduJ1-1fQ+K&L-Pd~h-_43-MwW5r<c^>?F^PrR*A1YZu@?itx9b2pjC7>=(owCn?yM=6gzs z)Ub};f>f3x?MBlNjWB~cfh7YXqxTBe1R92w{tuazg;T2okd;rr?qC=gpiC_wLAf=3 zPn=l~Toc1lzs>X>b-Z>yn40}%ubaHgB)a;+GS1yi=88}UA1>$)>i+&onA;)Ng8~iM zPbmZ^3%YyMgPm3v6oW=#z!YhdXb|?`Qd~eTozY{D-nQvc!4<7Bke+OLkA1wW^;|tW z#(E=LtR4nsIrG>`ViefM+yzPfWP3ezyX2Qc&w_%`xr~e)GW@iP4b;|a(0PGp+`?!s zG^LC*zp77pmelX}nP&+w>*Bnpy5Y$?I<5E?SF#OE z3?RolX;T8bd6Mn0W7KoN?|z&E7k(a$IP0|IX=;y7CyIT0 zo3B?$EmVrSHI%S7yuotf;r@Ni3Tl6Vw)fuLY(XA$&kqR0oCvqi&Fu(r#CLCud6WvK zPIpyy2JO+xQIT4+1Ne?wvWNHP9ClK1OHXxwjdFkP{pkE&Ps6D`b@Qn|dwMRe@~irM zi2ytZYMu-0%7t0=XX}phXJ&MOr4Rc1N{q&@$+zkj5<#g%M~lH3dRC5+o+C1+Updv$ z;(?R<11F0_sB9ubSe0>4_NQK}6TQ7tGD03dnBxFtiy zL|e^PZ1TmASH>YykhyN7;h##+HMlxnl%A}Vqi0sWbh2@V=}$3ci-E*Yrb&i?{=n%> z;7=@#W=qT=bg!K5$gv*>>ra;JQ(w?&P8vqiK*_PG%7oab*_(4Wx;L+y5*VWik`+eX z83b3@rVQp~Iyn0TN{FH2^!Ln(`6&NUQg7(mI~RL60zs+YS0mH9!j z8g;ZgBMr2x*FCj9Gifa$%nZFRs6T6|{O8w=h6jnJz)61+hNli#tw6;j#Yo%^~#O6H8L}_ts^!|9-XS zw`bF_4-y_uGMO%@&|CPEa<1LdhX+D~S2C@gYcW*tkXtG3~oE^e-~wILG1O zCnfxQu{9qlq4>p6FB9CdAuy}#w7u%4stQ6w7?*_-$RmLeRsm|3<|V z!d-#?GQ!WoLjHP9JVG(mG41NW>A%SZV6rkH$nW?!qmjf!8A|!%&$3S>7OsDe*u4Aa zSaN`mv?pT1DGy4!<V{l5&pol62i*bhGAn>iB z$1wdHZ@!<|743P_Fc2zQm|>LdnH#W7d12ZN6L%Bqg@|Mppk(n)2hNy*L7+xf9n=o0 zK8Wyz=mD&XMrW>uM~#+xd29$V=t&jAQ2wfaRot5n$t`J{w%_o5aVht|s^qu#;=im! zcvvRAd6+a7wn|iYMD!eUD{h0Qf%Vb?LeaIEbWkexxnmhc~80uZw*Z{YL zkeRjQ2!aw4U2$r!@(BeKS>{req>d+@PZ6ZCaygTb|@oM8&+Xs$bpr8jp z59P^K+7`pcc!4h(pId}KYxytt#6sJLAc^F>*OaL}JzWgGn9SA+sDSxtAw*4-H?D+Xzbz^xB^IDNz1Y$+4H6bxW&3-XD$Rf`X&> zY&8xtjeTNsNy9y_a)UO(bu9JbN9xvZ^6DrbyWKU&x>HO~GK8WOl`fp!HQ=rn>bu?X z&Z|cyvngX2%vyffNVVEoj8$s1Xx4;JGICYY+FoR%_l-5WkA_6bRT>oEG!XF{Dz2u# z3Dng{*FGG-XSMTFl=hYFxAY8-Pv7cS-nN~;j8mKoQs@n8*sZ#jF}wE=>_9k{<(Eg! zqWw}Yid9)l1KgI%FR17wn_*}79w7gWX8*kzqJ6?Y_;f6IW^kPuy7PnVF3zTtx38Wu z!QGDHovK>@1bQdce7>OA-&=pM`%b~q0ZIQz#I)_(+cV#)JDGPMv&~Wi_??f#OlpO2775QgoSqVYF(x=NmAOBpTv#V6$tw z6-fP^Yx@oky?OBcWkmecxAS+6tG>K`eeLbq1?LQ&RQRP7H}ZihQv|l>%lY4_1QMT8 z=2p*}S)bD0R)5SV?pv?wzT|sOc}i`S^+w&LMmJ23d(H9oUI%ZSn3cbmV7p?poZN4KzX4tE(MvPk zr?971d6%xsRD;yRd0#8^{S+6fK|#dva%7D{AlRVW7G=&9 zbS=MkgZ|+gF1}C$Ycl-Y;&SG*M0@Yj9*+yOME0#XXh{VrL2S1}Bp0-0N>|>*sVKd2 z7P$aKA!(8>M#;G!p^ol{>-U;5 z^7qffF8xBk!lwb=-^+!-MJ~!x{4Uqs?A!TvBkh2bVe+V~Y}F-Ufsz;**l1ZacJ0r% z6<5tq3I%HU)t!=lvw=M9$(HLkSt%Aw8Lg@L%daj?EK!G{J4;|n_UmeDc8uWUyscoh z#id_(N?}SX?9$KmK2k+%`>pc_t|mS7r(>Q3df(87?q<2#{BbQyZ!*Lh5!K&kY!vHx zU4dOs78yvrZwid`QC9_c0{m{)*kE!o1lQh)fH%C_59QMrb+|#u+O%g4Sz7Sb#?97x*<>kqU;>+J5)7$+&Z;I@Dfv1E7RVPLp zNs?9GJSmpTGd@N|G;#3tcbgpW?kN;-Jcxm)*#-(3@umP|MPw$t!4~;sohl% z|-SG4`R0JqDw@}dS6!5$TmibPQLOQuPimyjn=KsQZ1!BY#01A^DbOg$fcI(ADc zv@Emb;pQI-uk3N}KKi6*I3&qlKwd`flK)$u2TOX0as zl%*R$xTOT{<9dOvSJ$pfB);6o@qCpa(I)lqIdZF?<6HF0&`aOdF%%#I9@Ke!-yeRX z3yRNx@Jl>o)zt@zy%Ykz;ehdAjhq&7c3lKWoQT@Ip?6Qt?oo<2il|Yy#=5xWoq?Vr z0F@gQn%aGc#K+S(*FC$%GScrW*U@R`^cMN@8H0U~K-n%1xeh`Qmj=VR0A>Jazyp2; z8*5)x>o|B~Q~`~F9c~~m89Z5HHvehBDZYQUEarmL71#EXCAk*L=ig3Wjm)MHE}4)X z?Im}qZ}#FNx?`}$t;p*HKz8TTyYOx>?!wz=B#SHZ8XM$=U|2CsDvnKFf3BnlQ77lXy@`l#OhivULT<6PYggUC z#qAmt+-tvHp&uUd96iEGTwEk?EJr3zn4tVTn*kIMh7AqwL6;8$cb#1H09ea#msaC1 z1H3NX5tSWD{`Xa@HBp;xM2Lyx9W+w*Ymkg%%#pW{&U0`Oz7n$2lHChi9M+rQN^8yf z>47L)5k7~FJ|^;y5vi_!#qDX3^kg`Md&yoWEHZc~trujy7t%d()df(SHfR^H|8CD+&)-G8rXG%OE1L5dVcp_`$|Vw|a%4eEWuSkN4J8@wA#}ssV#un^E(MMEgL8 z>K&n4P`M)@a>HGyVXv+>D*kexCo4-;dm+D^0X>!L{2EYmfv8#neIjaz+wH8e`Y@uQ6avP?>qZ>ShZ!2d?kyqFLAW7 z*y1|`7-69bO?I)ms9V@ZuFG_?#O$@LiWEiK3*$0LGCmQh2$f2HW(@gmkd$i~ z5lF6(v^po|2l#UB6$alpmn($8d6vpJQ^E82)bI?MK4Y{~LY$^h^a|8)e5%GJgl^ai zVXl$pRisw=j*;JIAlNdMkocK~N+$3qRPUmY;NwA@MR zDBk3>r_FPV3tXF)a@FA2cLx?z; zQRq{DA{$h1A7%FxYXAM59$SXJv}pXjVRHlvNdu7V8F-nI+7e{pw**}4rQ5d#Gt8}I zcOj$Ts)cPJA$<9^*)2QU@8+m(O>wXV{7CrAk>3qkZwHM_HD0fnVc7e}D_*MU$t;Yx z+PQIzrp@h>w6qOIy07IqoEvbE=*2I8_dLKsdjX;ff7*sLaAhQ}1iEOYa z{CMPm2*fsm*fkJ;EgJ?fh+^{UnVj50CmHNS`B0EMW=IL0$QFjmlDhH(zC%v60cNN%Ae3E1Z0e=Y zg4kr?n-~b&S>6AMHtNP69|i-i$fDn#krweKHU{Mg$VgbS<2I?aZ8;~&`EqY-QgK05 zu|53QFOWDnIl#X28e>>uf#u!w9aF)W+sDy4Lh(o|lw4GI*vU(_Xr?JQkQbjy077I7 zh`)l7#0jvAtk~^U=!W_;$Wcrm8BVb1X;Z{CM#kTuwi82!!)+#IP;wZk7k82sFKGt)g`AM47x&GkXQI7fSJWDWx69SF0yF&!FZDU;&iyzT4r?E#VLla->t$ZwC2* zr#v62q-Uipg6z8WI=MDjer4^@G3X|{ryAR$0Q}~Zw@E31jrj_^{U&_$C5T#oB;Epd zVC!9(M|(peX5;p!#UHA|9!Y}@HPRNN{sNS`t|Ib5i1%Xy&I^{R&+RoLT4{r?x(>m* zgT!i%v|i$96w`4Msvmn>gUZ0hIVxoF;a&{rNT+IU1Lg>*ffUM!n5t9Yp3m!~?grRC ziZvaOVgJzC;B5_Kf?;2m3;*T3@1618>Ub_LlGMaRgw1U?IA=;@psqDI)e3)T@TJBh z)h0gg=u?-^VgWu7wJ;7cgpX%iA{&LuLy^isrxC<+CwIO%L_}#gI_qTnVkY!q26O1e zK|>qg8(mKEsg1unAiw>DehDwFAW7-H-{k=iDLc1WdCqjLy=;TVMcv~TEP5Es)u>Wx z@BU(ZpOJ4={OmJBUcN@F*Cr3LuIpWUo+iAys=?Viraaw*G^4>BvNa8=%8krYA?yO#HYo#D5Th=ov!T4YK27LwC>+mH(5OPF z8GY7QpT98;YPuQ5`yQlmnbu};Zc%Ob4C>%BJsJgF8A-YVL5ti@)i=^M!a~)!ysrG4 zxJ&%wbIt2?31Aff94T0$I%&L9WdJzh#m6tqsP%&E;|oBE&_?{iNnAl1wpB{6nMVE< z`qV7!+gei#c6|I<1fo zqK0{VE&!AMLu!xT>_zG!bZT`MAX|Ope&4$s1V#DL-&MT2w*zV^okNipN{vIvH7sOZ z*Owtk!OJBhvQS~@x9;OutGJ@ae^vOILPO*OzIK~u`}~u0Sp%2rq^4#b?+^X8=(Fbp zsD3=~XHDfsa`69I;>Lj(X(6a&0Pt?&WqvLK* z`R7lNuy+4F(tc4od;MfA=AO$P@8p6d9{Haw-yC@MrjxJAld=gSOvk_t1mD=(Z1gCf z4LJBeZvDl1Mr?}eN`stMqbYrM`--M((G02s155t#D|z;;2KeGWJed+9fs6yXm9Cbd zx07H1`zxu9^K<09r>v7dGrU_ruTMKFq$PenZcNi4t7Ja&P3<8gFucDg3(cVSy@-Po zVW^=7wS=z-{sEHJ1Hq|>N9=9eGWk-E{zFxIlP@vFFH&Eq*iC949*N$bZ#qS#YrHhE z^D<`!&^ZBS;Nxu%2N8Ar$Oy;#Z=ZJB4H|YqHf8~pS5*qTubA#Am(5^El?tKRU~E}^ zYy%%TlAm2X2boqT4Mlj|G~`&$i2tn^uEdj9lh5yWtn@eH?IqOa55z4syzIO}bM0(h z8_={EdM+jRb4q(I{p~kB?+Wdy<*6&aPDkzpItp~xAI?5fz7wo1Nl{@~qIUCo;xl)D z=P1;?xi|sAh!68qks|Ncnv!ZkE?cw0cTc@oj1a!jTsJkRN(yi7jWmCheJ4HrOFYYH>IjKAw(5VD_bBqm_IHSk*ZduP-uu!n2#>KGsaT@~ zyJBt!ZrfTshXt>zflNXarSS_CS;r=Cj6hUcnOWxlcphhi9)zwTwEz1W`QQDcw87oY zx4-Z5vC|$o@^g}moF-EWN$j3$6DPDNj0|GKu5eq5ak!S3JI5&xYZ&YWhwwDPQjA@i zY-C@=V_PHpBk&?f{`HjptU}_qPMA)CyG8{7fd#a(zmG%;s(hOYkdIg1&UQxYx)V{a z5~E)eLTZ)uoC`@IBB3kn&GPBSh7riAq&Y3^ltt496k#{IM?JT|PesApRyiTROzx$m zpTmup=e04fcjujn1CH(0C*U{5l^$9Xnnd(ZhQ!;RK>& zR^yO?Z4mRVsoAar?}D>SV0=4qm=L6oQX9G?OfrVM4CkhDeC_nk_v39%O-0A(U8Ks1 z?VGI?q~KFiFO>)w92aXln!przVV+p|B;8GdpN^@N!c-hHoOL1q`U9HJ?OH{Cu%a95 zRKD(-2nyh0Ko~(<60S+G4LBcCMpx*XeY4~6-;<#_IdXTT(c&dmUkZI5oXpLA6brXl z8xJJdt&R$g(|>PJZV2$?j3yO_?Op@^Zj?gtt{_0`jc`s7uPV$IqA;20zHi&&Mcwlq zQO8Vr(c3xCn7OZ=$q%+cFh2R+`tESEeLfC;^W2xqD5`hE5v~g3P<`8WY~P zlVgLuq9M^Aj| zcM8bZcywN=WQTVQKklhsXU-o{AWWDDiC z?ZwBFp5-{(*>S!jUTHXHcM&4+v)*O%!=C#Ct24R9wsj$Fi2j1tt}^Ug&+ln@;l3o z+XrY8P2}_6R#3|C#^&+5r@qSJ z3h1!$+ILe0Fxg=Zg@@vxxu@Q)_|UM&@E|SlZ<5C7cHR$h#34QP>ml37ai@}uo>JmS z#ZS{vx{a&;RNK6^sdfF6fQ4+c<8vju!sn*L2|Fp?Y7M>Z@3&u@)kF{>}KS0Vf5wmZ-#Xq-`3w~O0tEP zCb$Q3yBHW!vtlGR$isNEV-NS)L9FV|3=iZ|6lro;KnMo20qv24zg{+Yc`>~GIZZ)n z?g*JIA%IeZ$V`OvS&Z;y3498c$!~Erukly(yP`=#cNr};9Jd>0xgTv((~0=Vaaih& z06Y1zg$h`WkgGYW7l&!9yzE-3CX#o5AscBm~!PNym2(Hq&x zxVYicEU;ycY7nr|0iLLF`TsNA$IKL{AHB>&I%Dq)*b~I1=+!JY+Zxs*r+F6oWOpM9 z&7YFcirVpmh`Oo z>Q&FRw0o0iXy~;zMHv5?G#B_7b&mXx=z@zIe%E$w>qYP_P^gUBd8cr`P4$Th?q+QE z8Oh*1={AW+Z%f_rG3_;-(lU&jShFIJ&nVpR+km{?k&`pScD$}MFCn2h}jV)Jb-Dj`9Ln2 z50qb4CQ2T<5=~I)hYa(y)h~9$!!>Es+pn=I?B-c0EfENNMa45`+cXaVeA>Fu0B{#7 zZ-|_6_OC`#mIRW+oZx*yDDST~ouvAtnB5i-VC5bFAgkX{2hVT)al^#w0Ih;Ni^;w* z^i^N5GMU0X_j#V-DmS+f0H^wK;Gp~FgL&|b#P9VH`|qbXoaZ5=K9?K3n&E}2gd#GY&(ojD zy)s=dTMe(-X&j)MAlN9->OZ3CmQKw@I79Tqb5uvxxnC&3pNpP@D{u3I4b^u%@hpAh zevyW<<$4@hd3R189)#DKnjtW77gK(gFDjdv7Mj*Dw50pX^#{*$Vd%KfJt@1F1G6rg z0%eSVSO!c-2>De&cqC&NRgG#MXEg?|dCvKmFSGz)_Knx%vKKZWsnPsCjZ0I?< z)vo~=2*KJ9)A~73LsrtX78L&@>!k>;OyMYr$c9vC(Wv%vid1#gHuqLD@rUROIhtJJ zH~Ez`Z3WAk}N$O)epna?&pp zKv3M^$Q0(uw^-~L&!rIa$*;kuen=@r_E0Yw%RE?XDtVDYc<~eZ0X(AR zMQGI*@V-~NSMRDm?2QfV$8B9u0;O`4ze&mZ<;PdU#OtutYw}#ZA|*yqnIF4)0SXC- z-Zl>ev+-i-Nm(IBV;J1upOcos@#)6D=feS_2ARl`N>SSDkNVuISH*{sSH57IRt7G-&85dQKWiXXh+&b8Hol z%e54YKwz%{pbr2l^o~P675XNGT<BV zhELG>A!X@ekLtH5kPS1;xF$iy?QV*Wlzh9&}~kWl*sRN_C;i*N6wpm2#JM?OTaf%(V!Bl*6*kf zEIFbg9RQQv*-%|x%};*KHKpns)~-zjmPaEG^7}UQkKIsP^urz`R<{i!j6st(g&v#K zmA(lvY$2Q}Le#MFb?-wdjJyv-%t4?wiLs|pp$v1wvXFo3$gi55(CRU3{Oi+aCf}TS z7n)H9B{U2plfcuAeQNGOsM(MBB?{*Kf)V?t{6)TGB@e}HJ;Md%U2+q%8t{#Ll#~s^ zVP${ksk)`sx@StL=SpWt*lZVGPNQ)m-ItQ{-U0yOzZ+KvvejOJl zYrZN~f3waZ2?Kso@QuQ=DHNr+KB>K?*pHys2=^4Jh~>+1Hn+sjGciY%6pU-cNDPn_ ze;lCXlQ|8_%5W0a=}q_H$yw|WV*``KJF^o+FK`J0z^LV7&4#e{x>DWIT!>XSp_$jz zGK_rru~6{IYXzA_0wM5I)hC9LAb`WpW9&f_m3uL@H#DJ}dGDR~u7l@QCK@6c4yhh= z5d~xGS(9AQXyA!AQbwuz!%lIKpM_RoJj7-I<^#Z7L=d}`bBEtFXM0pDOF5Z0)fd}H zQ8TiJ3=%z3@vn(UZz9}<2!DiynX+yFe#Fl4@f(0-db(|VUZ!p|CZ!X1pXr~W3)*bW zIyFPCks~Dg!Ayqz3aO>Zj)d(lLvv)6&i18P*DmT~XMq*U-o6L|)`40?5d#Mszo3KP0n6Mm>xFWh6p zq(PkTzG>eCXD59hYwEMeecfs(ARUqszAw zct+Iz$2Ir?-hP)3)V6ADFeHpvrDbxE1Q2gKXZD?qRtspOx%i}n25WJTZU7SL+d#Wk z%o847-4oZ%Mv+fI6#9Wos>GrY|Bi)yKq2&gfTmh)iGbU^03-@nR;w>J46`YcA9?uT zM5GB9cD_i3{~2%;qF=D_=R9$jd1z-*l3{JS5?BlQ3`h<49VPYWcr`aGc#{vB&cz|l z32}*zxHeXw8Z12}J=jKs?i!X_jCL}^cn`KgX-F;&x_D!Cz1C4`w3vL)BC>r}}|7QF{P zFw_MQxTtfK!E+sw=h;T{?plL}`Eun$U6jE^{?J|FkZ1{Vcks%Rl-!yBkEZ+nOY;B2 zhJUhgA#U8bx00IS#y!#;sacw$mMaI2+!aFwx22Vp6{eMz8I_fp6}WR{+g0Jntjutm zAB&ssb=}t=z%S>62j`pD`#7F2tSA?-1rG~Fu&W}T^p%&srh4_CyC?Z95_X>?CV+h%nPO&PG<0fmk$5{BoFwW{CdDSx_MCi)1ag>>3eqd#877oSk^#YoKfa=Dbw1c z9>TQ{^Tj^r>10AiAx+q!&%Pp2l~9{Xf8~biDH+{*x-%3V9C6{S*Z1o9hhP(e1V8|U zu#%jk{EXy?T(2hqf~WE5ue2C!iX8Fr%83!A|YomKpnY2;{~R zt2qOCR8_Vd6ErBpRd$#e+ya+5fnNNYO1?2A%z_jNgOOLhaHJ^t?!@XEu6y8@K^c%@ zO8`IwX(i1b-JLX4VE6LA$6pDru<2dBlhP@3lYi%gnK8gRMw4tJ;RMp$ z`1bSHr(?9Qe_Xx~Z+|ZNJV~~lZ_hABY>UT=s)^i?G&Ww5f_jZzTbzfrJ14)BrzARdN zAfKwF7_L`nht*sEt)KF^Wp?T1bVE}ek=ghArCQF}52u$uo6CGhb+fD5A0|s(OV+PD zp(IgNYecgDf;YbFe|9DO&W&M3@!u~&Mtg4epzrq7UtSf0=U{oOQqPYy-CL7`te?1f z!s+hHqj3kd4_0n-4WI*hfw$ITUr8(`Ngqtkjx|x^$w@*^c~pPcC|~CV+i(7que!aO zWRmPbqyCO~W_4D*punC27B@Ng<$mt9-~ClqphHR|>}LP=&t~D5jS#+U_+8@FTRqMBOYJZIYd7&gb^XUyzKN>sX3%@$)Gj!_jQ=grME6Zd28Kt?W{#Qdk+5ek6 z^>-rt--7DSx2yl=?l#_j^$#k!{_=M=@5^7&{k{K%@jG7_Z-3zfAOe>FU`18T-F>GW z3&oV}^7}_A200sZDlV zU`9Xo+AjCrOFst^g{;yeUtNEH#-dE>c>MG1gC)_QMj>P*%ACa`;x`sfKTYf0cvcC9 z0Yc`n!OQAfPTaCfryb$$x+U@)0-!2%*U$K*XJK4zP!-WGYe;X<+u&x0s3Ym(-hq4a+Ja zo2)D@G{B`Ty7%2JZ%%9EAT%`Z*-3lfb(fBeTAo8^ zZTb+Y4Pnqopb2-zGr;1K402Ds4LPFBnk2HKrkOn@cxBAv&3igle^_WP1g#_wusvP)v0a32hD>*Xkud2N8>c||ZS74TUK79L3 zh1{!ha6|Jqo9Od*kcLzz`qLy_(UkE5r7dTb?46XT0vT=Tm&M0-#-rd7zf;9}y%bZ4 zWoaX)^BM7X3Q&HV(#pt?#3$>rZ`?f&4Qi#l+*P_DbBel~qR z8&P9XUHF~sGxom-ZN?aAie^K~SI$c4k0`wR>`?amCb2%89M+Gs&&Izvp>Ay+yf8 z?T^hQOqfBPA<57G!pSszf>6wDQhZ!JywGJ8oA3C!L8mrsqMs69d4r_2mKj#@w{B>2 zDP;Mlu)R%6<5Xd2QhUMBrA>KtHkXPpcF$KnKJVU{(pGjgF9wq*kC0cr^*45N_(We^ z@q_P;5rqY!q>C~tv6agDuN>qqr@ws|bouzlh>90obA7M)FA=)Fi1dyhM^{-;5lw9i z!8}iHiYIVBS>Su#Ff|*q-d6#mCNJiC!ZwAK94?-#2-2h==F?*H|J3#YMEsd z)F!VwC`|#%7LKke4tgdWy^8c(vT>Idw_(egq`eoXjoH)jWHMYJdZKpG6qs>XX|e;n z=pN_#*_eDS8?}H?q=S$@PkYbQwa2<-kiGa&DRVj>%?ZL=SaYyH~&8?-#uaOOxr?rd{i>eJUG^tD`6{DY0c51C&)CsfKcsZydkJTw+!E!X`O^dtKjzSpe?&5DE z+MKe~#3$MWu|8k3LgxqPR@%Qt=lmHY4kVww6QI3sCvGoQiGU_mYdDn`jUJdeo%zZuT84keDV}c%qVS{(Muq0FY~rltD&cFb5CsI|r6;yO_8i{!w`J zJhrQe4bBk(w7zFNkNc$#RNf!!z2U>TTP7@>li-yquGP4r4oxlu2(p`ABw>et-Or4yddB*LHVP}>EXG*(VE1o1 z;{hHjI{z9Uc~VP46iF!#e?@yYPb!ppcatkiP{(`+fCJb3MDWrcP`U;4njWKZH`#dX z8QTd}x)zrK2^pi+aQ%LqNcN{kefb;YlWZ=wk9GtLsrq{i5_ci`n^lU^tS^+H+|5W? zgb14v*PL)n+Obk6ImKEK97irnS*RDo${ETAEb3-50|X6PW7#W?x9u}98A!YYOfS_IhSXUa+G=@5W>R}#-q zzLTD5Uppoyk&_GCRgQm@h0V+i{ETp%javXKK0%!p`XHUv0CdW{9?NO+KzIOH>bq+G zmCdWHh>AGDWZGYs`G`lUaM`XGGs^<~x8fic(*a5J@*#1$Qh50$d7plvES3=J(-r(c zsJg1#Mf=Fq>f1J8!%WK|+GkP8B!z;TX+_8uZuzN23e1xD2J``V?7npnsxrj>6fs|6 z)JBBAd?RCv^cVm0wljU?s8^T`?{)Y*5&0m+7$5?%qvteJWpWr&W*o8}0g*8ZQ)rY$ zqbVu`#HqG?TX~do4WcGn=13HEj$seEW}m})p|nMA0LWQcPbgi?HFas}Hu>Gm>+V|= zM@!Cr5<;fh4jtEYVXI)fwjo2%rf%YyP9)HC&LHm*RSO%!A(i!#R^@?};xIqu0j8=Ue`upRTC2$V0< zwOL~*PHIde(yQN!J`FB{kfEI-w3*?`n-Tl<*O z?^HR_#UDJ671a041$8?LC|^Do?SNl9SJa3|*M%VSbR=TQ3H^wJ7^L^naln|6+6StgJiSS&<`ogz;C(#ZKBr z_CE#VBMl~Vz19Quxorsb+Cue8*8*hEKMj||aV`-4MTEbv(-4!8hlA|}0SF=?6Iq~1 zZh7~B{ywB3yNxDO1KN0fE-<$@hwP%P&}G`;9_-Pz`-qEG`q|P@WCOC>q56CU!P!L< z?79Z*%jE|_|(ae0=O7J01cS+1OQ4ARoOcv>fWN;BLFLcXt zuN)nNm@ug}jc}li?%pW3vzO6<1-X*wCl-Kqp_^)*J<$TrwZ>E5J>UNa!iQ{YGf?IN=@Macsxm7cd+J@fhpE-nM60Qn>?UzsZ< zNQ?mtxtGTpy@>QgBxKq_7$9{I@H>Vo|LDAY0LdW=PCF1?G<6>vk&Q1@t?Uqwr5qI4 zX>Cv|9#xk~wPgwhjz~07Ft6@U69(%uA^V76lBs7yfai^BrF=rMTQI#<6q+kpn9HUI zT4B$&SiD?!Hekcw|0riK|a6MsQ z_FzYM=+LcZc%PwtA;xcK=aP&;M|!~9?+I@gDNk)W5y4EF83Pg){49zG8qs7}8~G`O zz!O%ekJ5*N$!t;L)!g7h9WH~K*O=z+i(&%cEI^G!&&5MUYRJ+xfXEnGzNSAqcGww1 z^ScGl?$+2A8#G21Bi=%|7v|mSnI=BT!a;&vguU^CTV`;PIXKCEuQsz(7)$m+ zoA1GZuhdz{)O>_C9xy%}AW;b<3B*BP>L65Q+MfZ(vO_S`AAT&+;PG=O##c)Ys&fHl zE}quWqPQ(0nk0RNo>S{%sV5r zV6*HRc>Q}a%pDZk?_gHxK7Oo#di{_ZaXf@e8CwRLFBjf9JbC>P`R?VKL8|8|*cc^O z9NrJFIZZ##gF zh0ebpBO8D^twZ%kK@C0cub&NRzXLpdhUgduA((=E9!Q!X>_s%}y9h#z!7|Wr1>`Lt z1Q_6*W8NOWl=w;42qq)g!h}`3c^{I|xL1xqkqZHuw8&64EMuWi)%W)C#E+Q*rA_N# z&co0=<*>N4PhAfsY|9!c$VnhK{AOwR66H`+qQL>8=bkKzk0xu!$W>ud{gxIPJLZ2v zm&U>Xub_de*5m*pJ$@9dj%GgUq#P%i4l)m^hk%M}LuktS=L!lsY$sc7QIC#?(91%8 z9Gh-`Hrb&i(Q`DkuOQTa4LR^Ibm)DkFn8({FLabID6y42v0g2I`UfZ~Kxi&dvhjho zqu?kE!ljITSRG_K>H*5=E7=Ae?F3L57@&*5^6s2?uP@34A9~{_B^B&MRYhaSyYWxz zG(m{J2%oVkpFfd8rXXvsT^Sbyw*@pXPc#KfXFQ^$f@l4hgExXHAQCK_SBT@{k)tk~ z(|9V^K3)sCZ{vuswx^%5jtT~hwXt;JUducKkSeb^jtr+{6{@;BR&SB@;XqbaFn|RK z-F{U%NZ!_*wRb@Z)>iHf$X}OaYOs$wj!^WhHS4Efc})1eb+Wz+BJv8wpb8h|Dn(;P zS#S8C!|!c-iO3@(4wuc~3$-zP(nJ;#rlSkS_(HsK(@snZIx$H616-R7IW$8zCsPvI z1UqAk5=D4db#JT(^%CFwWdTBa?-!(w_SkOhULvIvY~?YO+0x&3z5i$ zAa|VT_^;G$sXz=p7z=)U8WH9TRv^&QV(FSEgoPA`iP29C$}K3ES<{TSW;c%Pj-K@j z`(b@?!5Ss`Z?_G9_k6U)EWu?q{(_jpM!ws{d$%|I8{rq@>i|?6H4!ssYe}|>rq@Bq zp+gA9d@I4Y@1P$;@4rwXMRGWs?)?=MdoDWu25@Wxk?9|+0|V=nxFRvdOWy5T^9^&&DaXFH8rE2G=T`$ca`c}2$S+D zW1zv*vN2<%_Ii`_gBbCg#UVV|aOD8mlpM*XNBC0Jf(fLyZYey)FSr=hXbL8h<5`v- zBN|h(fo_->&4oloEqn6B^QFPbc7iY~fb;wh9_Eys!GNyMKez3lgb=t#2w(+wj8|Y` zF0Mcg_w4Y}SKOnK^HBQnTQHj}%B$3(@z2x=SLDBcTpjK%aU2=+_@K&Ybcho9v5-o9 zJn2*x54lImT_TC(es6&UAh5urckmn@-GK>mHA+&v20Tr4*F8gD`q}eS5y?H>xeuU6 zjS2c6#Dk2b0O55nIXMH-yM?OQgW3`#@E#tTe_LXYQn$x_=8d7X6tbrcJKC_F@^Tk1p;b>m_%45`J752he*byLw~R?>NW- znmQW$Bsn0zgx@bLG@F*m66fjMx>PZ_W2jA@(Z^Y1os{k;^71!R6#G(?_uNqVR;apJ zhy6lRGg;AnwI;Qz1O@?45U3bDsLl$6X@di!u(8itZhi0Xx~@mWSW^DiEZ zCDKC}OPsSMXYosYV@CnrQ2+yoeBweF(K_pZjVdAw>ejZb(p{aN_4`9A{Ih5dT%DD) zcye~#897xu7{h*o3t*Le^Dld`l(w)XPb7zv6-)AD65|d+_)<5$Njdh6T@S!lpU_X? z5dIA6n1fJ8<~%L-PaazEF2utVmpVT)X5r4SL{)&Tw#zZ}EBrsq^U7%Ec;1)HC;jAU zJfQ4em=cS4ntw}KkiU3GaceA0^F^e#!NMvL6C)oOyp`9=U@#uI>3JAj5qpD^dE%Qn zH8VQ{`LU!rI~cc7F@JpeN{+buC%-);QGWDllpsY=_UlxB=hc?>=Y_=cqb!GV>fTYkJ%11 z-Uu%&L)US>Y=VML4zmNkslfM%&D&!T^yBs}8Bdhja)Gw>N`1{fx1^?zR5ko|!?)HS znK|e$>rIrrqv6uRnE&qE=Po~#eUvFUo+48pXTAJiE)yjQ$Xbwlm(HD06PELDj+Foy zr3z+;*0|HJENLb{KqK2>zyhdaFwysxwT24R`)g+(AMGnI#t^p@=tFd*go=C_4Z-d~ ziQ~?j9zNs;MWt_{mNEXPzdP2zFHT4G(A)$$heJbrg^$1JBGRbR&?vb3&gC%| zL?hJ-`l}4WM>?{*Dd8()%j+UFS6&>lOeJBhm&PlYUdniE<<0Y7a{f8LCoZQ(4_~sj zFx@H;ye~B6tEo6&(Jw3=n@1Uc+fNX*GbTD?Hwjbt)SQ6}4_L@R{r74n);Wwy_6UBb z&96&Th4?PO1?5ZtK*EMB0{9l|ElSdCh$K-6D2*bmXRA*;LnUH)j^f{^(uBlp7_3T! zpLbxO%lqM=$?%iYH$nu?4(uFap{egPKl>`HeuOSbqP@}z)T>qiiH>pxZPwqJRp=U) zvZ(u*MXn0xfVFcULlAk9;wGM>1UO#$3cAZ=W2>u3PA(YjqO-U_>qZ$jBY|{_>4vuv z_ORUne&t$PRV9CpW|6V8wPtRT@+%%yS1tWo_xn&=bg7wKJr2ZW^I7cs>lAG`AOsJ7 zJakhX^-gq1)3E4R#ep}M-U0l{|%EQ_0E^v_n zpz;U7BtsQ+n_PrV7qIz~{;?5_MVT!IgO<;Z+nd(ekIXT|Ep1MX*_Lf)1S(bwM` z?3My9QY%4z+rHIzpDSq%o#wlgwn>RgKTXW#o|I088U{ylh(q`{J7lVm5=pS<{ufXO z*|Vv11|qJSha14Z^&)a;yY2hIVo^tP^f|Lr7j6m}QQyAO1PC)D7K>_mT+oGDNckIu zd%EVYH3_Nv-fU5EWP?RyR2SUBzKsGi>EKb4*+L(stHd?Wh}vy+JJOI5aqmp_DW=>B z%b3b05-k2qt;qC7?7nkF_O!~_#$?K?!+Tm#PKL{_^3kLo{NE`*CzQdhToSwyTN0Jd~M>V@Q5;VEtwP69B*Wl6u2 zz6$8H-L1qzAb6NvqhEnOG1?sJENzwX{&u+Spv{nC&`e=pd3>zk_}9)wUJkrcy8Czb zxvtuIyqi(dS>N;qGvyxveeJ%-Ns%q}!SNq_g=|=4vx6YcZLj5~w+s&z-`TgF`j64( zZ3bf2Jgy^726ttbc5d8Gr0nA{m$$X>-2&Kt_tImk?K91a(7B zOVJP==A)0-AiBfQ9Tm=Q5JO!dT?3w=f^~~({QY25Gz;RPK#-?~o$G|MO-$ z4=oS@h@j{aRY@GHFs;-{^3jhs|CSmCii)agr3|!?eh2HE{DABH1fpPl6Uq)R<8<`I z>_P9I5d-GzWqmLqJT0$5h#1?^o4Ck zaPJX>we)FBg%am-@z>_oABQBweVNQSd@Qv!>$RMDwLN-wy`pxGKj-;+aX1tN|AEDv z3XX&ldisS{>rl43OZN}Q>1Vzf>+_(_s?vQO9ijL>TZv|k%pp$_J!DEADh*&NKjR6f zYwQjgb_~cTt3Nf(cd;YN%>oEj2J>{l-x-xI_X3+M5eB3j0{CNFAK(1esAX|M4i#4&sdx1D^*{rCeMODjU1uo5;rK4aXw8t`2(jdAgm`I?L-GxICGvAk zC~}Z7sN`p&sdW9~{}wm-5XNl*wK&w6OL0?&PP79<|Nr^zRg zvaRAF@usfs$iesihOG~7+HVc{PHrzBe-JVTYSHa{WRadD!9Q^t(yV6w?snpauD}$& z^pT}X2Kii2>N6C1I&Pco8aaBS_&6q=vnTM2d3;1gh^WJe4}~xgbXr{j^_qnD>a3iM zJR*%f_|hvZtif#VD6ZrQK}2uWW~4O6Mc($LqM1jMH;Y@g-`8sXnc*#mIb**|oven)msqtD}eoE8BTrAzdX z;z*Z<-LldVf=0+ogf%$=xf`vHS!dJRzt*0X2&qwCV$l!0J#!j_1<%Z5VJZ`&1$YJ( zWtPRE71Rgucb(B$WYKN?J;Tbg=ERp45YqUV9)5ni@=|I=6cn9;%FDA|Jk0FUhI6RQ z?yWs$g++t@98u3!HRPU3uvQC*{6NV?Lj`9!5IB;mvhYVjP{cPwzJ@#EqAad3DJwG` z`y*XWuAF_5H(ydJOENw4%}&m;Gz2XgfbJ9tM?*AOyDs@QkC;DFgmr&a6H^6C0|M(+ zPBKCyXY7fzqVD&tTW3KFgHGG;!ut`9WZE(GNy$XO8DII5{=SZV<9XkC7aV$vBNw*F zIFRSd4Dt>Xfnms|b53?+T{tx74~X1l3DKOoB8{a6Xb!#`Q~vy2dAk*;*&_dHX8dA$ zM6JPnmT5Y99I;Rp?Xj1jUoXEYd+-x_(|5E>1w2{tf%5>}n6te(b(%%Yqm+0#5*07)!!# z3t|Ta4+g*f(qCv**{Q6gVwCQ%_;7OZp4<1!VL$GK{k+#D{hSO)?oAdAUseuZF$!P3 z*T3cRWi1&oFhN7__co5!7UntXoSeZN?1n77!4VGZCtcH_s&^&8Vtc%8$GQ@N zX*Jotu4uP|4ZbsTCEk{7zACv(;Iuiil?8wL0bRABKMIpYqGW-ur`tKZe%ibVgPtmO zIRdpRr&-~O65A!bw!BTdlkb#Lp8gCZoaDYo*|OWK|V2Zy9#gZoZ~BkG^l zklKXMscKcb8nA>e>iM%v5m-$-^I1oWBi8VG8`1iAiBLE*-Egtbv83Nvcdc7NLwz||B`r$@rJ*_4d7NhL{ z)!XLR6Hd!qa$~fPk^BUi90%G)rsW;Aj6)Nu;cD;cidS|-Jw%_T1N~dCAH_`J*gvxw`dvwT% zCS;#il;Z)}4dY8|opJon`Yt^DH4&L@3`1f1O# z44As9Zg>UhUbXfIK#J-j$<;Fd$F%_dyF$p@RtKULn<)jv1j7kwQ)yeL@9#_ap$*THN|=t+Vhd-3$`}8;%w*SIR}07xbQrP zeimob=*l-4%>SY0K)xMN^`S0n97LZ>0Vl9^jZWWA|8ev4Q7WE{ZUE;zrx}(~Zb>R5 z!-DEh3K!}&N#L3i2~E}WdUlI(S1rVtXNtW!gx&pJ=H0U?mRto=)A=`Dd~4?}ZGzxq zb&%-szI37Ox{D#BgkPmTa3*NaID3!8|7HH1!t?)s=1(+K{wlNS#LUf;y^R{O=(35% zD~7jd+qW7TR6n{vNYdm)cCy$@rBv|9y2A6j?i>R8kBZk@{cx#%V@_NM z$8~Ay5>W0gaA!{U zFa2sj?NZu8XZsH=bS#1UTU;vlLGc8zc|SOq3@?oec7O9JOy}I85}r1j#xNF%6@0&f zd(h-5ZQ#?yh?E2Y9D5fA03u#PKhF(|Ac=9)s!FdTnPw1P} z>RE(QyobpgUV!UbzGg zV1r8xT$~AK*5CPXzVUT*01vzwWRHU3@0G26hZ$LtntD(-65BDfs02hVMLK!6?}L&E z9_hOZ8+tb_qyW(f*S!0NCIxPzW)`$J=xf4Wjj3Rkskt)J=l}tX-~ZFqEb!q9k_m?q z7~^YZuy!|6)uv%;$R%%`y~5t%-5FDl8XB+3#o)qn%HQP| zBxNQ6$<9ep`TLmN_(A%VAP;ZEc_}f;5J4X)6QGi0MLm@|tR$O)SldY>Mm_2hu zcS?{*{WZqL_Zf-watc1PP}D2y@vrpkZhgnco@TWtE@dXY4OY_IllB|CFt+ccc++#~ z&Flwz+A-f!_dKSi4W2y3%R5H;wD#EPdS*U#tPeYFjo|bQnt|f|W7UQzW$J!F> z@%&R>S$5^+8ikLGthW^S&UWX}4}&w&jg(6lAREj<5wT3)gQyZGe9##b1@edXO_e;D zb!N|#D*Nm_)ve&L;d=Hhs)^6gM5m4Job@6|BoEhc=>g_)u-#@h_sh4m6sY$zZq5g?BD*Ngl-`Yvz%X00>U!N>4S{623 zF3in00Iu6IyOh&!UyEtK5dy70@T54|s?k2X)5hg^mUo7^<+-$Ny@W2ynlAkW&H7Xr2BoC{rbjc?nTIstjNyu|IR&|eJcGkw=?`S=WcGNn@wl^D+CUC z;oq$y6q%+={&U6PnSDp=ew(1;o#!upxm5f1IAqg~GTbUrMVEHym-4QD$v(4cF=YL8 z_+$3S+YarKj#p3jy?VPdnzlDd{D~X1r^5$#2J!5H+_SfC&))gizCZBneYow1m}ei7 zZ9ir{`*_NBjQ(t_!gl=pv+=986LRe?PF2nI&)h13=vP*h8-K^HntpQnGic!4Z?HA_ z_!++@mwoKgi7!>pK7BbcnhV9|Ii6iSF}|NI$E9@9wl69E`yglc)jmrk9i-CD?%1@1 zb#vs{7S*R5ltPncY0npOpM9m}K;1!ROo(3k>mAe6U&19g->gbMKyX`x5_)#_`;O{Y ztKV*RS=%%(xDn6^V2glTW(-H^#(=x48SnXa)YY6slOg>x1jrYgf!o=#`&$H8@!jD8Kb(dBfHL;L`0IOk13g|>hUA| zTWeO24qlejdk6Z43cDz0Cai9LW?0!edu3&MH6|ABe+9^+wzZ$V&AEzt5dT$SrEAeUS8q#0$Ws!VD01Nu|(_c zV=&X*I{IPF?!sgz#{QLs3qK@XM3oQiD^C*J$!$&M+C99Kgq%6PI3AfxA7SjFR__~| ze=YLywpfXTflAU%LWJin(%R>`iUJwltTF8!A@bJ)I`7SGW$aF8{L@+#%TY0xKVumM zr_T7(6a`aTYJpNfvQO>k+X3Q-L&?K3&5nG?Zu1~h@#A`6 z!QL<;O>DbV_cbA_-@zz#@GNrZQ)7Y9sK()KIkoZ;%WtT;uq-6R_>p`cTGbuHfe7nk zDNrfKV%%un>)olLl)v8RJq^D14BRhM-Np(h{fL-H>o*Ek6?Snk>QSQ^owpJFt!mvO zgwB+2%C=c;nPBO>}ySn7)VcsR#W&o>;pk^p;V#NWR6;o`A;-q+xIfomyU zC+faXx+~kGWizZvxgzZbE_-rnHr2r*HYVFwO})qn5uK&v!9T;gw71{-W7b-QoWkw& z=K1$K0%>7}Ofy&+BP@ef@bt^Rk#}`7yKFIEYqNTp6c{)MpkIz*;3oGD82$dpyfK*a z@ZKj?9S%s;Ro+e2?99_*h~7ejOM!gA(WI@J3ZIjI=66%&zWcq(8GEa;*>PT?0M7+v zS%QNL4lvghmj?RTbLw33#xs+XZD}6ARNSo7TmX0hvDbQGR|UzrUY103h=Dp(N#ta}9+?-7e7$zSfPu37smdHO{F#Dubw$?^caNHWOG^ z@nbXgKzx*DJZtxcW=fHFUgUyjmLsj1Rba9vI&y`M?!a{_FOwZnsccN);*iP)X~1@A zms4(DJ<<{@1fy0W0&q@ldZK;iHAJxei4?K>W3TggY%n$UIx4@`joiU1+GRS6G9++> zN9!dBL-)_=cV9OaqdIG?^q)R9?jx`Y%eGkeWNGf2!YTqQvl6^t6Zl`%T0E#-68LWy zRZ?um-AfN@B95Gu(K}cu*-SjS(Es5cS=ad#`X1q*C|nqX9;H~&h2;f%a;H369F1-q zHXJ3hP^08ytXa(PUO9L=sf?dCCca;S0celhtI!rC)cm4ET#SnSc-@tSyF1i8uVlIs za2m=$|26%wWpg>!&GRhK4V*})UX=R&3tkEHW^yw|!pORyD~%L`p8J|YmRPAp!TPHJ z0`q?QT0MaL?!H&wy5M^Hb!3{J*HO>6==K1J239b(C*~&t&@3s&A> zC0uXkKtFJQ-GgTn%;u)6Ke+a&HuySvmSzDVS##JeoV!dIyHbxZ8-GqKN&XDFue$Of zv5qhzYR9Aa5%@s&NlQ? zWHC`neZHI%hK^JfW|u~t@{;Y)a=s?90K{pe+lodW<A4P}|CHxcHy=AszrzZ^T(2 z$~8RYtFO94>S_#jlYry8=<%?$x}-uF*Yt)LL$*-oe*X=di%%KlAjpW!U-rYVKFz*#*S83|#De z-uNp%S$1uoDR2CJ`J>jG6pB&x<~&V*T>$CO_ZydpOH_?@a|rh;4&*h=6^+&<<3mzC^su84ZAj-$A$D1Z0JWxhE-;&4M|OmZCrepAeC zmJw+qPsYLz3N|2ITeyOpSgp$u)sTn;$QYDg(OB!}D~lf_HI`ML#S!CfS}Q|OHJ<1P3ZDT)_4 zd}nTt{r2*HdiGeo%5P?m9M2ibe95rEUdj0Z`~+c&qXp|UPy_rjQ}bU&D5k`a@YBL# zNed$9A4kf4$(I_*-~P=Pq{Lw5Tv61tXQJR5UdlKDv%tn4sngr)G*RNN%yHxw*dpc? zt2W|m&J}B3;_Cqwzns5+M6p4iI4{(BzBz7tQP)AL=qIS7U;~_xF%EJkAM#6UN;=Zs zpCGKFro0j%6U&aC5o1;Q3hf>FG*aN_%+RsnLIS3hZaBc=xiF>?NRr7w^6uJ|ypuM* zt&4?}laCNyMq(WQA8p4?wd3HX*yF9#P#ZQ-T_zJthO3joSgiaKMQMO7x~T#2S|%tF zWB{h(NdWLAgEAtNdLtwQ2sKtEsb}~a@Ww;wJh|Cf2=O%G(T z*ENp-7!%bvqUwJsP=7}W`PUL^ev%JLPL4PzSz!@v{SaJT;12ZjP^<>cyl!!4CLQ_)Vafzo?vnmQM9SV*Q%zM; zPgOTq5i)+Gu0%j6^h!=ie3qs{`-zQCr4Q&A9uMWmlfW@yf$~=FQaf->`H-8-6 z)i78^o|no8j?_}jyh`Nm5Git}Cy^_5fApKa0u)$_5D6p0?wdlYHRwD?HM>{m+f8bz)$q42h$7&sE09bRbLMU=~_M;TwM<;C4R|zcp#Z9Bw26j zj+9%VD2w_rPexOE+Kc@L0pCVvY+>d*C}nZaJPXMxQ+{od8iV<9&`Y3 z8(vi!HG?Tq!N;Tl$!K)bJ(Ezb_?($npR@xX;jQfNJ^s%7HfUd>uvcV+eMDN-$g~4M zgzN7zEPNPT5jcc`vHUp)>jDooy+2e|B_cQgGV7`KbEQak3v z9#&1ZfPiffW{JGJe@6T<6Apf@p3@f~=SbcF3*7?0CX(6d6l5#d%Hv5zQp*B!vG!w7HGiP+L! zU1b(XF?bNmxPL&ibk{}KrU|+URTelxjV&U-X#uH5W<-08y4S2pl}Zk-M5!rZRgxd5 z*)Tyr%=eb`stZ)IUXThoC<68|{t3cc?zs0I4q``UUzDLb0Sl28S2h25*<3H@N%maY6uRUwHNKgw5bbW~&Jkj#rM%jG zIL%@r73!fT%oJ90#+H4gUa3+WK63CX{k!ecGXRnZ_)?UgC)|^rl{V_Pf3l8M zCm@D~R2PU+e#Dfg3w%vLBVceNZez z`%(B2=9{h5uI5>6SsYO#Q5KBmrW@K~d*nXHx81DMR@dLYW_A&7VO68W zt9P0>Y(Z}D=3itScckkAjx?8P5^X z=7O&=rN$goF&88NrbQ8njtmC8UwYQQ7xV zKCtaT@Bt0tV@#`cjaaS{BjldE;*)1j_MLYS8p5H{CSb)?eu@O@dH}@kr86C>uP&mpRP4ZOmHLO${M`OEA`ZE-M4U6>L=@x9d zieS5;91*(56xTL&4{a(fpF4cdpxBuhv!wO|Tn<$r-yfsA$eR>3QilZeb_r0=SF%t+ zz5x!X6%zA;zdGbUEz=26d#-q)E4O3+CUW>`!C5Q0UNu<;p-Wr~r3?c8KZ?%7pQ`_l zQb&Z4&k(KJ+YusyJQ4#4Po1!Vy_u8v*l}b|CA=M?7 zH2m)GFSw7#J?C-G`MlrH*Yi~zp(J3#gS$%3z8Fx|X+2#&=*v)SKfPy_`}{G@m}txG zD}Q`@$FYW_8_FLOjE@K5I%fQ%Gws0>p3{u6yS36vJJ82wwDw01qZ!n?agx(}eHTNeFfVh5#Toja4&@1i2WZ^t}Y2DPuJ* z0u&0c5r~|nvT2A8XT=!mwq_vIj{}jS0WzRs{?BI993ajdVf^rg=izbhcW?4o5UIZq znTJH;JDAed0qKtby1RLDEkr;3RNaQrhZmQd4(9D4DN*H1rB5CGJiQ~xM(NtGuH8z| zrTB*}2fGI7FRadj0BPLmDjdO;d?crT^c3PSH+gNw|J`y@U1ws(%wh7?DP0Vf9!(Iw zG4|I+B7%zWNH~5uO)@Q|=n%zRvU*RG+FdRi_p4>m$oY}b5 z^(7Rig?PX>#*jo47?yZeVSB)wvr^?vDXxZ=~>wN}%^ zp4yHzf8N>hdk~*tmTP{R+AY03nT

jY4vD(D58|9n^7t)uTw2X!MOJfu{+k@k|lo0NRqrlD8;;SW$R}H{@_Tc8LVY*V?PGz=jFWGY0d3Qo_eY75zgAkq7Y- zl1?nD;O{u)pNT4GDZhJYr(fyiEG%Tw0sW(jOum~j_5r_TFk^k4HI ztTov1Hto~pQ0C8U!W&N*4Hw<{U{}X_XSKME)nAEmii7;caj(5rlAaEj&GE57XoJ0C zm{Zq%r$iNr*KbdDi<$%qe7*Mr9G*Ft96pTs9zS&!sk`)rM0XDgXf=CBN9I90aRW#^z&7;I?lGFUXzjd8 zx$L%@ZrfWVo$AzG1aPNEO^5zW)1U?Iar<=4TKQ_2rKz}KdleS#fDeYYlE0_Me!I|C zqS$%oj>ECDyN_S}@UE0zfwZa(7xbCL*Th}>E*5{&|I=XpE%0 zfstwT@t==f)KSZa&;x8P!dbl4lEf`!Bt!W5Y|63p6Z6X1-n^ zrpo`AcszFhA~LM$$-TFb0jtD!y7p`ni!(ppRbN1~ZP3tK2kuKia!(D|FwL%;2N?)&n}B-16zZusGjaU%EE>0E>%tGYs)eor`k%R2o~d> zXsdcf%$+3&a6k{RFNXqK>H@T@mF(3QhB?!e00Cgzlx|}mm?I?%9y4{%(j#YQG{$~Kg#BebI22L7?nc=-6w#F~wGIpzv zA*9cN_@$viJ>a%tIsr#V!^qIX01ZVDFC7supWqx#gQhH9)CvmXI=7_zGZL^8FtYz?ncKBxWB z?8O6*i*nbG3;jI`oZ!;4%IAo)I5;qgV;%&ig96=0Ny08HJGE1&+-6^QVwOTp{nL2K zaA5nnA&ilyt0Ya}YVd9H%43C=1k+nN!^$YXFgt|~*&iSc zs)IskqClo@eI@=4ba|&?ovv zdSz2sO~RU9#TBp`_LD36_`6Tiq_ifoj@a<) zUJB}xSPQc{k$h7$1wbBm)d9AbDrL0BR3R9gtvt3!tH)y~+KxjpRI=v$ z4Aw3k&YWCoK2>@Nd&-BNKqS%d6gp<%d7AVvSMIRuvB^HAOT?zA79@H!AeVEgO|yL; zRbvB0M-D4g)Z1XL{FJuJY$}-VxK1hSrR{C+y}w@1)G+20U77q8@1}A1a}ca`Pmq@? z-%2N9|LCMNtR1|;cCwxy#ptdx+w0a>PZc(1+{+*_hWm+)z9IVD7fF(m_#%hZV+Z+kEI{s&^k|9j z^FJ(fCLsrCkI9sMBZpfW?-dm|{8lO0^XjF;H#1hjW&o4W$3UDrK|E;JA8OJh`ZV#x zhw@J%)|R@bo=JMFUQ5P>!LV6SFXzFN@=pv?Vr+%v?QDD?k;s(#l;N2Z-?uhpOxNiu zQv#7Wb?{*%CIA%gp$vw+Y|Hf`)8Y9d-#6q)sG|T^e%vo3P+JTX@e7oAPepo#2WIY= z2g0l->x|P!_MHB1oWJlXGcAg{e zNZ2OQz+{5M$QpRkTg8=C#aOaYCxOB4wIX&r9hgVOsnbc-3zsQ9I7|wT$U5L*^5<=&Hi-i-RBBzVAkqu%Fq3&4*TIxzjH|&Ah|nLBGOGRHT2mKB zw3^xOt9Sj2T%5h=)=@>T_88PgL*w&^KACCzHRFRi=naXfk)Kso%5Ir z>!n}+yz<-uO~4J9ZGQe*5CSMS)H{As#QtB7rq1y=5DY)V#Gd_`XoySVsNt*BTw;+B z2@?Eu45p6*(VaGVkANrvCe;+x(`ioW2}Crk;%0&2=(_>>JT!VcBl<&Ty6ccN$_5Z5YW=GLVJav^ zHJQWXqZL(QdU&Z;K${Y)t9;t82=HwOee7^PEF)n-m9r^cdDB-?>`+T9=-UpUsi1S4 ztP)PuON>dNXK1&A0%9u4IU~H?NVrwA&=G*~jNqO}kZk6*86OgD0|-$v4izy4Xx-R6 zn9~kOvmv+nda1z>%1mb7rcAG520+OWuLJ~gF`zXARqJaSFZzpYmJl3k2?7`VPR{cyG6{tl+Ipem3xKb>zyBKHU@xT7*=5i)uYCwIS})dI0z4r|%Ie99>Fbx3 z82Pe>qDgYQmZLgU zVSaZ+jq}7`5XNlJ)M5@;{04-}ldN7G5#3xyJle!7?c=W+{A5(@wO# zQfn5S_QTh1-Gilg&1dE+#o33MEZw|p9(pf9P3Y`Qd#-SY#=m)KeinXXSZyg`Cx6(Y zqOCI5#;=-!Ewh2zEO1)l6pWNn`maRyk!g2}I1L(-!IhC@hIS5E{=!8vM@S`9zv}aC zjz&jSIX-bw?fMHLztn{ix>=2NN4jrzO{zx8L4Ua`!=)#lR|ja;x^04rJfUlPsG}r! z5L;+D=5pLLw9~9M&J{fH4fTVKeSt&hnAHVEaL%IZ?^P@O(XTxuQ_sw<-?!wO>cKwRHZ2r^F}Bowt8 zSx9axa6#}*mMjM>S-K6d%e|^~*0vgr+-^Y0P-aP+liS@_t|c4hH)SmJbvdA(>}@v| z?vQNy{xda)-rfy#xVO8rIlQUfaJ1&D%k{{zmg&MPw>xej@b@QVYOFgelTO?})!BA% z^p3CA?U0#DT2otQ+5J;zZnHkM7YIKn)Ot|l_Tb`)2bXgmlr}vm8+~x~(}Qcm9hF)g z)xyenGHCF^B;&z->&_1P7QsMyx7Q1klE#|oocfN7fF#uf_qHR*zfK4T{xPpbt#!2i zRw3@j*XDGbNv<)}&&H7N?Bd_u?x8OpsKEn3t5&D->oN(TtF5V1m!$HaY?p2;r_T-8 zK4<#SUa6h)wmmJm<@#ISBPBpj=K}|6sYbW<{ck(Znght`ELlD1=mh3VI!Re4F6IQyLjFF6FpX`<_+AF`+3H~Q}@;mb=t}) z-|Xzyn+3ecXKF~NoFa{d#(;9R$TvOg2SJG#01pX}qG#9}Ix{kWsfWjo8(guA(fm#2HKsIWeY+?Q8AT6T3H22HIDHac|C@inQ1a zdX&1V>};V@`{QA&@Z+~l&9)+al8uK1_~q`mgZ)kYL5m~RevhI9tovl2bd*yaDI;~O zCaD?hlM{t9+}mPreNH4`Gb{g#3Ahc51$>S}d&h3mRzOBfNFyG5h@@bArf_`gvecUX zSsPKM-roJIz4Mo9KBYoGTZZ=Q1K0F0t6c1lE@)6T&c@_WStd4(0^P0mbd&OQT6s8M zZih2XRUxVpf8yqv<+F9lv!A(mJa2gPB6fvJ@W)Fcxjc;Mm}hsKy##MN-sSN1p`uj( z(H8+nD6-vFmiQ+_m&Ea>1D3O8ThED3cKpprueo3}<38LU7-1~b`(a`bMjgLX*5L5Y z=tc_{WYLccJe=Tg-3A1gq<=$i{yU%1(VIx$c^ zK9Hu5*)5t;mv=b0>xm_(Y4!Sr&SxN&jfS{kXGp?9dg=rt-Zp9&xXQ-%@$_F=CIVF0 zRlcY`1N3S&T!%+(0wRcnH#U)@HL@U-C$!1Y+}?acu<5pK75bppI;+$3rrl?$<^8Ia z)gcVB z+|M4PrLT&gJaP%^+}-qMyV==k>O<6-8iRa{Vf0-88t8=+nIfUJf!jgZp!z8h+(p)% zH_951W_7;2f0bhPW%%unA8kJx3DTUo;U_-71&VJn;ki!9-bb_0bgISYxX>c~#%@D* zW$Z`5_i@~N0svNXWGtheoGBDi%srt!#9;-hD$h?pw!$LU({IX#p+>1{C^BU*#( zz z!0Vgy11+Onlo`*$PH}qJp>BhNf{*?}gOC?;7i#x^BF{PFI|%{Cdj1h_BqYC`Gnq@k zjUIev)C$Ek9-1URe%hu}?AN8STWv?>As^IZ)}rzb1yF_p!eS1$r+0oY8y!B=A;~kr zB1-yh^bxW6VxcGV7-i5g!<6%t&iy*|-ekJ~KPt=yPP9W#2KD!^5oUbEE^#1#-(Prv zv3gYjb)9%y(0xr?clQ-NXQh@el7SsxDzXyXbVfS+L;b+98#@_u58Ij_21~6Sqw^1O z_!s}o%uxuZU(5At<&bqZCge5GK&|Y>zdUI}d}tL);=_X|LL&R0y?*3dV0ex|29hbF zKXAb}j*Kpb!%jXCNsmEb(gk*F@rTk7M=H#dyyZ#Sx=3!m!2dF5SC|`E__lXTXl-*b z7Td~Oj&)a*z`>`e*r$3zM|tp4-meVBRq*HLhgO-EU7xlh|FCs`jr{j+uJ_ygzi-;O z4Ffsl*z=fFKK^|bLN#_lTnHlZCv)5WOu?ZmK+LaPOinJElJ{N=^nDm}v^`%hmAXd^ zl;dU{ssiRcHd90h6-jLi5=0l^@&E~-2KF-H z8Wd+Xm2L~jSxL>4!RzePKOqMvTB+TcqPwj#wf)A`oi9qDiVed-njM~0$RNe#f4C%X zkq==J6m8wESs&|A-?Y&H+hmS(siRIUcwLk7bX0W(p#g9q%5e3M5N8-tCY(P+eocqM zgM_KxI9LJ<^%=6IXWM4JuKluSdL zCS>~bz2hql+DvQ<$IatneHNHCUN19MWMXICMoT8{LT4F~W4&rjY_ZjMBU-QU@epG| zcilXY*$S0WuN&gGNjSP~xO?r>L z9+-FfpP9W7QSQtWsF-~WCqHE1ms9zP2^+!Sa_Kq6?uI%mjlF|H%M}5>JV-|Z&OAlW(pwHN24z1AmT!+PSeJ!$v3^9x|g!6XdKC}+*8Pm?dk zjx;>o&bXgWUMNd`o~4GD4I|8Cu(;I_AQIqwyc$N4o<{-!VKmuPQ)x`Ph@5jjF`{u= z5keM-11gR##|E?hR%~$SmXuhv^5mt`LAm3Nq?1a@yPgQVJl-g|GqGwz21%l3rOeG3^FsW4tHRD;*%L`<%29(y%vA(m?8xm;KNY|QF%}ZOnOm1 zrN;)oBXw&_SS)cW%N{Q74h+*m`45gUoIfN+WO^ixT^Mt zU(a{y@6pJGC6gxJ&KlpJdedS(XF6D=_YvHiTP^S0>H*W^BV(qZ3S7v9A)AsWmp+33 z!e;ucf`W(Gp!s?ya%Y%cIz#0D)Ly1k7!9;-e?t64aXKg0OP6{aBv30bOiT@cqg**nYj;WMOj zpB&vUL1mq|h;A*NVR8x7;q&2R@dMGwwXpZ>od=8U)-DXI*X+|Q0aV_Cv^VKcxbWJ`seVoa|Bo39cjac{%>$#seOR9Rwb0nm;tQ- zf?;l&LgG+2x&sYClbB%GbiWlQ@F|u{!)efhcMTNwe1B5xMx3tFNMct`#L%E2xF!|H z)_rPb1K>ON0TuIph(tVZA6`h}n7UnB#mL=ll&T&XesJw|PYBPW>LN;ntZploM1!2F zIU&4y#rA8iF|4`e)8S)Re6eIn_PVM1uD^FEc8X{qN6ZCA+Mln`4#1)6FsXihmU_~R z`1ke;Vwph29>14zMPa==`uN!+d$V)OxfDX;$_}R*5*!QIS6!JTn2z9y6>; z-4r@*m_4`$qAzzFn1(pjvlSz#X%aphluU_`xkhWIDMgUmUSjAx1!;cuP`$KXMGd9%F@t+t#}GSVHhtGoa>0-8WSS?4<8+?-)${IYm?&0SftHi~4#Fg~niFJw-BX3|Z`s27VR-UsSI7UBP{XdFw~88o zV;a@8A*pYlPm12{{Q2+Fc)16?&L&C%B0Z$QC8Y0|6_gRSr%7p+WK)IsfU-}I?7Au9 zzbDxTE|FAF7dHpC-!9o?%g|h50xCIb?aJ$Wgnm|-snebxY-mTnW3br00jx8>@Vh4m z^DXJE1!V?a5k?!(VmWJ~jK?b>X$WkVbE$b*!L!i4ciO*mffd{xXO&7lVo6f};S+Bq z`V;Q#y}udttwS)&Noh>^{1n41gN^*)%G$Zw+Ni|jozb=vPG94K*7}$j!Mny0ATRXb zl(7Jbbt$epDV!^(f5B6DX>!^t`SQoj{5k18tRXO5@?s(Fy6j$HSjYnau0N$BQTcE@ zCPwRE$S~$3TLNKinm>GKaJ_`Q62s0c;OwqNE)O|r6?1C3ascF#UYi+6!%J#LIz`Qn z2=@PcG!Sp6sdq=!w&qmxQT06JAq0r-y9%<)tv;VnV7;ArKmMVJv$w&>n$f8kvSan1 z!hMP@h6n+CslPh_s{NqOC1^JywkG+=7}6GK`1TD<!)Ep>z4y3<7C_B!3_U@;T7_ zyD%(n1)sH6h;NlYwHv)He%CV&*u__KQSW5%av6MluiO19p7q^ei?2BrcFSrB?96!s zI;*wz6#3p?KFyqiOy(fnrs-H6QhtAXM&I}C2A}_;Lef=`DRfC(0thFAdPPEW+UI?>i!qKZ^-F} z51=xBB%$etcI||x-@5j(kpiZ@kx+HXj2WlrBue4L-(ky5(_eq@Tmdzpz1chwVgWVky{01b#okx<=W7*E1 zHU(}{rr{8J0A*RhU@4Q4sqKY|EE91>hT;nn)-)qd52*`e<9ReZj@`k^y@?Wr)TdXB zLGaovl;KVlJZKO$+_KvQ6H<$nW8!k}rB7D&?v^Sr96*yDk8N~0wqvb$1z}Sba@saX zzcg2Fnk0^uu5Y4Ji2korq4e=Rk)feOLt;F9zkg4U|5SE#eB;hO*K|#mj(a6*!bAIh~QB zhcxjM=2d2m=bBS|O7_QJu+=~}#XruO=gJ2m9n2dv=t!#=y5uGe+o~431c;(?VC}Ss zO*Qs&gwBK`c9Zr{{HBr$S|0*L0JMs#i~S<~eZqrbWqF&`2-&5qR)CVqZ;~NDdK%Z6 z%5ox>IH`oG8cb3~_!MtK?s-_tz2C3|5~bBHyTRSLVK+vUE@MBP5#fhC%|S%eS1njP zPMpIo6$&|@rn&;BpfBTH5>b#ulWyb*W6nFv) z=}=EM>%GP@WyCHq?S|;`6!qh(*;tmKSO#%qh3Um*6NdqRGqQpi=}MJHrML4#12nqz ziEl~0Gtk3Wy}zcNzdq$zZMtvF}iS!B`RPT zfcWGk;2*oXb^Lkvh8(ZGDNwMvU;n2C{TGB@K>wXlP2nKDw^UQ>Gh_%Fq&TNDEGHQf zG=`vrKxJ~W-<0kxyYlW5;aDd)lrHnvo2@tWew3K9P~dr;Ms!9bs!y^QqKkHogBxPq zf0}~8tgMWp%>D;Cf?ew-t?9{RWw!cRQk9b4e|sO^^J*D%TBk$Fu>Wf@DG-#ImQ~rP zBkWQPDMLMmSPIgidW;aiDlJIX`E~DBt!(mPd{aDA<*vi@I@j*l<5me6akBmv3e2`T z)G(ow`&T1b;MS|3Vmb3hJqf+dWuA8raYf#$iOQ=yas9V6Q0leMfH&2g`}l3g_TJQK zKkkUfhjd!xQt9i{K2vVl@&$8fItrNJOL)dXQdaSML4wZbf($_ zeMkMfU3Afxwyg7Z@C4I-IWi08PeV^1-EIL^^L)dAj+OMIl&je+foc3MbL|*tIXAXn zV&cOou`eyMtBls2<$CQdD%cXHejig$uz&G{yf3t^-0M24oY)z&ZGD8&7z8y`smA1S0dU^JI@H zQ2R1dPu)V!%K1atq)@a7VEZUZ9d4@55V)8HLff+dO+JQx5z~Dk-^fUM^1p*yERJc0pzesq0jQ$bG6g_*ctv+0*5w#pN9(3w}cKAeghh zO<#iUnixxdU%mMHKNYE-(C5?VY=1+)OdTAT8yoov`Hm)-)pmGQqh6 zqapDULWB9`?2C#?XQdsQ?oKfc*h$kCbB1d|2-4Tq+(SCDh}3;|p3aVZ=_*4bWA>hz zMp|-nN%0P$s{76y%Yr5GVaR3WlOLf2pvLl0R2%yu<1Gfd~rJiLv+~t z!xKX^-46`CedGRbVs4h#R+U6%r3PF7W>UY8ep9+scNY@R6EciJo(*HXIlPy}a>UR; zSQ?U40`6#MpbNa&ek=rsl#a|`#bCj1%R}1|I34lG-&2a{Q#|!G~homVYy<^h$DPh-APYrTu zs8)tkJJc-gJ}O4zoL=*ZCzT+_^S^gy;h3eGp&hkasGDq>z)h;Tjy%pvSK^orwLWlr z{NQTQQ_8>^B>Dn(KJonJuzm6=$rL2^X4o6nw8*XG^4G}}|H2E#;gJJLF*nz3Lc$&O zQMK;($ zujWQRAxz@bS2Q?2$_%+hAN%+L22iDN+BP3Jx@*9-i$mgUNHmohPWk(PMHi zn}ktVD?~_8ZbDDQ3)0zuPUr?in8+f7@D))&)VgKr&MUOmCbEQ@F75c?sKPXWvA*2O zwe>Ljyb+x8>F&=8^xBilC1*F62d|yS>>aK+!yo?1D6FY`AnUo^_%~C@$3vbpBzR31 zrXQ7q1wJm<{Idk8d~6MVsv4i9h>*WL-F*#3r1li+F_Q|J+N(p}7%|0IxCe)wf=BN9 z8G@i8-Ltr$$Uv(d=6XEa0C8UKj^3#0vp*!;pu8;FkokI8?=aCP$;L@F4c84KZ{~{U zU>~Sn0;NCRiE9vMwfB15{10KFjlU;Ilv+2lGAF=NKUqgH4^cymX?d;<9H=d?l)QpZ z=GpH0QXiMK!+47Pf9>iEpCE(M{ZAUp_%mts!VEQ;aF1itJ2?!o2=%HXlQ}mZ{n--c z*H{3+u<2Y$(GcM(8oDCxl6$2J8e6{mqg7#m>P*)*PTFEbyC^rdSJYMo;$i*n4-JCG zlB>U{9uMH}*8Iu-CT72UKr|NFYcy9c6WR2~ zMQ(|cLA(-no@fXOGqRM;7Pk1zUx1Vla}7MKe>u;kwcx7`PkNU|uQ=3Q3mv$H6xAb4 zhMAn<-nB#^b6T;c$hLcC^!CpY=QonSoL&+N26|&gS7!uzf1k8xR+X(HTt+Rx+Hr+K*fP5CGwjlioM?Dn-G_kWYTm(+bTMH4YFIv|JZBptR;%g*#s2itbvaPkqIw3>qtCQ9gv1al=VUMS zN+7wUb2yfxwSU{gJA!ODS+RTuSJ&Q05EfTSWBi#ve)*gG&6L-p?|*dse7K!^Gxej} z2fJL=URmnCGgIG)o6+}5UY(7K59*}K&(C12$U{(tuyl*9*vuV|xsI$7rloaALCSa< z@s1xI1@eJIg2e6*s;dA*DUcJ97>kr0)g;Z4XSH!0V((f0Y7 zJWY|ANW5Q~a+y~_vSAJD8|3k}M0?=iQG^)a9s>f1Ou9S3$)}h1g&J^aK@)RQe{4j2 z)VXw>gf%;=gtBz<@~9JI&2EcOD{M-m3rI%dul8W8b-#2u!+vP%m434?iWoI=eXJu4 zY`!qlf1crt)i%W=+PQgHkd&t|f;4MnLs^fX7ar+SRXoZj;n>`L+&{S8zuWDFBqik5 zSulKw>P;qqU~kKX>}$^2YounF8!S56Py`&ue zMA`%{Zv_}>9`HHvZs)-#Bks-G`Vbmt(6YVBMLs5t_^_Vt0OBATkr3H$?F%L}I#WUN z8=FRTG+$X0_3xUMyM!LjGQ}~eh9$(Wn~u6_HdC-+VQ2F24&IMw( z!|x2}=4{X;tU+2b?`L1y5QwzJ<)*NLEO2-m`ISJ7S~C|;YiOgz1?0#VWP=mDlb4j( zSt-}6(MB=eqvNePG3jj@DevmK)N$$VddhOD7$nodQ*a@vLqu{qZExuq$xOR`*_oM8i9R!^1jSBsygZnSt3qjU)FxqZ1zsgTo|%YW zM82Y-!>*?hWkL}eBYe7e4GVTWRIj>vOxP=(?{;+Epkz5V$aHDHt(P{;(DlzJgLC5= zBo43xA(vId+EP?fYrE>*_4=6b6&~E0f27Pd+zm?Wy+oi31r&kumfHo=9;P}GJCyIq z92PiUzwntL`=iy*gO_t$!mk#b^}RO*@_0MLB6t9L?B(Kb!oO>s%SNO)~=rTGqi~aCaGfg2pJ;L9(s4O{EM;9*p;ayj@`G3 zUXcqw$;Ia6dgulW50@%5SvJ;EqJf6)kKQDggKq#b*zvJ4I-$TsHtO`2PRnmbN@4jY z^=+{|z8Ko2|GE_2rIUyE=ASyY^RIKC@sFztn`)RTb%<5?B_pF4lIY(MhkcD)ls5WP zrak#F!0R)8zxe`NPJ(DhjG-I>nk4rsM1e(y7#KiA+i9?ETHzm5sLGs!00%GD{j>Bv zS}o4)h`@yWv&!p3^0V6&FgdF5j1v%sp6@f;H%yy9sBz##NTpopo_6qjxBQiVnZT})=|8&|DK5lGeSv?a->9+ka>FuJN_B!4wU`n9e> zj!Vr@y-%fP_FkBNPOPfzl#a6g$WeF&apw(^4=+c5Hps|zZny1Rm3DS^01rCdV=4#5 z7r!+;5}()Jo(W^ zvda{$D;2ONb1p_06JvYhAmu!j5Xp$=du(xrBg%c#<Q&4MT_?}Z9B@^2O*!V5z2JAQn7CEF|H6Wp8CQbP4QGM66Hv2an=SW{ zg9!`1wa1Qlsd}xb`md;Z%PbsStU35k#p^;TRVg%RD;PEo8n@e7nWl;Jj=|S!g8bEd zJr<7nFCHeUQnE!4 zSsUZ}G4WPtJfrSmP0y7qlrW{zFZ*NC)?CW1Ys57{FWq$qj@$1X!c6H`OeT?19h1z^#&R@vsXl>8Y5&@)Kk=}Vrh-H8q0f*vj$e0 ztLj>U!rF}Ctrg7q;l_A%8e|^8mdsUp(VCw(-Z5|xIoK^vc-eACtse2IRcSHGCIh-e zBTR$Bem;zjhP&t{-)-wp?HyWOPa8n>UaMwEWL`~p#mf00UW{Dte&@L+>pCc*TbpL5 z&3B32zjR&Z)0mKUw~RJBA+meDFm&s#uE0|X%2C-o1OLsKYOG-kh%AH z^m3l-m?X_^&#Dc^`Q6Bk(4NVUU~{)wdD?#1$EsVQykV#X-!6{YlH&Erw`v@jq%)DN zLp24!dS<*f4Pxlhnp~3?(sXZE#>^$nSpx@wc@wS&uViGsKNmHj_AESe>4=i*WTVd8 z*~X}zmZ|5T?YA{QJUY1R!&6%7m>p>$&Ai>_3ArCkWmrBATsC&#<@fT47c&w*FJ$XP z5NXgU0htT)(bH*9`t)k0<^v=eg4#863z$Qz%!-jWq;@UpcnO{)e)(UfdREIsPOcGk zi)3hI0_e${^6(kw-a05Tkg zadVnQ2~=x|j$Xa$YYsr?yS3}nEZ9)MP*18bYA?E5Lm*{iL$&)xMOJkufz~ax(!ZgR z+mM|;eY!Wpz`v(zhOJ5eE<|tMYr$V_1#-wDux?R9K&iFYY$>wL@$t@i-FJ=hz|yX- z2P!AFSM`2Js0mF2CV%Wm@mep{PPXfvJOXh96=EQ|F^CtnWJf;CHwJZ_KY><4a&*z+ z;xOek(aU-OrA;z;Z49#9bE}tk1xU=?b$nON*=+J)PY-S>Htx}J4&2U^)kE%&{Y^a4 zU<*_Dt&a})CnxBo5dpSH#5 z8%h=qir7`fod&A1n#vXiDsjukmj<-A^&PtpmW#yVKU7N?t}FkRm^0KL3$53Ot{)5K zItR4FIyq`s2Njx@ZzRSR1fh<+b++k<8OEzY~y#+VHurqX3XAbV+P zPZ{6dJyG+ow8GvhDCR&c_F&N$TlOCe)5%)Er!NcP8o{u$FbGN-C*Vb1; z9gfC3o;0+G-*~#E3>3t>T#I+Tx#1o5-JZGNdA``U_r)=Y<2^O5xBJQa{qmxR0`2>B zEt2dA^|z#*fNAs>NI?2SHRrts4w^;p_|Yd6|Ju)fH}dwQZQQFy@=tqf(>%AAUfS39 zxv&5>jcY%oDXfz4zzf(~u@h(Oop{#h*>Eqa^Ii*I0W`b@0l0fjnX$hTkOmp|qPfCc z@1t+#z3rpxK`tOii`UDD+3_0sh81U5HYusF;dm2nD3lkH5GQK_Sem@Du@6-E@#0F= zQJtyp`=`KwhS*At#m3tjHK&L^)h^@m52fdHh{-?=D)y zQkD?_KF(L1>u&Qlj1}X`wHKtd7j?FkbOKH^C<;`YR{^%&EpU&y;d@~)f?gvw!@Q(d zCml?e1E3_xt|X{MJ=9FQSM#xri`l5z=Bt^$Ua3_srkND)*R7t^YnINJ@9OZ&BA3TQ z8k;&y+N{A=R``yW$x|IhUQ{*V9h*tubw^K)j-CFZQ=d`=@|BqTJFkVNFX z+MI3VWP}i!lO$3rC6#JULnWk8dNwCHOXZ}b(|z`OU%o$l{{uhG@i^|c<9ZwZG1@ti zx^M4q^`+FHOO``(8AENBq9qEj@ahcCb9)i4&U}Weh^@E)$^vM+2kd(cpgW^%|19r+ z&{Gv5JP)e>F>QkOEIvH7*x%-zW*v~$Z{gUUVb$``JpK9Q*Uv5+2`6jp`!l16v7vVM z@3_C3*F)r&r@z5wXvp?GCVbWJ@wrxLXEO50g3_bgL5H5FASS!awtK7!uYb{mA>63yVUVfE~i5Ir;?ja`GPkPwn?-*Y`)%i5TQjcjVopT;v^{4&(nP+q6rY_fC zUViprf<7|gHtPCl%qHvg9{BUQ^ylxadcW$;V)?TfZr*>+3JE<~km0XGGm%(mN_=zs zzW29XY{J=oAQ0k^gEQl<^pA#@c%pj zKM-{!J+Y4=Er=bxtB@jF$2p$L%cQvmSu_1VzsTt6fud|JKYh&mUmaDkinhphrpHF) ze!cMP_*i2tpX(dIh}Zfoy!X`?@8elZ^6i7AI}i8ol%w0F!(baDJy)4~hDwmQThQHF zE{Gzz8&#j~G4>Qxnqqt9cJC`zN8xE%qBq!!Du4E>MOa*<3h@1>gd?Imo)PW$DSu3B zermRaiRpVpWTIT~(A)Qs(i-0~z>9-~v7yVxK7O_h#oHUgMAV_llQzhxsmL9v+5F&i z6xOZWeaE|)ceZsL;#hb~fi>Et4)O3pgn@0p8Pd8--R}0Tgy?4{Gyx(fyegF)P#~jO z5~54kp#pnG$Xg5EX}^!D2Er9b?mv}O&c>|*^^-yxLYM~f)m_zJo;NF>dz%ythsK0F zRZc0JTe~llv?)qLf0Db=F&8sLxqsO_PoIG9R=C-@nZzr4vi0A24;Zl2=Fz2VMIG!a z2ej8^(l+RKv{o$vz)d6W_^DARt4~7xF23v`-Rs(`&4|C@S6*F=eNZ%ieiv+T!N!G2 ztabW6eI`*IL!yQ%o~exKf)_n5b%wdFA6&qY9?%@*k_A!QY*ou})r+x1d{0o5J|L@A zV?s??RZJL?Q%3_t!$K*IVlEqg7?AxT9M%Q`+|!QuBh}|bW>l?k7{4Qm0Kp}_fr%K% zR65!19C9!)xU6EKDEi;YW67TZ-sOCdH!G1atm>2{XEqt7m}Dn6FRb%e5cHLD!YyHe zU!zwSZ?5LIdh+sJnGXqj>Q*3Xy7wDZ{Bz4~t&>Xi=WVPZ3WHFauVxJ!XFw8L z?8lI7x=65{XDuTh(^$KZwAlLNzckwz^R@hH_S?wo$2zaAKUL#jt_nl0Y-5SyRvjS< z7kRVQNT&N>_l%2`01^MKpxJxpLC5BucU<55 zSPlR;_G|1NE)h;}ocdD-91E6#|rGzzmsXgR0XjtCnMbP47|cPSDKu8k8Ca^}&oO|y!x$YhKk z_l8I)6|T+7A=}wy$Kgxd)MII4H@XUFDB|usD2jRujgLBoLjMK; zqg=ry7(h^gbJ6?8hJ5=^o#kr=lXqAucLcVUvjP^Rwo&;uf7L%mPZkL?50d*G^Q^kq>aW&h=>AK%!22i1FNN7Hw-wTJO6@5FZbwb_2`dT`r zVB_-Dc)G(H`t`vt`&o<1!&A3N}jJ4Ee3kn1u1%+`6{@0lV;0>}<@{NcCaRX$YGxT|lO zn)++M5A3xoP|lA$@GKBGMpI1!(wUi zPB?n2i|0^7W$(pPn!}~!%AW?B0(ke;^~U6n9V#*er~!ea9q|klTWlRuzZNfZxU;f; zY_G#r%k3s;%q|S&4=r%dwoZ38ultC47fg%OL#nx?K&O(?d%!I0*}RLvf#bn9PJ@CF z3}$EE02D_WJ$pe$?CO9X(qhd^Xlb>^LipgzA3WpKv8$*6IvHmDNa=;_$_o`|Zw(dg zJhOI=R%7$ihI`k*4<&DE;z$optB-7Sg-d@FnasOAp45$VSOWzMd&LNR!BlvNn!ZVL zg2t4l2%l{$mqF;Ym zwD#K@>cJa_(@z-hw@A6fD*L7!D0)0$pz@8fY#(WBG*f1kY&b{GerDZUaJ*y2OiAj! z%fBcl`I-8;D^kud6pIEA_#+kw?Z#|K6;ZIS`lh6kSg#1Prv?rdd>S4-Nl)#Xc{4v( zzlE=4#V*UY{t~~R!5ljLUzm6f5B-Uxj3sij>N97@G}mPG;`Jf2iww;h|Gn3r@9I${ z{u=N2r8<1*1?kY<Dsu0^T;9YR<~kA8O_dtTM-r0~T9e;rVgzb-vq_;(sxw0CyH=;kqe zI)sD=8vya{+Aek5Scj_<;ZLEBG=+57j>)e3kYE(dJ#lj7T{9K63sj;7L*=Rbmt!Z? zm098Aq7F9;sGl>#c5lyT!)fz9cxd0Dg~bZu|4>1Wcbm07#=82mw6nl{NIeiO2`k=zJl4W2MKlSFuNZ~H|HX8;l!^9 zTPgvA?;wVM%{zb60W)Ck%HJ*w6JI?xZ;O51yxuZzDsOnD3gcJVh zuXJJnM_TKAFmQniEWP}fh9Y2Y@soH+I14zG1=)#%PS`>{ofBaYnB$1DGe^Y@2UqPz zylw_woK$Lz0XGXYd7Q5T6>P-zvAW&Pt=8{B23uh_x0*87!}a+CE7?IjkdT1imD#$n z&u;M76}ed#N6y+H>E_sj8D!ZqfDcyW(y>h1Xp)YnKToQkuCxK-p++PV4F&dYs0WHkUUB0~(ibeDcrpU=7K8OwOa59rJ5ZN`kx1t>15Ry%4>DM zMnDX|-UQ=|wbq3RXEzR8hiE@(yHMrn+kSfoowvi)Rc~-iZ`5n2PQS?8+u`5Dcek7( z_-|-bcxf7r?sjaI^BtA=%~bh&N*%n7OTDgH7H4gZ1W3cWKi2|b-3Od#ZPNOzs%{mG zt!}>|#IyuL@>Y1(M*Nr&DvwtFh~z_m9naG|&o2RP*|AmlT`I%H%1Ph!=yZg#7+}pX z4dlVB0f}!2v?U(puPf~os*$)jAuv_%=o72~m(mg!5Pzn95Gu=)nWQTv#4D%VaeH}N zIv4xrELFq!1-QYLUQj)FssORwpk5w3g_xCTzQJ%NK%YyP3vKcno?ARQ5$=?}n*i+l zc*k^UeBYzP;U0ZQ!omwLq_kSpxnpfeU)mmEMA?-=qBmr9-+j z&5>h@DK2&4BJx&r_=2#Pt+&IK^9fvUx506@7bfn9*%qJnC}3WPHS36^u`AeiwUGjg z7l2Be9<&UGQtM7fh4J^cm>jy7eFq?${FoEu7w-zNzfN9s9a&>xSO3<|k<6$M`s+L3>Cx5FFpf*`>5mG@9*Ubw z%Hp*U?JlKnMSO>!F@QW>>=~erH-SbWW8fEKjM+Q~X)ibdYNr#_vGCxnq=qv&gUZH@ zz=3|$;Vpp95s&#pAouRs{-QRLBomV+Q`Eu5yy#WiTNr?CTgf*0@P^hdC`g?szMI5I%gopr_EHg zyCG9&x47P}&O)F+lE zXOgenO0Ou?)c+A@|HCFeG2DzKtCgOeTrT@ZVH zWc$Xccq*6Bs;XRJH;GTre=l1g;g;)1M}(6jex)nHCS3H&c0(u{en5%eEb>CgY^ z#?Dk&JiO1D_q092?h{ieXjni&+PYRgne>}>(7!$eIUNe3b&6v zpRwP}Bu*hRP6p$3w9H;d7oyB|cdHoof#Q;>;CH8krrsg&GF=x~FJ< zCnx>BK84bfVVM=>$0RDgmK98O6&%ZS*tr{wmxF~$$DmFkx#C_(cK$M+Wj2wdLk`Q4 zQyB*_Z`$&tjvsI~b-C}WKWtXLo)jN0rx^7U9+TXrKb37J&Dbyf)9IN~Sr;PHR=EH) z-ZHyO8b9!7O7RZ9G9a<^Kto`sl!&TGYG=p5{>C|;^V_t$Q+XYI7_rohM$Kt~*yOiSA$R`|23rd_)9eYK&KrOo$TG?U-xnXwc-c;Sg3Vyf%o!3ulz zA*>?-?-}KBIx|-jnkFUV-=(yn>+8S^o~m{CrZw208-jpK(GS~}UPs3I>$5INtk~A{ z`AzH4VRDFFkmwHh0E~q!d-ev`e z=Mjn{DlBoLTve56+d#@-)A#b(Oq$GXZOQhn!F^Q8s7Mh(b>QdjqnQf*?{)?~7<>W- zaMfsBc#jtVFkiotE1gmzfhzy#%*Q=~ngVke1W;C0$qd6P{J5@d8fPE(ASQwk!kd6} z?BDerJ1KSbK-6pPDx{ubk48x(c1-j{SjXY$viT6vb`a3(YIg>b6>tFhQMbV#cz1{* zIR}PfgPFBK4vIzlUJkK+=Q&Q$Ae#3cTepq4dt>R)pc%#NU@7wPcN=;Fa9s-Wv)<@$ z=y~xMzb^GyDfT)la(X(ok9AgK51oqr<6U}<{{~+7^ql2Ds-CwHcc3U>F!9T%=`Pm3 zv@Y92eQLsL8h=h&{6!zotD*%?dhW>aWg|Omm6N&<;r@C%*qv%_qj8r^`%adk3k1WW zeDvuV%MLpB|n~w59Q9HYa9&X9rl&ah>ds5}-l?K~jFU=i6sRz)PM< zu2Y`{^YEWefTk`pW7aP^A{=F2cqm{FudmN2jno8|AkICbu8Dnz=KZJ4di-&jwk$L8 z#W2M$ns5fD6_L^}l?{sb@(|H@^mPbOR*T5Sm(FX9oT;fX{&DENTc2h(JcKPf3BK*5 zZr8IV=IQB4q*a%q)fdX2>2EJ6R42+SYs_<8K&~RhcFtu+gq@-8fdBLK@#@POMEe4v z3dCSznJk3QGiV!fNAy;?06=PN8Utf^PA1SvSU7d36 zNYA9yIT&9&}GdE5I*`>t54tZ{@OFOE>!XqRJxmU)6dy*l=xz zG`c>PRnTN>5HwPvCs*$jigu(8aKjZX)qw=Tsneqer#}H?RtzUc>EYSN?D_Jbz)X6` zcDBw;tdc|D=l4^8>-z{uUbfxT;JYU(AFPhMUB~;|2;zfZD8@c0Yb${NZldtt6nLvNf`awi}q=c-0r zJ3FuY&aeG@MX&7|Kh|Q2J2p+y(zp0%^G4D$){#J@QX#uDRs;O9T11A4y-h8{Qt6dAKHEY)wEI_X{NO?x;G**gV{F>5hHTdD8x4&79 zqrc{Abh-2+#W=2U;i9ctJt80&LlGeS!h_>bk>g6%UWI0EO%K1ejC-=}iQh>3`%wmd zSH&^BZ*xMz7Oa?R$8@A|q47T0u_DS(kt0L9zXeze0eUe>Dkw^A?6A$1@d?4y=X{GV zv}-f-pZm@v7{lj%;)e%S|D|0$ql9WG$3zI957>UhGm?w_87LS9(DpMW5z@!bF9qd?mB zcL-Kb7PKdGfvAysnJzI`m{D+HB1u)_)A0|#XLmpOC3N+0UYz3m7hk12^Quy#yu&{z zu?T5z(Ws1ir122tK_#AW_Bk7_?98Tz#}4hkymAreC5C~vtI{v&;sCqtjsbTJAn2I- z9L2C$D}7GKrO{zJ;a%&_XthZe!?=c=u3q=`Xw&~Pf^>T?5*>at^YsS5@<->l&jb5! zwlIYW?2NsF0N)?sJtirtx$-P>Afgpcd-T$% zkcZBiFv+EE{qC;*ch$i#wQwF(O*>u4XGADSlD#u`y8uck(j0p}D}6J$R=SFql^0qo zEN6dPc9@ebwayj&P}HNeaa&WFI*V#6wf)iMarRr=$}zgdYEDHeX&2C)=fuVr<@~7aZGRJ zD~n#ADW>(~gR}$(U1@AN(C{}!*E_!wlqe^cwdTBg>|kE;Ci5;NM2g<-gu8cXFPiAA zbDa9_*PFATkD2IC0N7VKRvNTet4{24cbBnh-)DN&a;!}7H?&;!zf-TKtI41cq?^l1 zZs{H#$7j)=`mYj*gOj%e?p+O$yHxQkyucXuDL@QKy7s@M4I5v{k6L!WH_0FL2wMlsc4HO?zYUqUtDP=6 zmZ{)JmpPzo-*5T%qX>^D&tG%EoEiz$dR6%%?%&;udmiO`*?3G2v>V;ZKeG~=`u0u7 z8`GN;tD~fe7*hpyV>Lu58u82FM8|Y;@=3$ z+?%@gqNnEDTxhb|Ptd*yj@^6D06E#MyfHFl@r46nk17-@bL_2t-Ga;Lq3=9CyIp?x zdMth+^~2vUq(@3LR4Q%y1HtC@UiE#k=MPy-8k}2y`ZNEOzwgg64V&crgr}I0ZFbwA zctmzwuq#gYy^-q^yc(n4ZBjwHDzfU6Ez%MVZ{64lQo!4fg`q@xW*gKJuczrQ&Qt=-1 zeQWe~^{W@rZJL;)Ui5JsxfF{&T#R)h7+nUk1YbZ+-mL&v8#uXI0GBFZ2%=6sSBK zu_+>rU*;eQEFiML0wSjU2$9({JRfKMd*Lg|@2k~EqT2mC!ye}>u}_XIJ-fWT_JrTC zd6O@Ht$|PKKgZUh{o8Y{I5^}Bl7`(wLr>BKcc?hNEM1&Lm-M4cC(&ig>GB^|Fu61)Z?czEm@7x^GbMi~$G)3p2zZ$h!CxzoL|TMH1yj&S59P zZ=j|h11(5|QS!DI0Gmc2fdoDL{Wx?@XpW2d!+~3Hpt;OUWwy{91%sc3m_!^^=OC_t zm|THf%b!0wu9_Rp5#{4CzseI2Ix&1nM{oYPAaG}G%}SIL!-WJLI3qC*6&GQgi)YNB zuWZ4{7}1RpY$`Rk@5%+4q@w+Z3hBNJ_~mE?iSxI^>0l=46C--j&OX*#OqL7Q6EWdq z{~ufTJ&q->!yM?yOPMGo-M_GJ*Tw%yauf>zMprlh!6b$r+~u%9#y&Db2*5=%Rz+#M zF=_%EO(`>-GVq(itTaW$h9w42H5p=LjSSbxBUwcC9(trR{;9;dBFG!+E z$8x|t0HfuFo!h_)tT<7lqfiQx$Hi#fR{0l$G8w@?|9Mme5AWg%sAx!MV&+6}!NKI} zuMtOmSeR9^s0R;Px&Y$XBHL8VQ6g-v|9mSEBM|8tCre9SK`h?Z+sHTAzr|H*!-^^GIr*jx|0c^~P%)-_m0fDmcA(%|-gUo|B)@Z(E}3$;R8d2S{93jY z-D=u5atp;5_D*r*H zXHO*{8l2x`S6~pPWV zroHcnw=FX(&F5>ga26F{Lo-0k`20YYlV!d8=>?VlzwU-pT_hqMaMrJWdQwKAH4zw1 zVbly4!{Z{+MM{3=W_LcO@h*Z=93XYs?p)E8VH7an4_4x?9nvxTyXImD}>pHc{}w>8h- z)_rz+-L!ayVtbb>y^rebdAe2<>_~U*$o5XP(m`o<3)N_Q7w2>o|GaI}aIEBhtwQ3p zn}gS76w2c#aoXj@ISv<{bJDX86ui@Va5@~+mxw;+3Z(snWG;iJIsmDzi%rGW{Hu3F zJufDd>o$vDhLIVrvWhC-&plP>l%|5>6&$&VKyljfh!B;DSO9~+eE2v@m&`y@a}IA7 z+Bh)=KG{L*F2@f*&bZu-P3jb;rNc&AY$MeE6z9!f0u~+uKcM7nT|h<8@wn2&oGXm2tax`hJ%#xWC2X*d;V1 zmWi+!M{XxHh=Bl7*J#UD1qyfo0<`IWBO6 zhRSu|?wlF&v2hi}s-JHFG`_m>o!erzz0WQ=9IDcbdMu|ca z_>w99t%I-_ARaIL&|T*QYY=Xy}JJ&&J$dtfv527OIQ0w@gN~1wihh-~Vh2nh#-qvAnK@D9KS_ z%Q3iLGuT+e_zx7AX^aYyg{eBx4XHqWu>+^u&K7;FC+y7? zngM{(HD*_B^fKL@-$G#NMlyvKf&MJrN4u})1Xp)<&)jx`qrUO#{YSB3 z)Yz3d01AkIjTvg92^XbQXUmRCyuT#<{@7{GsM6n2RjaYG@|OW_(E|JUA`!Olfww@b z-r$KICBq)KwJ-(siDV%eK=f49J+{TM+XtLleCp$%NzkV~IU*DVf~rwlZosF$p`HuLxWM3IUR60k=Cs}!^i)y8TTZE#J> z&Pc>#j6zEnFh#(55#>#F{W;Ow&3I65hTZSz0iCkm&-ze;_ zSnNM?`~rD|RvS8$e%1N`9#VX?fY$JX%Ufj&>*5rlYr?;}oc@c&{-DhKVIdxdjU7PD zI}d#j-Zw8lJagdjtf=a&`Y^MAhuIjZM=@q5guv+-Z1J;3Oc6S`8GhPQ`W(*K3Jq)! zMf}N)J)+PKuHp6w&UytK!GU<|RAojl2?t?whnI%hL=u3I1tK@c&yOd)len z-&2u`o_Fy2DAhH;5AzYd54+!b!MEn)uQcEWuF-=9+ZejAP%DxjCi%MUO5VHkHG*qVXHg{k_vlECA=aE zofv_KkWmd}L*NU5jCuZ#ECl@#i02?mWH*GO-N?CGFMSRGuJd0Z036I4zX_{$*;)VsxR%Y)17X5Y>FOs1Qvsd51WRN8BV%EkhPh6_}nb_-s#pnE(K2 zJ0w7cU#7)aMm_X7JspkPI^uzLq&~QO7xL6YI2s2F@z_E;fTxLAGy@$(1ziVRb&Jps zm6wao?$($#a74Ej;dJ~T8~DI6$19P2JR#i?=rU`aS8yMG>F>J_e}P-J8QD@h1eK3%u0VhkKhWt1wuLQ(KRUi4kCVQy-;DyB~ii}+s2EqfW+?#1lQB{VT zH!sPlPOf&zcV`eBk*E9VbM_9slty>PEHGg}DNs@`hYaw#GEm|O_QxZF&M1T!vbyGI z^J%gY@P(kEdYmWoF!=8C7nfvOy~LytqvoZq6Z%1q(tJCC^;2~|CZB$ts3_{``Os?s zQW}%wHWyx0n(e-u_GV*g^s?~mY%XUne0YxelSo{tv2nF@)*fcfWW1Rc2}kcQo(C?TSiNqQ%vbHs z6mp+)C@zWl{GZXzBUXyr^G#;OYk1fJ%*t{2lH~x;;AOcv8JEBn%HXzOhPdEXf04S7 zxY62Y4Xpe&{PLkB**aTE3Q%i{+jw}aQa2l4n~q4ob%I;5HUsPXRr7NOaG0-M$WgUc zxYaAM9~Rsvt(9J6!v|2fDo}|yTgmDcB;K(5NKI82|HoSH3un4CdQa9m3Ck;v%v5Gn z;+Hceh-Qnmil<0andEF2gN$kG_*lX?<|uuCbEvB%2EyVx^XGI#b~ zQTDKb-&KwXU*l%hTC)Mj5tC**6001)CXvt?TbFmDKjVoVTN<(uq~c;P9IFD>zM zHGCa^ZOurQo)t!I#a0~l64zn^`(W=|7+q}>ZLltXKq^X>(?UcJWZ9fwc4jODHL5~ zu9aLs?rnxzO~>r{kAq1b*N5r`ph9C^i#X|QqHyb&x$z6CJzc7Gp*9R5${UH?N;brb zGXWY}x`_st4!y)Qo#-Vzqni%PX-NWZIMsBNIGzgLlo5>ONq}E4q6zSWhc(V+)tXbI zc#g_v*9K;?zGCXQP)Pf~O4{DF2xB3@D0s1|p?$3RF+YKZA1sLbBWJ&i)@5>;TVz$c zmi++n>3PvzvbGswJ|oF>P}EJQ^Xejw?mdSrI^P*#5!(F@%Hd0-qu76>tCvj(mCh@N z?AN<2({#n26~$g(pP`vgx>P$28?oOfOuyRT#tvv)oj#R7lqpt9Q1{#mYbD;o=0pve zNW92E_-zKNUVEI8J*agNs6K}oq$81DMNdtK*UUsasj$bv)i3onp8yyN9w9P%^!Xk- zDk)RB2E9k4iUYb^k&(8{Zc(xP@V(f2QLumq4L*W1oN}8W3 zv>?(H_(ET-QAkgr{(yjn^+c?}D6ZYr&j z@tw_5HysA%=o{sWmP-+~DfV4}NSCF^QC}w8}S?^dgOdegI%msOi##beY$F4D%*i(PXau z8H<Z!lGuotjvkekjvhqGE=c3+F{4ADSA2WSeWqwy z7d;0YcJ)padij-5ME#|Gx}m^-AC z9t##pHNVOR*1(RTQl!D(ulllcK+KqQ!#Cs(_y0%% zE1k7B3Un01yZCw{D;blxG3e4KCoe;^D_OdYYWnOF2>Dd#oW!tICfj?Ty_bOi!|k9C zu00)Kzh}n#`uGgJ&=aLt?EhA1VwHMwI3&69;Hmzyir}MXHV?U0!$n~#;kJewAdu>J zT~QCGiK<$dUPj$hu-WD!Q&=L2eyjUeSqy7{0|n*{mE~K89z8ZI$Qi5`*BvNH4>|>? zsY6xZ|4OXZR6V*tyh?Xc`bmkad(JA)EB`>f9$*%ki8;G_A%&1Sb!#zd(;Rz7_hVA3yk ztwIcu7oT^yt5r^QEDUl--#_4}6&L(IiWh(cj9>L!_Ex|!hXX!XxO-D=FL>-{^pPV0 z&_|XgkFu}M%!J-?NI6kK{~mHc&+?st-a)g&zy7;8FLR1@(EWxyjlUcI9FVfATF>Nr ziEc)~6gD&HExEC4^^!5#cESw+Ep7=aWV}SYK^BQ3wZE{Ql|@>FgP8*{QKlMR4E-S> zgYb>&ZX^|8^>nAnnJrm>zlIE2u*G(Alw@zzIipdxgyY!`N*C8`7lM}GN6sf1F~*uo z?dLpqKKls`Tu3b6G5ZDCqu_BoQ)lv1^x&w~WOS3kGLFbV;@P zp!A*n?;J9qf9#Z3ol_T&Vny7u7!cK_9{mMDhjx-3+?ezI=<`bYyT!9VHkST=%_!U_ zXsJRKj`a8b@yu1~WP?r}wp({^{>2l)M8fuQ{V%l`M-f|CsF|$)jqSjW7{1;){u&H> zYE2bEo=dN}y~iZry>F)}|L5pa#&U~wF22>0&OABSQZd=)O0WR@1lG=fTkS)$9F|hkr^7r4-d~XKDE)oDvxs(3_Q{6DlWA4x(@E&hhayN; z`f*w0^I);(#LIH44Eg8uD_mQp`7T>=@al4r$>`0Gk#>3JW?Ff6KkGC~_uC%qzEby# z)_VUknzZZst^4#_Xe3MR{RSv9$?{vHi^+mGJl#eR9I`jJh+&+Qg=(3=pOgFy#2u=SwO{D2jK`l+h z8IW~`MI}A*qkw%qc^NS@J5D}YRah&uPj^nck85^ zrc}87CPYo|!7zC=80eW2xF|fG#K78o!tJ+m?_) zwXRd8kviZh_yKhbXYuf!9Q@A2B$0^wm-sPoes8yvM2Be{Q~=&Ps`L5=@jYe`rzAC} zBUSf8B_H#0E+|!XSPTK?c?``Yu;D_VjW{QyQUf_M0OvU$EpZOuFz#QwwC1HA-@&kF zw(&XA3Dkm1A%n0HKw4G_(wUyYd6tn>+IgpPQk85prE&qhU+il0CZ~HWi8WBwU6x_s zpMF!Xis>hr56`Ih>Q}hM%u;7n3b??HK_$|iMp0vj2{t`yyl15YBfAZ2p6O|X(Hws< z$bP$Uel{nXZ~*mu?3xwtmHewXy3N|)&KQHnZPv7{B9;fpt{Ek<&1JOp4ieNHDd>Y$ zeG}Il+wh&FjMDc9krobOuWmv3EGi~Rq4hRZZSbAjOCCwX(4%qW`cqoIZ$$2Q1*FwB zc*0Qkw{tT>8{tS77Nc10js=`$k#XywBwp$H8X%4X#m$&nyd68-@`YcF-0$dDACVUf zDUno0>h}K}w6hf=`|dx%Z%R_x;B`5`jf*^;bbe`GZspehoHqGwYs2#rzzBTK55#Z* zH-L7=jJb%$76dD`7SSY189=C~O!bw1lv?DGJ|_|qKn+T*6{npd_y4TRkc9%I;*4;Q zM=)SJs^#aMy?rEL2f&D>WVT+n8(X987`bf4rmMm{Uifh&@4N)JNAXHy!-_P4o~!g7 z_foHU%9+7W3(ryyw^;;ptg`C=2fP7|oCc-{jpq7dd`oS3-$ywt39?~Fmdd;N%d-4w z!|S0x6QieZZvBs4@Hu zUJ_Ym`*Iw>FcxUSc){eTs8&l;EMY`&Kw(r9I^5+-kti|-xG9GMoB?1mGYJhXzh!q5 z{?2{A^0o$}Eg!J+V?a_F{!ECw9&`8`&}#Nne|`X!`ofh}btDiFWjfSGh~!+8d6~y~ zL07E1l74&ud9jYdFVPTb%1CA(df0bJ&kh9KQ8^9b z2Lb%Slhw`uB@&cX<2#((hw84miPd=Oy7;u zlxcWi9+sB7Uw*n?=$#am7D(~mjbox^fdJX7x+Cv-*E0BVEXFxvCgT$GtLR}mOK8&+ z`R#8-{E%7_TjE?r_n3W8J0Yl6+V5r33KZ6TX$Kcxfh*t{YiaCrf~;N z0SEDBUai;w^m&N&B4kb%LvTA$e}=*$GF;hE102-61NLAL#PDdI`|yf4>Api(ymqQ~0Jm50K%B(0$7R3V$doUqm;HUw%YOA=VE@qh zw#E@X7651?XgW7$tqfJ%{E)F0FoOXo{~(uhvJ1Eof{ZHzRy4#IbZqKgp~rJ-U5242wvnespxwH>As)>@cEP0y zf`h-ALiwF24>g~JS+9Yu!2YF~S)G1(f?risEU;IW5yzR+=N_?IIAXK!Fn|g@Y62Wx zlF}Fe0c)B!i4lp)cwRf+i?@$_Obg|DE8v$!W9V|Mpc4xVcas-lnF|p&!i0HqZvP3k zJq)W3z`*aq*|ki$ZBu?Os=4X7`uQQHN@d0+1W^6v$Yme5!`}p=ErI~_!2TWf6{q^m z-h}pdL!GF9yr?D4Cdt~I2x__vGYBY$M3a~)6cb1r@(jNH&>SQxDaYnH^8BsJWoJY} zM?otaz~Gwyf;7buTr{oSMvs$*XXw&IZ4J}Cfkgo?9OjIGYUIS*WzsF91{Z8hW(69saM<{X{~9Ns3`gD4B(^s)hMml@Nx&g;l&r+%diSd? zw~_pGx07-bj6-j7k%5eM1hBUS>CcP?l4wyJ1}O14gU1laU)xDSNWmBA$k&IM&ye3= z0c?SRGfj-6U}hnz2h%^?;gyQ3@DOy_kj>u@&^%%o8Ki8dM_uM*hRt~NIo_J$KyJJ> zO0N;(Vaaw^P#5O{&XdvY?F<*T7&?aL&T&asJQkX8 z2>Jw=g>hpLJo&LqwFW%}N)v6&Gzx2#J6? zld!1CN6Fg=DmNp2B-fM-4|hg7q$0!cSw`Ey%QII<@3T-JGraTud&Lwyo_Z7-k05898_s>9_l|-8foj8y0iyA^&7kmMu#JK!K*tKTh9d zB>3KzUy>E6T_2VGRrdtn@Z?>AP~m}+*KLvXr~#y0DpzbLygqAh%H1y&mtUXBFTl1Y@ox(&e8IV<4n&mc~w7+3x}Dd`Z|C_8bR zm$RL-2X!8c%qwi-FM%gy8OJ#F@nIUgfe--#e*S!PBMl7a{YoZf^j}6v;(jONQ`;`1 zcw@g_@qZ4u!=@L zN$as$j>U?5sCSp>0$cb|I;#?C+%7!uz1 zPJK@CJPrXA7mZ5f{~uTP{?GIu@Q?qs^DsL&A7_~JG3T?*Sq@E(p_*et<&==LIpoZo zLaF9ZDb$EkRGU+hO3syP4waB76(v4}K2Z_1xoef5`WOFDL@ty7?P= z;lN=zN9FBc==dGIl01hMi3Tjm0&WOBOe5`lK~*I>C2RqZ;w6W4e8{416iBx>NVjLy&MC{1HU+- zBcS=G!o`vr-P8{*x~;}zdEM0$bNSj}W5q&F$D+b%qfdVId6b_4S3RNnryyPZ8nVx!DM@LF@^b)9LCjPHOO0OkT zd2>9dF{t29kb}(y_EW!*8Vl{$pNr4-NG_f@q6a0xb$Zm&$te|Ml>$q<>yno|6zqSO zA{bH?A1e@g&Z@laW7292qm`YsxLP+Y%2#EL&7y5MYg1LNad-9izHFms=v7*&O*Bn z52zNm;`cVS{M<>LzxV6SwG)NB_3_Y~-&_0_zO;D75P}IzpSe|yKm#^= z&&q$;IsG2ru)o+{g2z!B+=2iWZe+vs zSaftM0jj9V;oHwj7waa#^&2^Yag_9*%iM>DY_!36RS3A7ixAw6V7NTRoY|g#j{IC{ zQ~7iyVSoJx!96Cn*cZ{+7B#-8BjH&7su2^hjoKY6iqK;FNYQa&`Ppl|SShH? z1z<=LO^`)}S=G*+z$!Qy-7SGxLTKU~)q&r+!vqYrhwy&0^7uL~S@VV<0p{#vyZ^f_ zZ+9Ic#-JJc6AC8lr5+&%>~Hlql_e=o<=qr}s#~;vJZwfmE64`Sw_qb%L$T=^jChvb z!U%SF21vf}xZAcKB49pEZ#tj6N9cc6ss@CKzB;?w?k&|*@ibgGsK~DoD9RZg1|_WJ zgf`C0jCb0rF-gW&xUs513(B(%ha1cPgwpWHr_I!K_mgeHMb)MfP&`>MrZGdRx6@8C zhv_Iau%CKIGom(by3HFV94Wc@c~99F7cB<>k{?QxNDekPO>f_;1Ot?3VvEnR$ya@w z)gJSXx6;#Wbx&ca<&p;`nWc!I>{D*~b9)%5<9iJd6D^0&zeN7^}Bt$e1KWRz9jqe&&bmLl*tb5N)dmRyf-D&J>rub!vS(ZqF5h9agcPCL`e6{wiVH7B-_Yo z3Ddv3HGy^lTOs7A4-~@dcj1ZQyiV6~Ziwg|7+<*$APcashSzP8koZ>g>4gk@@y{np zHqTF>m>`+Wq}^z%$)McP%SdQmDotxT7UPGa!vXJjv-da0nI&3sFP*@^4=qePSYlgJX;p zWLE%$Tn;V$PO0Zi%E2;(D>LrbuLp-r7#$Ca-8v%7I^dLd%lDmsErZLVpC0nU#&bt>M7k^`a1Us0X9xTgHbBS02V( zLc0HG7fsC!Wo3k6QzR|YNdk99A8*3oaV+K=HE~4^HZ9|1r_tJmnYu6|8s8{ z1Q{&znF|?`?#VjFnwN-A1Ubmiq>S#Cssx`EOyl}QuV)@Gr9l81c$n?zCllSuMtL~~ zs*)rmbGxcWk13I&)ksHM{r!>s;w_`G4_}?SGz!u!1xIA6%TGzbnCdMh($#|=8*jr@ z0oV5PNE*x)$uXO;B}7oAA9@U(ELXs>!-nArgLbzpCp@_bcrZcnAz?>0bH_Ajx0Stn zVCGoAedyr8kx)2J9RM+HtY~A{_Hx2=pF?~VP<3iG)YC;C=|(Gou}Cc*&S9^1?KC_b z4q(MWiv-LcD)Pc0Z*$M}A@e{kB?-yodl7{8%cS4{Q5wWtBAq|MN5cErvDov_(W%nV z9NU!-V6R!xQoC3!l6rxy>1Kt1t2mvjXlqH$Fs^!CS&t9Cl$(**l1^--9VP+B zGZ2;3YDJ$3@761(=LP>0Ac=Gvhkjn9j^`TkjI-n$8KyHf5;|-du6v3ADhwwN3R~73+o^{s{k}3fadAmi+8Q81(9Ae+@5~4 zwQk_t?03rNX++!}9{go)pbW62gnmtlb-wd7p`n>%m4>TkgBfNK8HNU&z%#T;-2;?2 zS3MN2DxUvzv<s*xJE{(tio6JBAo54Dy&%#6w&sQ@k$ROriJ;VF8NEKo=lP<&# zp5pXDcyLOC@_!myrV=%VE!PbOnjt`AhQ4c$u#*x$fUo-qIpRKc43_?P9f{U)<-sf1xo#A7c`;K%f3cceGQ{8O+EpsnT_3 zYc%$bVCfZ^m5O?RRJ)C##r4E$8%Y!2z!zZ$g|3G9_a#&*`QKEsVqFbDgU%kmb{4D} z@rg}y_oV-+uKjuB$a%NCQ9CO()H)Onrvjo_nyVzdWxSZLLmo*5+6yzZBQEjr0J5rd zp#|WI%^Me;u@Yx)TJP@|Zi9R?Rk?;<6ALje$ zu#ikYr(NR20~$!7hrLx3V45K~PCFFG27p4VI4RGsg#whT-oZ-91YvrGJb_pd&{{9e z$aPI62@HeHYYI7P-d0t%xW$h=A5&qtx6SIjt}ZX|#_JW>c)srq`BHB=*lV^%=dU3> zxE0m)V4~}VMOaip2JWS|~1)E+dnW-^uyMF@WnouCP5Z1M4Wt#T~IIQ&D0`{v- zOuMR4l4xT#UthYlgwp~?oT?sBn@qjPXcIs_Mv8Nz_imjUayydsU2FIgiH6EQ8{BN^ z1F4!`IDA4Dauw7GOp#z z_tTE`9>4I?dBv~hSntgid(G$-D@{OEbm-HP`gvQLkYlJPr~`JA=_$`1!2XyD(2I+#0amHgz|lL zAj?c!Nfzyp>&+}BLHPz6q7S&9vLv)0km|Ix4t$UDTIdLFz8k0EWkAv|cpmaG%90oz zRBO-wYUuz&aeOv3DTb!boU>!n9^5@(in0+&1u2j8G6-XwZH~!yhDoN4G|$`|2JdqZ z^FE}MykCP=P2)MqC<_{abkGlcYl*9Ck=a8?rHiDJWw7awWD8{b*7(dp;&#)ft``M{ zH7*)~#A9r&G$B00WRKHD3{Ne^fW@NL+i`Y~kv;-@7b@?!*eoiDM6TnSd#xpG1ii?- zTp7Pt<{b}q_8Br3%IiefTCgC=Gpm z^B=L@1G`oTOs$Ls#jw8Z^sBAwBS@5R6sAGoh&<@&es%t zK%!68$%dsCJH29_0Yb&SLdNUD zj;)V4nfM>Aa*#HHZ(k`Rp1ru zmK47;P?I;Liqw3neQK#D_8_;1rel|R(cdp+F&8;{H30QSYvw|ZV6!N%w!IwYgcbGf$JyPS=XNXWC%zyxGs#Qj`Y zSN0m;b!p$wZv^(&u_s%0p+zl6jdkgc6cV!B*YG(Bw-Ty}B^$rC)evzO-IsUa?)y07 z-|@F?6Pjd!5nBASc?OEUuwjU_z_(n@rrtw3gwmYt0BwN%qaQgarFsHIQ~J3NYMrXE)e3gDUL-JzeMSeO_b})5XCPI@d3(j!i>95oFC*`cNjcTA#)Q3n zRHb^vZo4k$#1%-4Z3kV^BuXb~34}Ly>cueF0*p*$mhJgDwA8Te^#fqdI#*3WwsvNe zDvRxx16W+%{Q?4$F7G*2naxfux)%c>#h#EwZh92;-aD|dX}TzN*4n-(qtAaThr9?V zW%hQOL1g`at5YxdQ7;F>%&voa&FfrU$Rs^(ufaI!OfpTeAj674$FZMSvdK7#&UVVe zf$N4B3gONS5DIAKGj#HgX|QQguOu-_jWq1<9GaO+Omm7FGl8+_?N$?c7IDuRLy33<;O{alv78~ z?xtI=^&~lXniJ>{Qo6aF#i?sG7XGOv3C}>yrjmDqip<}3%0gYNc={~_pn8_E-bLXb zm>aWoGLJNd4c3U{cgs0FEQY9V0@DWxik9gvzx&Z_U29r6_-unu@C1(8YdFTnrWWcH z^zLCecMb|H7J-2(i02rsZ>}F>GXrk!@Z5o=NOiaW%(cjQU)< z&rrIDe$Zl!Q$0c)KGwc_knBRdcj@IlyA^3^r+@e3`siBYeCCW^rQz&c_AW^T%2`*j z{;p_^5@{Z`BGoQsND|c-mtYnIj!1*8Rc8j?izE5=FlYBZ$gj=+@z7L*_OM5vNBK>{ zcC=`D%Asd6SN6O+EWmOtu(m?=3XgoL<1Ky4VEa~QYKTM<5ej0H^i!LY)&>DCTRU<5 zGK$>D2yx5;NGXBH(uToI@RQcw&-*T0B!1_ybJ z?L^QQ4&++wM@DB1i2l~n-5`l5!&nL)C?rtCET&6r^AF5l{>RG#5}!gGn%t&G?x@fs zf4hDhT#pRYR6tmLoWGihkc?Sln9wvTSHWFLt#^-^bH`pa?Ba#;*!0!I1iY#1IiJA| zc7|Q|qvxl8KbJ6Pm;*T!r%y7EwagO}HguU1j{0lST^kUy}Yh>Ai{WJw^mRHGO-u{cHK#<4hoimVa!ZWP$M1L@0-l z@kolNh9-UIQ~i{xy7zKq>E0YQw}Geb>RT3rR48sIW1m5m9&5fPZFNLIzxaKy%B}m0 zDZ?VoLuMK+9dn9LIWMgK4l44Wc=o(rM_$Ca&CphA_iF~SAgMv>^uqe}a;dmM+6|P% zLQbaj7E~=AiD$#EoPyVKU_yx&h&?E)WXJOo{+;19A*ozFc_FD3RRt@hhKR!W7p<8{ z;rF~)d_D`drMw+ybs&v5l*e?^LuE z%n(2&+R=ZWl)jWeE7MIOUrNNze-n==Z}54>>trc*Le&G^Ema0C zcl65O{5_xOZh3mIemNWTE=<;AEEw#{q%WwP^YbAEXS9U_F zmPZM#kK*2hHvYK5^GOZCK~Jtfa_`^}Bn^b#pd=(!@TzgsvrmiQjLn2(kAbC(bN4iV ztxp?4^leTEmv%>#NcqNx4W4|)rX$RPK3_hn(4(8N{#576L7pxO5`U+(^%jD%j0u%# ziH)CyqNpq{aRm$BgT=nvO7d6~AiTRpa1`|l?>hc34|4w^9IQ^NTy+Zpt537}dCNvC zN>INZh4YRkY|wRfJ)cDRfl5`q2S;NY{I3XcK>p{-iQ7d1BLWj}^Yqf#MLL}KrDr}P z&nLQx0OYyPthe_RCy&_Xy4E0cBd9vb$ay~f%qyNuA>HHL`Mn1unVjxAY?h^l3pyY_ z)Pky$$WqL8iLMihYQ0p5;KN zkvx2nKb%(mjcTWeXYc-x8tT``RCx4CJUm8~BBA zyP`}-o=W@9fH zIf>+Dg$)4xgV`OVpB`9bwCL;|SGFFTHJ?(mEr(BPpYG;GD0LCSX$ucB_mi3h zfBGPHv#+WZnE>z>G8{*tr3=5uUeWM!67UWmtS5|~yJ>Tjp~t3ds8I_3yV2TYKyl?% zk>w9K;*MeXQrGdB|t>2MZi{MZE6a|5KL_bYam}My%ti=iOqp!4xXOA;H5#i zznWVc=3#$0heWqA2@y7zpaHI^XIH%C}e;K%_Z zcdo!%%Ix0`?nf~VJW7Sq8oWW;9{K*SX_a=Z0Kj}<{Dfd*$ko zb=8E|Y5!uyk_llHe@S8NhCOUQ2V}D2!C#tm9Y^4^4d`_7h}V8v7S+Z==r->LpgP3*|m~38ph5 zf}k=AQ)}`keo~h$-*cd-TX|{?MuvYR#G1R+F`7}+F{j5-Ei%jJ?~TVHeGW_XHn5yC zRIifCt_-il;LPv1e&L8|kReh$)Ay`jw)NdLuoysv5(tMqWJhwI?JjXnC^AV#V>Q#YmH=RdrdOb<%po9OZ$}w!6o8C{;Sr#e!w`ckW{~sIk!PEI zQqu1=kCi_YD80wgIxbZHcZT`nWG+DYk-1G~TmOYvuC^k?yvEF_(eF}6Vv9*kI{uI9 z>?dvF1%F3U^I0&dcECecJTQp2!u|9LnlcxY_W-d-x<7PaHSR%eknHYS@?|saM&yia zLKc`dLq0Np<5unm>B-*5PqM){g5`{+pV>2g7FbAPdsk+j0=+-$J91kqQw_qhQCehv zJ!duwG2zYA0j!g){#CaWbxnFit-$B<*|T`Wo%48y*+&qa$Wj|Q`A;uB~j4 zM0(NX22eBq>$EKJ!jqM7f>E>zScdy^jSAT-C|?zP^+GdPpXqZAgxu_fCc*%T5s>^E z>~facTAp8@WAEdQU7rRNskNA;D)@LgQv(;)EgAqi#Q z7}qQ@V*tjb45=!%z&#s$(osb{QejN3=nPpZjr1A+*{Mq5MO+y4lP*{WMBFM0r(#k1DMijq#s6u z(SKUxQ1S|CPXZ1-iAw9!>WS0r%J<$Iqt(}Zb1g^$Ij?dc=EKrD-kJHd?uEKw>}xwM z1E+K~ky3djj(oCicEU0uECZatmYAW7c~O;7x9|W##)OXUW(q8lMBsE~D;mTKv|UHX z4$#n{L8H5jVVEveaFUE4mdACo1?B+pRr0|k<~{|&*=ddpny$}tw|00()HOe>{1M$U zbR!A1$P^M%GWf#@;!ERAFY0?p@zXX!0km3)Q#vS}V`x$<*iA!6a0Jk< z;i^nn9$j{PR;ZhMt&S-ibDOUdk`S1!zCe~<_t+@vF*&0f!P*(a~5OqmY8NYDVp@o5A0}}NYY^WZlH)mSh>S75y$)UvX)1_ zb0HJyPmSrGCP$cht@`@X?x8iyJ{EPQEzE|tHg9bY4l z>!VWm=)xN`M1im=&xO9^$;t6_%WJoI338q&vwVeyUf6K1FV8-ttn9YbaE*#*1qmIe z!j22>x9(83i;x)x@oTf;ycD1|*ISDK`YR$!^)%umORv!7UQijo1mNL6L8Tx$e-4~+ z67oymE`fA*$K^P?N45Kjlpg_+XFvYpJ0e_*_#Pa!O80N^mN(%-@LbUGy*yh@!i)=# zX2Rd-$wLQ36y~%o)4@reu3rcyyWwz7eCzI1m*mDm{oJQ#aX2}nB4bSd|xdx@3=uxS?CXroF*L> zNi*>s0IALzsu{_xf#ee8`3jnJ*06SsKVS-)3p&nEM*eN6z<0{($Q5+5r$kZK&ClQ0iS+Iq0{t7*YLq+y}?Y-1UL;PipPh zZU^fULhiz=6oQ`{9n}&GA%kPy(Gy*KWG*us-}K=|l;n!Y$6~)GhW7He(c{a+j&=1y zqQztue2$);gy@|T3@bhEV0^^w6wLF~NoR4nz~6uH4GqT^8|(C+_dAqE z5Wz1;Bj4zl%M&w2Kp&b+uV2wV{oBwD9v(KSQ}OjM zOxWIzlrn!c1p@OoRRHe-bo?SG@uVH1GYB8afvMx53M76bkTgKceN-#9#vB)`(*)>} zqjdZukZ8=TjL#2=d4j}fEq*b`FfvGJBPC)z#5({LhfkHvD!qoyo z!MnzSb!L|hAih{D5_hL(iHU!|7aGVe=}jv5OfHT0v|!QkDe@wg1h5_l|DMCAtWHrS zKp#-WdqBmA`?nfA4YcWu_(w~j7SM|BHuLFj?1vUvRI(tcYSICAU!yH2qe%v%pKHdO&Ev$lGcTDN*%7+@Cu z=)AIf0Na0FV3Lkk2%?|5*Rx~7aC}`Wu%*ypTH003*nd-iq)>WVKHM~>D}f-fNS7R< z!IYOXwS^!6M{F_~U&m`eP`#ai^8V_JD%Dyj$r91~FT`*9fjBN=>07cXwSs-mQ-y;aPdfbDrZap= zM!E!aV-ofjEL%oj0$@uH0WG&Bfmbgj%L$jA>RP{m+LSJ4_!A@-{si*sItpg;yGzvE z7jMQ>vJQ117#FJp(+bJs6#-inA=OjIBMcHBTt9oE#H}ZFR>eyURaj*vzX65I zhbs(ZdmOs%KKtbBFJj%PWFkewOBtLtE`>WPnAWLfG%W6I7MyCwO(g|?v{7)Xn(MM> zLw`ZxS1|AoT|`2ZLFwtr`&};M7sKl$0e7I9tyEXMcV7`d)P_K-1V6;RO1)C`;PzXH zJFQDx20H5eNb#A|xq0N>Ah}^KtYE2O=XdPD6DS2{8?4wU=aDMb3@sm4TncbpeXFe& zcq`&lw=?gZwUQ{k-944AetRq9Lt+?m`=P{k$~~9!-ZJ-niw-7Qu)FLcc3=1Ry{EPaCM?d*T9D1%r(QFyVSBCFo@*5<|6w&$%=Pv{G0%1`%w zGS`h=$*8R9_8n*)p9!$B{7FT~`+j;UnLKWLDUoUN-1pqXa`ISV>r?NClP@n$+<7@E z9IqU7km412RT~grnUzSRL4EwD?sZLh%TAJIUwglsxFkFLIdGu%5~BW~RfOgEnE&hB z58r;!oSN`|eMWDh!*c548GGFJSkt?=uOCj<{+q#xKrck6rggug+x;9JeZTuvcE(Zm zy}j*+l1m>zX5~OeMhRorme~*4-;J=ZteBUKsng9Ce zOV;}p7r9kgD+r}lixLESus*LZti+*p&%dT* ze+%B-ERkdExUhOt^anM{d@oM--o+@Io8|#XSbg|-hTdJy*eF0 zQX#(+Ht(OMq|C{bT>hlUeXUN*QGK*>1Yc-D`Ugsf2?#3y5*EDqo}Mg}v{@<=$IIyJ}Fl-jPPsi>Fp^~i&bBcjDzxF z?eu$Oru7tGUA0$A$)T2HAxp8<+HQGz=wJnmzy2v1Yoy%FKOl60;&rH|aF+ z`rfHsD;x|*WRUkNM$o{~N*)9%RLYCVK`OdVjN0jwRpql#Kc8GWHFW>_NSa_Z@79gU zC-x!r=Y+SAr_7Fu4Sr+Xv)J<2M#wpVcGC)lGryEJNcx-XQphewlBH5(tCQmN8X-bt z(41_QZukg1V%Zj84w*JwiTPuyM4-bJ8mVdd@_kH4jDv~1H&tuvUEroH^h&Cg-U6|F zfBK+`4WfC^3zJeJeWa!!clz@I-{`TIc+(Z#tKPX*1~}z;Zv0D`%*$aBmEBu>jm(Sg z3v3#nCX+_eP_hTXMQew8;9*)$oF;)jvt^sJaI?h*d4-!Jb%j=Y)2S7QE*ur|Rq7wV zRR`wM3Hpu&0y z^VRZTK_M5JI(~_sLsoH?lWo2 zA@_Eh9<>7@cn@a77C$n_1VjxCx=YHS8-!=Cz75X71b);}nqSIgTf`0P9(LsnX+1tC z?olxst^eXmBy{p+^zs4;Ydk|mm`{awX(=atsEO~~EC^V=9|^J4tN0qM+i$pPXOnr~ z?REa`M^bv@cdq*i9^824tn;oNx$kr&W!%&E%*n}s`SGd`WS7)%cHY$RrcG7Ui{ux3 zJRKA?ZMXY>yhoa!O?778$w1+t56^TX9iYNRyQ%OhiOtL-~13)6C;Z|#{kK_Gp(!y*8x2ithEt3pQnRr_o zoKt7HntX!z@ifv8-&lr{QG9Yc0053zYOZ)#&Fu^m|Vx7>*>46FVqRc#X_&M7^24+X~x5|%u%t20&ku} z905mbR0#wSu}cM+=T;HC=;8%5wa5og`3I_K$Zi@8PvFZCB9-B~fdcqb5>!2gfuxtH zs3(IwCA{dcW-d(VudvB9E|<8A$|^}uCGHgi0LOH;4GvHMR2g)r4AdsWfZQqp1-!uo zC4ev{hbRYmJ*OJ`HLyL=x$;8n0UK3Ns2kA^T#8k48!#9|0<`qoRYw)VEJCE7i_#5K zLxhty(pOI}nz{KmOECJPJ*`}JWU^X$mvg;-pDg1_e z^)BEF%LDnyvKCs2!UF=kAo&8iLrwi=)kkfqG@;sIe;E ze^`mc0&^gAOn=`NF>tB0vN(0G`q4V4XG@v+4SGlbvM zq;EmhrtG!%vAD5|ToD!1EM$88wfIY4Q;%4*^msg5AHq zyL95FznTi`jad1P;k4}SY5(&NjqVZ{i+pz2-cBa(F3qGbZ%BjX5U}&E1}4jSLbL^LC-{PyCp%Su+AQ0uB@FoBh#La!EVhZ zI*++CWGPh~D|>rbU^5}xcSAd=-{n1IpC19bnFEd^RM2p2kU)fPB}bgghcQ9G;2b&W z)DLYmrCu%DIKRC~Hhr?hmxR}M1b%S%1^j4+ZQv_?$cM9GlQ%htJ=1lv%)L@}=&o^G zE(A>i)N4Xy&QZwq;_M6=rgzIpe2o1ouO`FzV^=A;Z7_U|3@U}&D{sWv&2dQ$mcN$N zuay>Ca3t_PQFLpt^`L>5^2~=_Jt^-KpWFG8QK(GocZXFRS*l-b<$+f zXYfzk<8SF-RgomEYbu%hrkul2Xy9r2Oh~ecy}^5OaZ_zDN_xZ%g(K^m^<7Z?wfCGw z^PW&#=38Xr=77a0uF%;Pcp3t@Vb=|BDU#Wcc`gew0#X(OC;A`bPS2j8 z>4&L<>S$2*I%Z$h;)8<3b0PW0IH?#^k;(wV+gxjLv&>%Tg-`;&htrd98%|$ zZ>;{%@-}bd(=>6JDsXH#B-)GH_o^;7JLxeSB1h`eX?#&IGj;}sCO`{^k7H6AEce@) z0t7R8RPyyW%~Ou7Q%Sjwr@eTSnBHFCkh6yS75^BAW(jHYh^%Ye*l*agt>3M;vkxLn zPX9w7+XyJ+5o{ydpbZR2P>|nQrs`C%GD)N;ewT-3Lo9VMhP**8hV_^pCWXL@D51x& zXr2+*%RWU!ctS@KPh2;MGd`P`eafl+lyhUif$^kb@#M0pBZWc9Ro9biJ|{CP^;@%P z1r;X)ju_6aoeX0Mh4?1oI?p0YKn{$IU#tvECq?T{{5F}_*oh^m#1Sh`6m!IG#l-N5 zqXnj79w>Qy{hj8dk6FKdT7&G=FsA9FyWe>v>tTk^ZyF}tSL-*M&zc0aoPsRIq%7!( zY_tomVEHdV0mvF+nTMnCq$03^jZHdM1jwlhX; zb+PCt_djUN9LP2d#+Y7HE47g*iph8Hv+h+Dk{Pk>bkh1x!(3xRZyOg^rjrc7z*c9m zSxN52>0GfnAVL?t%}54_b_#0~z)?+lzN?gGJ!LRFB9K+UhAYE;2Ih;563*`O*K>S1DZbrSXz znzI8Qvod~?FuZZvEl)+Bu%9vqj)f=VToYJ;Ml?zYHdiIo{oE0UW78e~=WK?7E*o$|*Fm|XHNsYqo5&4cc z^1G3^E6DPCzr5=vxD!v&aa(qkud_+x2S11&dNtsnF>N~*gE%w-&!P!#3-f!lg9QOW z04umJCQmX3NN1y0Ss^XKh}9U(90}phBgLqg?@XV^S=bB!@FF3_eq-oNJesnLSm7~e zOeGE8Z5=`L90j6}RrBaY&NDH$?Mw9@6rBeEWm>)2kgA0l1VTZs5-|UVsErh98bKv> z}MrQXI@P)Gz?j;HKKPaeg61>xC|I zO9X{Z=CdF{B&bUBBZ8+#;Ji|=z!18WA$fEN9ldldW-l`CkLwu-b0~+%=?6jA00#=+ zdjNRCCS7t8mmI0x8U&w}2P0^<^8mlawVSRW-?O^tDH~9hE~=6R_F&l7lAx*-YPcA4 zr6eqimBD+2_WM&1>A@@|!H%spep9@$#|gec*$rL*OLVoB39lno*DzN{;O?{=4U{50 zvcYC=gODNcnDKwK+xHQ{Z~}CiiW&MLj%UGR*I>q2=s}=zGluV3FCj7SdP-iQ3r>5B zh02J5YcAF44ju8KH($=P7wCl98OEGUxt?r>KK(#bbP>(QHYQ+EKWUgI5(GRHa7mqs z>-x{W1OC^(qhbx#Kw1oe6$;v;JQYuiI7*Yije!4Gq$>fSiIE^RUFQfT^mzh&GEcDL zCi1Tykfx5IsW)auHs<8%3L3(*P{%5WxiQ()i3Xr_Q(Hc?{+rMNVa|)GyPgP7y4Rh2CfHbFYTfh^xl0r5K;X zj5A>t-2WKeyf;v7E?6Z7Tt&4}t9C#H$=S|^kgh=u*r4HyJ|y7bw{$*0w?T7{{jXAi z{YNeJ8pVdAuyf1ch2>kUis0WY)YH?%CSx>L7qRjY1YZ-_j1jP4T_rG+BuCD6QRxN) zhlnJwLZ662LTyE4n^)Z9G2Z=<4@eM;8f;X%zYH142JIi|e#r!noCZ)b@fJRsxPsk7 zLc(2l0=h=w;9o)&TLjEMUA}#56*PN?Wg4p`1boY>38SHAkE3YRW1P4lt4wqZ6ZX7G z;F7+*zH8UnRuMHguq6Qe{mb{SNsa%D06;@o>xwF+_Nc9Zv1=hMyh`NfJzFI7Tz}e4 zW+Mv9`4QeLf`BalMST^}TF=AOP}vs<71l984goX12DJsi{M{l7ywo4zb`O`W5Lzpd zf))=HDT0{xw>=~$hQUR(4VwE;wpQgStB7bKqn4ibfQEjO5208B^DMzs64Zy@Z)lM* zx1Z<<0^#_9Aod{w8~J$zBX;LI!T`4p@nZOLlXJBOJMI zLHQZmKQ=wenibI&WL-wD`An}gq|cGiS4rw~2yFT;!fw0RPYc3o%&@h)pYW$*Z$)#8 z0-Pi%&$W_|bKeTSlzuoC@K9L@r(hx4z1+19bRVt($;Di$NPTJ$-u1`Gp=Apbu~4s2 z*!8hn$20}D9D}*Mc5`A|jK~FlT5o%HXRs+zCMVNLh=x}3Aqtd)b+OS!HPAeB{^v&^ zmKS6Pr~`IfFdq`!mg0P#=}cS)$uq|PP>S?N#Jt36BnGO(i@J zje~NO^>M^wqca^M*_Ti|s+cz{9{H(6>!19^LRZE>#9~0fBYdkP)_32S!`DF<0DyM_ zZ>`2`j==4)74P*QIY3%-KQd0H(SJsWlfOGPc> zqJ(4lKT~;!KPg0+f-7f4StbLfzI(SD);HD(y{26YE-fUXe zHTbJXjx;nfiY*dq33?)T=a0P)`ISP`i0Ko91`-h#p*}hqHfwO`p_y?HPyt`+TZ0B2fMKNHQI1<^~D- zI7WJIaXdjCI~rPU$27MR)%-fD`%nCbV8pM&4<&qdraaEt9|~lSo_sZD_X^k}7J62` zJ-I-*<*1u^3^3{@Xv6|FwF2T4L5y0Y&BK&(h=gJyCZZ35pq71RB8Tc)FMSpa8!?Kj z`%<&|6uulP=@*ksM!epvpQ^mfl0-?tHgJtN?$n46IcrXOy7CT@XbfaNy#<-3jYKcDfjRdd!#&eo)6aF3G+ z^u)%?t&L)cEer%f(!ttnV1$k40WllU4q^q7Pj(jlQcF|u@o(F=&(nIffUl!P(|^CO zJ=1y&PeZ7k5c^@;Q?Uv=mIe?cAOv}wb zG+u=MQtJN2T5md*gs9(#SSyFTxHT#zv^et&q9gZ1|L_mvD?gsa_M&y$R~~}-HZ9UF z|G69j9D9iBSO(4WPd^Sr{Okg+=bhhRR){$(Zc+qdl*ixOo7O`?GXxB*25NjBQ-pe& z|NHM2smr2L4j=RH^-IXx;*j@OCT@?|i5ErZ^|c}hU6tajS1R;06?qlZ_c+4ZeKG*S7Ue|Nl8=#cezqoZJQXsjF!vY zDYH-^gPdL6+Kl3rX50aKdc9q)hMFCXAt=|O;%q^<>i-i0lfB5|QKdyw+Nn#ML=eSL z-mzUn7L;^9#PJ-z7Bx`%x&Ub?Q$l7zXsLd&FK-^0Y4V+BStR%6Bxxq=eH=P}%=m?@ z3Xd$q)(=$J#*JrWT==>2ktk{p!iXshDQ{4jevbn7o^yrG2C;QgE0We?#($G!6DQh< zrc|P&`RRIrx4n+XJG0w}08;9=?%aVQ_=VY!4)ct!t}E?=jyEfB8$MQL;9=zdQmV&W z>y@ULG7bh@7H9gornOYW6jFLsk#pB~^*^|EZBC-)%}x>~Pp0wTa1QSOF?F9oO?}_n@K1UO zfrQ>6^eVmAgpMK|K|l<>hzf{wC57IlC<+lU!nv2Uwj$skRZ5C!LltF^EJt|Rb1|g zsXRq4I03H?vrZ%+bk1t7k&z2WUa+Sln>L>r&KTE`bDCcNIb6F|hBwkU_MB9gEA7Eo z(v!J#{gr9n=)uybf&CESo3-j6rZu+N<)`m)#h@G#1BFy1pXD+-y&>dgl z9d4pntTC_?mnT_l6r8g3*yxkC*xV%z$1n%akmA51gBicPTEwJ?Xec0_DqPfW1JL^Et zR7JxQlj&>vsjPRy`#YY(^d(NI6&G4CD#4K3Xfz7%?WZb5h=u&Ht zNKr_x-Eaj$n{9(bUC7n*eWvnChX=~(z|x%$hR65QK!Pmlcm8Rw(qyu=7gc(@3yM4q zC1n9~@yg9}`zFK<${raBAD|apc!~Y5-SyGK<{FB>>Yc1w<9V5*>b5?VnqNc=yOs zhxFx6oGP#WASfr=Kx3Y!=t+h@EJ7&IUFD}{i)LFJE#nnDFFPV?pX#_?;vM#zRhX+i zA5#Y(d-HB!&e);3)CI~rC2!U+tBOTeTtdDprf{k+0=aC6%xI=r9~p{_mG?9F#g+SN z-_{HnuI(1<eb{2@mlhh1K)M8Y#A@(D?GJeS&G$CeJ-;?*ui! zrXS6QlJpwmicZcGsM66_OXB;|wTlF~kI}(F&r7ond$^Ul9a$os9*td}X$XSo$b%d6 zz*b+=b?gGpElf$$*$sI~{RS zyLcF1dw8|$e8{DvCyIzX-j%b$lL1~%njy~dmu6IB9&iHgtAGr+C>=5a739B)@ocml1!to$rSVvPDsj(=*$7?GD)VCm&M3%SPsK z`|G3H+F5)@DM;A^H6fmoUO!Vsdd$zfbWD&*@7#imkHq+w+{>?>pEyXFzAg~v%pR;wj}~v;j+CADGCCV|;XLln&Liuj z>KM(y>0drw_C&4MhFmwJQKpdq-f}f4uP7cRs^&|A^OsWG=czKMh!{jqe{oRjoV3g^ zv&b!pC&ifs7anDR)k;aIcANpvyAcZQE^9m$;Q4M`X|`IIlRLHrcmjxlT(<5HwVK(Q zSmQpcO;!0=PLFCk6Ryu`W@T-{P(dVO^&ugIF^QtTX9O~g!^CHT68YmuVS_zS8}o0r$x74~c+2bhS{wSwMx?O5`$e_LWur; z*&)M(SKSv^oO@M%x##hWlH{S0P|GFZ-CAYwY-D%-r#mI%w135IC+ z;=v10=KQ|-f=vcFkyCl6?EL}ta>~Us+9Q?5=YLPX3ecM;|Ko`b1$x?ZOmY9NzDuqY zwuYq;D}}Vl4Gf@J3=xcbaQ>I2u(nRae%;MD5?`b0!|R70qI@4VrkRGm@5ut0i7h=r zIKtEMW*^?F-alj3#VTuf-Tj~fGx~y*0!g^T4t<|w^LMxYDm*9sr z6u>ne{JdVC_Ts_0?+-G#yT}rTomeA;`GW-i2LWpq?CT&gIm^#4nu4lxe|Xd%s3Hr| zZ)G>v#|`DAcd1;Otw{NwN*BmLq#MHvJ&^i%M9u<-*HXq{LAJh#hqIX$oX{dpPM;|B z{pVbYXPw5OeE9!RzKr&4aYurSKMn3dq12-=^u9yGeTRpoxn#A@bU{s5!8$bRAqLgU zsqK;br4-!)j$jw$2-Vr=d_o$}xDr9Ui~pp$hZ!OoEmFGj+Ir#gki5s6hs zHXtieZLq8(G|)FEeIds~g(9|t&FdOWmu!WDK)h9y6YN|YU?5sl*(g_CcMqax%X;^m zpVimL|1t>>{^ znnXQ{jv!^n0Xc_^soY&4Sv;%;QsZhe5E?KL?kr^ZLbur1p~%^xSmPdNE0RLb4x52; zo7Cs;dkomMK9?LV7JdiOqB*881|*FgFIYRA^|HAynd8q!ngYPVdKf^rMC4NS9_6Iv zLYF}RZ`Fk}ZU`4qs@*b_J5C=JQy>;gvX9M)s~U*z8Hj-bLLgwHSyd!*FiDV_9GY{U z=799)$r>AMo9jNmH%Nj46#XH}o99K&HsC+@fg5&2LHl6+1D&M@J45XwhOeP_E)Ap) z4|SFjH2Q3u`|M(D-+woNma+V4HfDV`7Ol*B^XCl#&l}SZM!y$g@0M(^MekvG0Ao0Z zI()A){CgIeD(cdVC12!RLPmlMLwUH4=Dc>~O%dhsTTtUm1^@=)D4s{*1(aw1Cgtj% zJZn5UV~Q#!+MWpr&0vLGGP_ZgIULSZeh#qx&!7d;sxEP~K0jZMDOh~*ZjQfWrCS9O zJ_Ju2$`SgKJO4i=Po(QH7N41l=T4*LI59+c86?-_a`0IMBn(82eef9vml3rM<=27SEV?W{MMx;;0sfNJX48H64ofh6tqv}h8UgP`iz8(gxZM}ofd_v zDITc3{`UU$EVI9*E2|_^Jfb+#9jHPaVk=10loj}nxaztK9_AH3>n?iFBaz{8U|dS` zuoI_tZAQyUr{!=GTCockL$RKS6a)trTqwKE`{Pankwo05BfOr0mVM3AMzht}WaT-y z1z*wp5F(xqK7Ke~&hE(JtI*L7<5G!pJE8_Z;Uo$+MUm~3 z1uWb>(p8_E^Z5v!^He0NNxHk9{-V;CEC4vVr&Ym~Mk@v49vn5!Ny8$Pv?n)x^VEmD zSoECuO)s~@9qyHR!c)-Kxo=dx@2S6hQy!X`=l#~aI}d!$Q+z>TtLm-bJx_CsXBI!+ zrtZAOhhg^VV`<}8v_81&NO{T%@egZz=!E&Ky8C7u6vkUz2Bh5L4BVhMtlz70{kEO> zqcJG0J7IZvB5bo|Po2__OY-FdWg;`Nq zN^zaa_uI|(6U{Ua24ZMAfje@1xg=+LP6C}G?pBn!BOfzWuB=VIWX_FE7LGAjG_XbW zhXoAYLZM2*x2i7v5BP&nIb|Ku`M?{5C;>X$u)O< znE5;7$NnJ1QT*sRPm8WGq-J{i1AlyZcj>4B2A`=k{b3?TB}o+;Ir>3Ki7dnhtlMF0 zSJ|jWXMO0c< z!UBP_ih-XMZ{6|yD3~z6@b}}Y)Nw%N)31A>n_a9<}tnf#Ngk?p|fWNwEq>aa2VRK;K%(qwRyo#Z~y(1@8M2uGQ7cUNQ9hW zu$s6H;D$@|%`w4M->jD`2Abmi$(1%2-bdjbw_*hZ=y-9-?*@P_ zt%Kc1aV9pE*}xqDb;lJXp2yu6(z$x&XpwpI;=TBf#*^brUCF6uw!) z8`XtdOn6dvoe|DaPv1Oyo_%x?##y;6k$sz&Fi1slU64red;_Hbt&Loo{&b;!iIUx> zyI%(&o&mMlOLw)GP6p;l+=}Xqj4oy@R3a6*>v=3VcR34DFBDI3>e^Iao1{9@cuPcD zV^iPZNP5shRj(RTDeBESkooUHm#LUDD!T5cf-8Uj4aSM4Q&Id?5p_SmW!N9TXCLi< z{+{QPD9xq3jwg-CDY;tVW(=FdDj7|^x->j-KE1F!@M!LME(8>5-^W^(f+lv$8gu3h{-QDOO-V?Gnmr+wo z`pfrRhQHo3H0-Q8Y0MwhYq)sKDQY}C>XJP-%J=8jpAFGYQOv-oy7Qo2X+syCZ(T~Ir(7woK zWhoGORG1;K+1P*8;V75v0$BnJ38W*=IJU=aZR%~G#S%J=1WrWkw_rv#q(@fWt|c}K ziD`^%9*Yn@iAjpPZ3zCgb#kq|&F+k;Ow#crAaYVHDk3Q*!tcztv(DF&j^9p-%@E8> z6-+XsaBFXEsZ(!!_;jFlD||31>vY^PtL?N0Te8QKvznaqZvVVxZiA~%%ug!4@CI$v zgE;S&85psZAaWM{>}yAIa@NXP?(LnETDwoL{3zJ(@JdRl{ut7En^tx}IGr?%;*QnwGbifk9{UrHXH z@{ULbW3W|GgG6!BJ|c$fh0kfDXQ>PcwR}sFZ<JWJZN%9}KATvMMC$P8 zsnzd}+c|fv{TrDsgiC z`NCSk!}K`$!D4AE3R*Q@;aQoIYrV6{C?pFd=Gf|{`iq9ZXh+NqcVnSQz&vdUt+p{c zat(PRyxqw8pA!Y(zx0GwxqZ~JQLowj4;ypp1IEXv?93{+CX zkwzrLU?#o^S4EQ)!g`6SJ_>P1zC=@Rskc0NEPlTq0u`=0PXKFLBedzGH_5-{VZ3pf z?X=lTv{R4H_VZ(PBU#*i;M16xTcRyf-(EMBXrVt||1U*qjXk@u-;i7ZX`}xd$Z?D& zOB&->kp^tK%}eb|70lzO>>uCo_usVBuSEW>w5>Ub_4EFaDj0?%XfDOp+wx0~g}K2I z4ZXYuu4o+z2j1AYmxlTD_Fgp1+d(RTj~Lr;@Tbb1RWwV;4N5g;s>l}^N?)GJMn`q| zrLFWE$(&R469$PdutSQaO?*|c;p6QgC6~8GZCn*z5HfE#^44!E*a#BwBwpuH{A{%_ zzrqnPRH2{BXKnX#Y7lH3R;TVQp}(kp$DSO~f{W z*BlwAyHN*OaLrt-B4A(w;K5wz1|amFc;!NUgMq08?E1yj=w_j3TsQ6;uXCM#OclH7 zR$+CR>smUEQgPZ5;XBJ?_9c@5Mrnez8LI1DHU-k|bOKV%y$8^?2A}C%@{v@YX9!Lf z$~*C+jdo(7yvWy1x}hZT)yGA zQpgK2wc&PaFFs)Oz8M%)K8g@TlejF~z4mV^XCqocyk@&@f!zjHT_no=wt8~D;rFf( zUiDP^s`Y@yRl44YCB&k7-1o%Gdy`xI=jyWWf0A(j!PWob&l6zd{Z8cw#g>V{s=U1+ zK|kzRir|l>j;PU}PmFPb=L^lKX+MiSS7gt09Db%;4ZVq%)-L5T4W9@pF<+k&I9McR z)h92`W}gYS{O#fask zn1t!!ATDDhIPuSAtO3CU8w=p7EkO*BBq=+(=X9=}*SI7so@Cl?BM~-gjrGH3;sj@* zWz!{;&p>&^}nUrV7)t?S~q(!(?&jvgYT?^X>uD?OR%>iE>(ad@-hv+kFE zemfy`9|c%3Tk?z`fI@!vaLp<05Z<(UV=a^yUr;n2iR|E){(b?i7xsGJlD<@AnjEYyg90E07C`rgzVx8v71n5J9`IN<$ zo;UZJl3sofwE66FA1DPQV(lh+*;KCa@aC@R34}syQASlg+}wEXz9h~6V=?0aLr611 zj>eU^%;HfkB(&AMmJFSbQy2`Oe)2 z8M09?tK&^9l^5?M^`gT`4n8JwGCS?I+87ctAmHG7)o-vrGs_#V zK@}zsF|m$)hR$xECC{||LhB+)7!3O*+!H~I>d4aFp1%(n$~5nB&psq%7dm&n#$3&z zI}u>QG>7z{rpkpQvo=y+yX-{$pp+NBL4qF{5*k0<9*QNCAdzl%2LI69TCsDd-gZ&* zL1|`39*IxfY2*YrUX27s#gIi`pG~%Ems%lGM{O7Y+EKXR&p$7L&ngbhBWjnW6Y9mk z`)*(&NfaRt2Z>3(YdA$%3~TMJb6F(MD@8;be6qpJpFu(ziDdi3Vh@VEsu4IwQCgLp zCGqXcUz(>-it{9>@^9O7AhuwM!QO1+iK2o_jwb1QHthSuzW^wCpF4JjD&E4jdv&eU zIpF)1$tUMQ?OBIoLgf9YhXdo>wQ;bue#!}@De1L;tlYQ-7W%_Y^aJHu!GaKTOQ{|> z&~93Hg=l@zZHUPmy|9^|R-eQ2lszV*?-W$1huO;iwAgnh+ZZ)7ej{L zQ=|t7n(L6#o@azpzuyk>ofWAfH5|DpGAaM$(^a>l&#QfMTQadcNnIh>FQ%J?D2@k51MAWtoB$SRe9?iwgDN$UM|{W5^I^JodyR?Xk7w*<_Ji~({7Ya-C_%7?U$p`M)mD<1WMhT) zd+%SJ)YKiP5ozECEfy8-{!i>*-z`TtRZy_>NBY!Bq*@;^aOn`K;MGj?pwc)^81N8Qu>mlX~N_x|gk@W&J&_Be%78`Vy-z^H<3j5QzI->Z)S;UsR@_6i6R zPz`wQWq#W+!mnpk)2d!E93v`I7)cv4E@UyiUs;UxVpj3T0>1p+U`ZjLJ*fyfGQbih z;$_h`asXZ|*Hr~e{yOw5=1IxPxyDn5FEfEJ5G2^FkZQyA(ltQA%opM_K;Bm$gUBm^ z;KUn8;&1p+ZulzUj$ZlC7xjOr7?5}gNn@IBu!NU!s$XBJ-3*satlf17;?=&PyFw=_ znAlRX_Rt95N0uUeN^89@?&o~wQtp4opN70vM@Zuyzm_w}qubjfU9d4=047RM46v~p z<;{J@O0P`ei#+4nmykGIs> zNSh$+fk#TdR5f@9S_Yf3doch5-NQh{;^D-S?YJ65DRbXs*+yWD#N7~aOz@2r6s+;w zUg+f)V{4P^J~TgbaY;8g>~tU`qQ6jhVve>f5hbh7YxjHQN+kU|5u zF@F9fh{F~l=)K0y5HOl4mq*%U`v>^G*}-SUXz<%6U==fMEV@|AuL&@0ew{HO44Y+H z%4qL-w{UiZ$!_-lNNV;@hj%XgXYMuFh%gC!rG=U*j)&WAJ@sLLSM-xbfGMugtG3*> zBYXPdHxrt2zwjH284Bq#o(oM<*Ph$QGNSEYEuqGiZhc*9+ltoMi&levZ?|mhD64}u zuq-6O+=AkdHOdRdefT%{#f~iZC)y0O0rMSHBQMZ}0je0DF@B{t$D_6XyxVlNa6l<3 zuRij#ib|u38fS$w3>ZErC47O1goN5y_KcV&Tc1h{89W~|^pQ1mQ6ppZ&98uy6T;%< zr)m`9q%Yb=Ri?D*dM{c#lf7jje9pMAP6x}*Uf3$wveZUF^ulZy_Z_rwtU1TxqvDqt z<7+nJ%RqZKvY<=MtcEJ*T#M8fnHU&M?_e2p5f({DGVrSEsf_V^5Pr7^}?na=4y z($;b(m4Iae?=a)@If{7#ibvyX_hTH#^2B$Mq+%OaCNkgVVN`bTV$s$M4TOZ!f~*a7 zCHKsswJ2mCQ*(@F9?4R~6B2R(v@O$lZk6Y|HX08jNEUFumWoywnc_sAW2_us|6+`76Le9F6_l( zF&+E2W^ZvCBtAYzEIzb{6Y*-=5W@zlh03W|MWzkkRQZ^;eic`r8%uf=c$-do$b?{3 zbOg+F1pnX}a~;wUe0u9=cF`$=ue=ti@mk%Vzp2{F0t{mnEw4`dv^^<xsF{xJ z4XyLu*=DRWZ9`|KOs+U^zsZX^@!+CF$P>0PO`MR+f~s&IKZZ9b{erkg5^5dUHy!G= z%s9eT;Iy;T@|bN06=lkMQ7_YNG^VP##-JC?vwnFkLsqTPJl4FUm@}!Q0}ujtdav1# zHM$dcX4}!=2NEA;`o9I;%_DK=9w=TUc~-}BPTOCvPQ3i8;p(`gGOEu%%#dp8SbIpZ zQD)*DJEeU#>;~7ABRl`bcRElv{zdCrR$0q!b`bEj=C&*WZK=b__K=u+RtW}wX}9Ds zOeGpbI|dH{7(11f$0SKd&fN1!I}T@GV4wZDrI3YC0BXcRinJSMzLe#?t;hNfU`LQb zCe^%^su0VAitIH>)<0Tp;McNw?yQ}A=vKIh^4jXNig&LM$exk;=Ckjh`pY^L4Aj_& zDv)oiXI9-|{iy(d8V2+ZHbWI$EzS7^gBk|GjPr>$k95=t?L)vG<%Lv$`FL+mDv8j| z`V(oRn$ThWQTQD!VS55b$hjR?cG_A?KR`R#@7?KCaS}$;hF1k-e<<H za@7;w?s!loYHkvYISw>l(s=y*79>r*>*Fb3t8g^hwgjTAyK#prmLwiZ{nJi0i3JPp z`695o;~wqqm=SYrs;r)la)k`%L-`Jl|O+AXilZ(y^Jg@@7^_t-i;xD*DIW`{lu7 znLV~}H@sk{VsoWfTuPx#I3Brx_rFtJgx9Q1Bh|9hiyb!{@{PWUpVCqOm70|1l-JgE zNVQwOFAahh_5G=DWMgRyG3dmo`5sC_BjBC*+lh@LUEzY}zAIonpRp-cJFmd;x0Xts z)iBF^)TUP}-Exw_9ZC{40c59o&5?D=G5E_m*M;0kGO~|~(oWN}cLmh%Onw#NzdiB!xdnc`vkll>;JB_jG1pwZe+H#mC zbQnS)bN5+oq_d37wa0$W+Tx|Xda$TV36V$q&hGY#^&zxvtLwe6Ue?A{&&(@&v95atSx?MfDd(E|m%wOgt*gnY7;hCgw z^S^_~YmGxc{jp&CJ7pb-NDOa;ik2x4kNy0P|MZLX31Jzwx~0@aC%BQ`_4HYPE^hco zkZ5G0cS3KwS$XY^&?oyG!{4I!n6t{~_j#m%&myY3j4WFt$PbKY!BK}NwC(Mwj76}S z)V(BYz_u<95ai=zV%S<|aq;N02AdtV55R zMw=g+B|{xcU9%-)`(38W6>#Po8`>Vwp-eg5&{Y6Zrkk{*$s=YRESp>CE)w2;=G5^V zDKnY}j5E#hFoT>t?~5$^Kh6{>KF%Ulze`9I3c|gA>~9m@v+kH_EgMmtScrr0N|y<# z+a}+*l6caeuSno|MS-WX>ot5Bn1l!&7=v7!cYkXQfuKWxgl?hNo&uzJylIkW2bkn~ ztwJc@+)w4bafw<$7qGubI^^Kw6r6Zbbv$JQBPc1Edwr?4C+(|kr4C^Z-yFBR{!Be1 z&`d+oJWwJz%k^r#tQFOCQc||JK%`tKwaa?tnng033E^us%enexNgzsA&@Gu4in7F! z$lve0Z+o7Ti1SWRDem24fzBWO@xJSI3t^DF+L`t8TRf2+4MQDzz) z{mF-r;8Q1Zcvb%E=Opqze3crHvD{rKe@5m|MMRTQbAX*6_j_7CN2;;r zOYP3r7wo}i@z~r-&~&S_5=wAnsx6ucwgYH__fx=#JoE@G4u#din~ z<{8svDtydW+aHoGh1JErInv_cbfD5(!Q!O161oeBko5CPCTCs9 zSIf_Q#BQz2c3HUKAS@9n3TiNbmqCFUel;f9n_3kd1Tp6V02vM0AcUlmm*_0a zP!%9%^6|@cQWAco10w0eCOma6H`g(5Ko+rRjgBGRL$aM?!7uL7ZDWD5Gq1W?i1;Smtft+#NO*y{^AplPDOnJT?fw*!q(ClqYE>-j0T&CY*uLYBL6ieM?>uQ4#QhR7H9#fxMf^H~^&?7dMWXCm1L`10n0dr8;hG@_C-(JHZG z`xCEtN9)R>7dmpJBjBpmR1tbHPKa~sCULsw2dFVyL@t(Ae&)B>e3tlE$>_SLx9HFk zo{jI%AzW`RAcVvtu~C3Cn>z$)`2#k)e6YPE=j4Ogi|@SvM&)fq>Xvo^Q9FXg$>huH?+mzr54G*uLj!apB5CJV}Ogw2_IL z0_E%L0sBW!>545nar)2NGTGlSNG~>8A)@5@2hB6p61|VFZ1E9M^IZzzIKi&I3DG zRu#1fhy%tBsw#JeJ01hss=NO?IEBb}3kyW5D z9WtED=|<(VI=w6ejDpHI5GVwP40=_zN~UpX^5}>F}P@4}xhTQ3ztJeQ<*YXm`4Vhd_bH#(tOTBvHA2@9&pBi&ayLF~!GE@f9ct zmRWJFF+fL@m24JHs2G|I8qTn(^_+mFeY)L+$OTbO$v|cY`OWynq7Z^!Cx6imG@d;L zIaQI(^;w*pf6%7fp`MR}IxA?_bY}^Lu4^rB%nv5BK)l-E6R&G(AJbFpk6{O4u}8ld zzT15zb9exvEShCDr;}|UO_E{ms8nVmw}`dvz_`k|WACy4+BP z;uzfeqxuI?RH@ZS3ilD5D<Sh(}KWB;MF(5*Hc%(ORS&S&zT4d~@I>LLi5%9cb(=Wx&9K75#$#iS)1QkL8S)g;c$B)@ZUvgmKeZLUOtFK76w!0c>j}9!^RnU% z0$CUrl1G6_Q@K<~l#Jc($1GxD_g1WCLO<@<(i1q)03zw}zJ{3&)l2Wt!dzRmF)3al z{DCyEG^e;#XTS}V0?#Pd)lt1-de9~YOmP64DZycMK9)KdosXr|-++nybVDfjv0#eOF?jD*n;zeu_>^kq?$SGm+zy0(l2zfMUKRB4CE45B-g= z|DN_~?_J2#zvB%DVLd&WZn|QhjqSItoS7C2MhisUBhcvaVJAaVUL5Ii zEQ!py^>BR>2p0&9eQCLs&A0Diqx;oA;1~O|OgWnzJ*&`!)@CbxF6}#cgah<>Nh*AO zHh9{m3?$zmC$&kG&`Z2}_f=g9|M&Ktdjidz2W9~@U5ZHYs&zZJ5TpZNsX%H2uj7(? z5$6oQr3#2uf{k>E3x6`rrrc*Te^Z4Gs>r++bEYn3b#G~VGvlvsUZ`0ym$7gKJ6Zw| zAG8!Oc@Y8NZk30GQ@-owJ&LI%RoCj*SEfBpwERaXxYJ-K_C@v7%r8!xD+l27cu2{4 zq=`wNfe4;KaHaUcDA@G6o3MHexB4S2M&H(0?Ra{`!!i&eh9b4RkfWNtTK2sCChy{c z>B!$8E^BG0MQ#)3zKDz4ZOeQbpJ{}{$AS@xcrF`yTk7GYl@_lOc4*6gWp9#Yxh3p1 zeAb)rM>$0gu$?-Bu_`gC?o-pm}*5IB*NqX&XSG#CM#KACt_O%4-P(Nj04x>P?{vb zrEaBm9}Fz_AvxY%0~YwtyCYdto#JsLiv<@;eORZ-;Ec|d;ifY|G=l2dfDE3$!kmp;{2zapd|i2tEik&KaH5XK5VtrSrSW22 zLrCtxI!?&+jzIMq`u-YF!jhHskc+#4=Z{cMTNggBi`;$fdE^GN$nB1xCNhM+(I6*l zYpv9-rGT%Oh{!yQw^nc_J_B$n=8TKWh(9~IF8X&=e#(ig28l#zXNt zUJlY@YtW*h5Im=xDraP&d@)`=DTbF<%kv$8H@n>sbso%Xan~}x7kcHOp3-MCOuvfX zUFFi-W5g`orlu^(K1&A5GKCubb)GZjreD;1DD{ipH;i@E(AeHDgWk6#<}@g~opV-a zsIkp%>cuQ6L)P_L&ac#9!y0Oyp~Kl)$_1NSqlHs-lBTq6Fr2V!OR)N-?u<+P>1ipY zKx9)a>2MXMfW=c!1=3i_LBZArurZ`j#gF%(L0R;}4rNC@3b1UTg2UTUOiSkNHf8N2 z^zS}=d&a)sD>Ro&@%x>CEF;*{@LBfFR(sNW~lOPyoe51j7 zSJ26~AB38PU1h?b2fOoBxc}Jjs4P7!bk^y5NbQjZyC-8NYIj_@qh<8Y{##A(boW+r ztn@axXYYT{Lrlo)W53XP5bnp}!?Rwluje38rqptfXcgNxanrj*=xDjOyop_v3dbom z@NsAOmRGtSDDb;2!NI z+AvHN$NQBjWcgiF!4#bw0|k3dNSp%H$)!*3DS<$PNv=#NxSQl_CVy6t5Ax8J#dl8g~Fv8 zi3AD}Ay6Cu#h-%#AS@&Cu)*0~uaHv@*gf06YgFwY+umyryyVy}3%N174>JC4d%X1V zFOO~1;3fwl=T^@~l~0nScE}w`l(YxnQ+VDf5>F^_&LrXdiV%nwgg!Wx*?|L4nfABN zx~k(L{05#{J01uU5L!TT_s;IHMf5R*R^oyre9wd!MqCPnc`35%(PceFqN*1LyvfC#vIMU0qZw(R76gh#--Fk8$xY zqwuwF(ScnzK_dDNiRU8@aJ)+@ZwR0C($gl(1t_mF8Bl#JB=k{d?5N= z1wy1`AFa%laquY`#FPdI%U*gbS{5{!-B-nH?91z6T%fw6Gd=Cn*DNpq62;;ng8Mkc ztFrRT)i8W@0Lt;H=Qu8`O}$~ z^e)y(5fHq>v&ZK7P2@B7tvWyhtC>a_&?@&+Akb9W%D6HXU&mw@j@)S69)nqcEzz4C*7AXzx4@}Hb zWJE60rNrjMAGLd`+$k~HP5xcN^{6^$@?1;uxoIB=C*+at%b}(4z?J;jq>Dndd{+tA zslHB=>T@9RqXDAa3u4?Kx6ggM%!49we);(}68AqOrFy5`^N~3JETOYt->g#A1~enu zHT~f3tu8Q4uDie=um@cCx~bRSpIhsL9)FbIv~5cOdRUL{eZSsRo!!DD@jNm8&JgLk zp4Q17s!;pB>zJ_uO@jMi6%Uwp7lP}oexCKC`WzqQ5s23F-Us;l#{sGW8j3cPO7*g! zfnu4`>x9!&;n-+hy0Rom03Q<21r8*UG*!U$m!7A}Rma+O-{C?`1Znt^V8ThybCE8g z0ZRG|*b&t@6`=1}vh1W{vRWnR{ zm2yb(gR2#jd+%SUy)t?{u{|^TC;6CCCSXXEAQ-k_`frGmfxJ4NW&qwm!df!9MCq&> z3eiX$2#Iq$z=(6XSORAQhKxATp&NbA6Lo8W%zfG;FlY`kJ{Q(0yIv=xaUP^G29hJq zR{IZlzjawsb0dI1-PE`h<#&f=uA)_q3^~hnHDEa7;q!L$Z~f`tZb+IAnLqzhvA}1h zD=W}+dI%!@q0(e(=?fn2%K%@bwdh?v3?*e=vw#9Lh$gwvsETJE_on0Ak^pn*?Z+i| z<5WH(+Blgj*8dzgkt+Xzah-8-_TP_b9FOzkn{TCmfR6K`fH}~^`?JzN+>I-n&hs_@ z`_U2j{e9Qk$dlSIBGmHzwOxrH9hQt|{vZ^omgiHe5gw#lzdRCHKWS+sp(#7@XId4f zW{*QIb8zI}`Fc|qr~j;W)Si3$h3ASN@6Nsi`qf7alokfX@dTJ`gyA}GX17rH*W6Pe zYGa@TlE_4mcopsRL%F*iERj?=GC$8szN7Et(2aGrVEwFAqqd}55PJ1*s2!<$mCW0$ zX;22j%^#KMC7?{x*5_wgJ|%&VQ~$jiP7b17HjjSw@g+nXO>!uaHaCvN*&i`ZolVV~ zW>B(_SOjpEU-*>t94OlmJ7q0$5h;|Ib5^?oS?_T@ z&|5sAW%9OTUEn#j3DxPlVGsNas)d(F@11I?|M4z}uj&zTYN1lTi3H<0yAsUBX4(?9 zqo5q8gIIQL@ca%+xRd||KO)ZWx91HjohEaku#&;$FfthAYx)^R1<2VdG4nIy5|4iI zgD#o<8kh1vvp5kFKDbqWsi<(G62ran!v{iPcgnt4^Ca5BcvKZ4KAuZ*0{DPhkx$Dx zTPx^7sY91|;M`$=*3qGS#}Oj>I7nep;oNIt)LkHMs;C?ocz@errM6m=}<-kigM-@30X zcBVXCt+!*>A$-!IqY%^Ws$K|2fuY}TxSUyLOF%pe8F8?j&>N9bA7=BJEdzLrpR5== z*X+n#Io7ffeKgc=p9@4Bso`3z@8#CpgHHO#ZFUQK2VO83ueIj;9Z?h=7Iytwy6zJF zIwkw8JT2#r-Oc=yn^6nbQ(wWX;V|OYL5Xw3*Etj^Uu{Zc>f@jwSl!2Q5V+u|_5i;W zXUZn?YWEcoS5A;SgFkI-%m0-06ZgQAN%z7*F`bV)a&Dg1h=+j5VLCA}r_uh>C#KGS zM+hI%=#UkaaT4mu#b?_6g}(%oFW;6!;?&v>AvM&) zq^I&*+IlFn>Rei?L~_)vtVS}20oq;+OX*IMaaTw#9bj!A-13M0`<=MLU$E>=>X#bZ z%RaR=5krmIcNrTPc&7cL6(3o}Rj|^%X!#}IYTvfwnoChPNqpq-Iu zv#)sO8>Ch#Cl#gqtMM!Sq~zE3vQt9>U#_a_13YH0%?Y7!1hTi-ELCBaiBJuQ?K9mM z^`P>odbwr7_0HSAR7gr+yI_@;EC_;Ube$Q|&#ZAr=sBmYv$zEf%13mmH3XRKv!P$E zIFosxw(fGgnn-=#*N>_zS%IeX6_&DH&(9&{lEt6plzWS=Lst6>`8d(+>61dMEg;Ha zHIhRMOoIjz{t~9cgbO8CkiimcCC>MLbRpn1IP`YR-Kl|eNx`%WIr}H>trfs@NwvjC zmG;ALbbyWr*j<|_UD0&IGPnS2D^S6JX@7V5+c{`~)wkCM0f)DcDqu`|j1ho(DZ4(` zj4H%&qH362O4z$wSbLT4CuG1MMXW?nHw?hYdhB66irnK+O9R29tCsPyI27Lcjx`T;-hQFgQtqtA4{uE=SM1n11*Pivo*zbDH=NO2Re@w3Ir__{>I zP@nOD4nnRc6lh`~3_2MK{BwZR-OmJGM|`j1c?F0J6QQ2XfFS-KRqy`K^#8~IKX)F6 zInSKtkaHTLId9B4n)4xPjv;A|IaS*nHs|v()f|dSg;Y9^2}zn#sZ?`FiV7v_rF{4P zd_TW@{)b)e+is8B?Rv$4faUGQAxYvhWiQ+NQQc&lYMZ9oWeQk)0eRP6PtssW zM)ikQp4Dg9qm;_VGiNVm-0hpc(pVk;KEOP0+~K#8cZl90OW5@*OU9ihXQf9Er}+TS zBb%*Frs!bZmyKazATbl}fT9>peUCR#ifZ)h_@hC${izSAZ2AvTc?yc`tGSzF!~-tR z8)0yI=%PJWDf>BAvYH;+EkcAlaj(4P=(O2;an*ZtbHK<6u(C|Qtk;Mwte6xnhUr&& z59AvPf0cvNFWT?;HN@0LHH(&rI~ef0cT|57N5Gb(ZMEdJJQr+eF+SJ%Yvfw4sOXYzla)@zxdRgpIQR~5gC%5&C==V{l&T7=MBnd zdLju-=*6_$$8J=RVmjAoxk57QE<`SLiVLR%n4tZn;g+`}hiz9F2Ay-NXQ&`RnVWZ{ zSW{NmOc6tIP}!Z#I-Fd;L4=~&u}VkP34n{1pd&Mi9i&_r16?GJmAMzcUOToR>E$tI^!`5H!Z8Uu(7o9_%`v7u>!C1G% zvx^DUs9a)DTfcbTmI*i*PA6Tu<$iDwVPf9b?y~S@taHq9!gl_ndHxY`!0dTb3vS{{ z_A1X6w7uW^$%r6ZafK5a@nryNpnZ$bOIH|wF$wp@d|a4PDYwoQH}e!l=DJas&5joo8pu<`yL)U)xB4h<4j)W z!>`&<4=#SKYkIPb;nDu^rQ&M@eMH$egIgNcA0Nf- zjtEMnmnab>!DAgSP~6co-+t9ojG)(sDQxlguj}da7lB>48t9t_&y#hv@76OVR2 zb@Vv(cG2@@P>=Zdg>0o?u%R0kat}RHOJVl~o`)_!RoR+BI4)r$XWyQ^H>3eU24@fS_zTE1 zU9yQ{)ryyRwgNE{1XR2VS-Y+Qp=S&TZ_`A;nLX*&xXdAKaC3EhSUL29bJnFgy=5}H zv)$u`c9#20XibZp=Y-W&gx<|pM;6lLi>9)!9<#oykdPmk&@dvqoPQF`jn{AvvRqdS zqAG!@U@ctEs*f)}oRI(x|4?ZJb5{GDbV#sf2r>m>1>vv5u@ro99|-V*h6SO?#2vuw znhGa;Ut6H;$qDR{Ug#V3RD-@q@W&*pcHfUbd`Z0yBvVu5ij6U>$mKdlj#xTbZ%j&c z|7nbo=h?oRh@zYWVYx=v!a*LN)SJT$2{&xFt+Wv!yeT-UytN;GWuP?oI_R>ODX7a> zE>+>mvs6`Mv%pqRg{kY74k!Ta64ILMf~>R&lau9w8fg-p{#G@6bS=O@kDt9NF{FRU zJ@FWDfh+NX3fW5&Uj{^7>8YbI_iICtvW@)YMBqw!{62ncly}HYu6rgS^n80foy~q2 zAb0T?J+B`Z`NA`-IiNT8U8@y8Nx82Q6r>7JYG>)2dHJoQCiFO%3Y*B!T)Q|Ni?{Oq@ zW64f!w#ag%A^Fr5W7`kXWKDpEK&by+v{fN0nFztf3w7}VpRY04h5FOqu0ap^o~DB; znuV3{6{Fz}1uK#)y2jWqPgT%<{OefOjk9Mc z5DQvboY4MhzMBMMpsXSA@cThfb2o5yQ zON9w!I``P{huC#fH3x%Q3pcYO8myyl)gB5ecwJpfyG1_oxgb91a0P){<097_Sa)ty z#wW$7O`Q@F2?}4?wY^UcfZ=wFJK9OsFt3?-4;#b9A|sb4>R*ch@>JRW4#1I2)P0dt zKso-_TZyuw{*=(Du}6)y0=GG50HZ}`cJFpLR|4+~)8K=usD@5M{*HdE(({LHyQ8oE?rbVOf+sRhh{cTc8`xJ^=lbT!iRHoX> zmz=Z*ujM;o1qqsHD7iLFDf-g;M6jUFyQJCCyu4?VS7fejJKBC?XDV6O%s`Be$ShDu zqQh^g|<^^n7w(?pb$ zqW+sQ2}nBw5`gX1!8(^xe6)Qu%XeM$x?!hD!f|>psUsG46IYw7wUVyr4&>3jwequk z1Tz30hiXM5J!v2XDzru*zQ&jEpn{Dk3E7DKR!L%N{bFK?sCu&8?*fTsPUYo=9otcf z8FPR{6CUnMM4YF=ueUaeIBv=ezTDOwcKpidzD|yXt9cF z=t_*G%DruUFPojW*|i00Q@)dc=PB&R7kXUOQRNhwylhgPh~A-~SfQSLf)BDW7kOTR zIqRL2gg0m(fs?B58!sS;>xSiCmw5WJY<p-Hj17)jl zEa2;~kgR8zoNC#T(R|-zkAW^Aw=u*uH$)WSfL^Vf|H624VC=W(z-`%<`$Yh^rUE3< zC4yX)?8QUO==9{I)timi z-~tZ;ZGYXM>ZGA1fm8q(_<}p1$v-KaxBUeMReqX-_t_4wOB3m=CV|l6W zkty}74GsTEjmg8ZIJo6c2owP>Lsyjn#!hr0E-iv0I1CEjG?472h=z^dMIP@GjwNlp zI1G0|qQ)oCi!rq&WX@t3sDOLIoC9$6#zm8!xYN|PchDUkD39@)+70JUVv$eWR}_M# z!B{rz&2u<*3ZzLR_m8L>3=pKy*)aI;VSFKbHQqcOFC`B9>nvj-p}vHuU<#^_N+&vYbBq zeh^8h;T52wh+th}Zs#YEF@U^5k)aMqz9Wiy3c#{IY5|V}NT z;BF8|F0M;#hL8Rrgel@&@ql=hxn4~-{6@LNj}?h~bj0T`GAO$EPrg`(kD^q$$a=Yi z9|giR&$u1%xP346a?|4n5ud|D-OHIo#oeiapAtrQI)+5` zZT2~AE+(iRns$&$A`F(^bRE-}DwJ?7X;$|YtQuf==M}s`ubw!rK6(F@VER((!^3;0 zk@V>q_X|;B&;C1|Xj1_a6HNd2r2ln{a$onfmakyE`?QkgQ&n!5VigY;?r%Q-ev{Co zO4^^yD(f71(RLRTZQW2$lNiKlM)_2>+`DDDHmfK!gn5|n3}Qj3urESnFZym!;#~44 zsn5@wH1K8{w~i&(0k4G1i$7A^$^alHun&fV-R=Y6OSjsr3%cXq-is)>!;_P-Iue%P z(a@1lTiJc-NWu}3HlVS_+U;QH>4V7=#%wW-eg~pEHS%el;)__2$q9Fd<38#n4_sWpk_cz(}e^FZgD^#r0+6WW=Ws586RAAd#8I+4}6DJ~ZowpcT9o{Tw`uwT(B z_d`>{m)#G)sDv)!64NR)5~}5-gA8ZC$eac66FcU69efmDLn4oooDy~3Kl0NmlK8+= zOsw+KYCID{Z)s*r>!~wDgnabV(O(Gzx9Z5oJIG&)Uwnqs#WsjyNH?3j(od(K6vU_x z@h;oq-cr?9@9s9Tu4`%DKI(Fz_el0r&4ni2dnR|gX%cS>bQi+=vkIBt3l_iM-;;57 z?yJPo3isx*$F|><4uG^3R4xoWGZC$D{UEhpGfiMD8SQl9wz2i|U4)ySl%;)lc0 zudhQTx%{sV5AvM8gY5Z`JvjJXisS;iYZq-j?!hmxKh&wmexN0;qhVh6{~kTL0f2}CA`>RA zO0K7~a;& z+ge@&IV@2;s2bo(L0yaVO8k2>d_Q|LR6PfO;;TLnq2xNFSMYv^Nm2)5^>c4k4f^-E znAN^(l>O>_eVfeEH@xltZTd#?SGQtOpM_U<;Jbgqlml0&19{?VPECQU;X@^L-%^!> z)*?r1b{-sR3i=T}9-LU3nssCM$nBViSJ-{Kd4cy^4?K{cUfucpnciXE(CPixzSL-< zlO}CefBB2b`rl={%;fmVT+Xp$o#>gLoYB7IJbdP!p$H$UvWU)MJrtA9Pz1k9F#nd( zjCQc3QFA54R7H>3{%^W3s(?EtO`|fPvcf( z>QrHCz1wsApQeChr9LTu&D&dY8A|c|=N!5H^9;lVb7ocNEYgKY1n=ykT5GMY0bJOZ zT>LYI5!n%^?;0+EkC-{XDtAdV2?sXi_YW)EBoQV#r*pNQjkszSUTsWXo_V2~xmcjp ze-7H*ekOB1OhAP0rt ze{gKv^dk`15a9Uk$yrO8utXGB!=&d=|Ds!g0*MU9kcQXz7$K%#>fqf(9kuL{nU83t z^bz%Uxh7o3sgvMG3|1!+JL%{k7gA-o$#-!K$nLlhg(}LkUCfb$qsbUr+IS;e)dk-? zB;ktTuzY(Hhfno9l|Rw~>0HS_oiu<0**|iNnhN-)P74872hok-m>F|14)SzLU~tOPv3uvg?o8e!CU19q|15X{Or! z&AFtFtvQ_d>K}@oy~6z_}52n9s)b+trZsf zPs(VUJ#yW*CR*JB1?jCCKhzJc*ct2nQQPYGBZ}L;+FtUxd9W^8w9^1YjvU_lvQd-Y zRRlf&K%XO;tZ=ggyg+a_Yj+%)e1F~{r)ow(=#+x% zxRAup5?Jr)E0!zjBf#i!r{#!?G*rF7CDP;$g!7TI#qzO!uT zN@104FU%m&+h4pss{G`dF=ryK2)UfjGRfX z;$A7+HzRSVqgT9vh_K=sv-E3zw&@*+b)Q>(rcA?$9zL?9@E-f>)*mD^&GCX;&=>Fe zN+%~}ioyPOq5-#_)o8OHE`@KrnFt8>Kdw3sxr%TKrR=R92<}QqP`m z>v9>1K`4l<%)tMUpRjlVNy>7(aBZS+O%&?AQt0YHuI;ie;WS7AL}4Tkly>6`99Az9 zJ587<3IO%m8dkT@oEAS_p|pJo_D%%%|4W@*H;+zA)crp&fROtBcZE;QrxH4{$p0OJt=X5!V=J=-H$G&d5;W{U0 z%)<+gTcP^MiY9MQIW%_`fH0fk%Fi}I@bg_Ii7~FKzX^S{e=71-=BbX$9YgrWuO+e2 z@Wa|M$m~wM=+Pz!) ziL}2G<}wi2vLFzy`rEXq?{!W{&>QY50}bV@J)_*iMO+=pYZR7MN4IF`NNc+h=HR+# zdui0(S%fLEUsM^t!qg05{@%0%2rI0B7)UB0^o*S0fE76O53exJhTC60&Ev#HkSNt_ z-fBH*Or`0sqKDEYI)ASvl>Bzbq5DB;#-)dI`@5uQbTpn+l3adVnn+L}NpJzv-WIH& zkM(7*@%kf&G0uZn|%I zL9*06uL7?`jVeG!^5wn2s{GcLIfgpErqa8c;sPGA-)2QrAhPi~0ABuNOpZbzLyjbW za7Ipud<>>)Y+caJ7BnYZMEFoa*g%kU3_W_PIaG?BNwl|VwjOW?D6VvC8scOh81 z)MifVB8&aT0-({&Fs#J#+|B(}r~8=6i!7T!kZd|yl%11Y&eIp!Er|!B`dEJaJw<|E zI0m-!vv!ut`QSv*CNbAzRy#BiuEe!dvX%$m5ChlaZdL_9~qS)lP&OSz>8vpt$R<%1ECXj^K_13#Gs0dY1OGTo{%4CkT`##SAlO zLpQQaIv5Xb*-YoOr1B9uoaSugwr#J5Z7GcoC+Hn;VP@arSx@t9w|K^2cP;dc( zgdI&Lh^Pw|OQ*xK)eVy#qG-8I{fLF4tGvP-LK81Bj3M3!&gAalycRjt1DERn#4(IB zZ3Xs9{SS3XCJg%FO;+X{2u_Emq4RZIz-VE?gUU+g=cGXCvTTNCAnWr*hCY%Z>%!23 zfYw{!?tKs=95jl`vNn_jICMJzc(0Ue-T{fmu#(w%WNdX521;0D_C~VgMioZ)n{08Q zsa#eBXIsb!)spIhn9UnB(f}jO5C@{TdzCI6)<^Zz?J@aefNp{#?7uVix*tSaM6|uO zC=yaSxVed&h{N@dExYovD+eQbpODzhU0kSHM4lK=v~$w!%Fj`G7e+c1H2j+2w(&eivtf?)1AsMnP9*sXt>%JMoJ&c z9e;{@3#KHvT5qZj79SmA>%{UOiH;awSVlP1GZYss(lCg}CJf#!>`oyo0>U^C#$Khd z&%0uMq>Rn*ZU1N5CR8BoZXyKVD_22DlbO((U)$_ zj@-EFph=1VtD+gM&<7SVM&&a;6y(jLS6I8^|)Ur~^@8`%rnS^=R~NTf;ankOzD9bzX}D z8eYQ^Jbo@yR8)+?A%)!J`g|+}D_QOreEmfh*YAMic;UUN;&)S}mtX9E@?!ai)cmqx z!8w)6hk+&c9wpYlsD{0+iLx~*pj)oA9eu-4KvQrkMD@#P4YOzVu|%E6bjzu>%r2-Z z*Batyd9;HmQG(b_2X>m}8Lb0;G=$kHL_8j*&jE?(Jr_^9nFzq4fpjqrGk=Vgln#~| z07ifE(WVU2XSEAQkeoM~oJVYzsN1ox^H|5Xnd$`Lsc>`TI6Nbp#W&n&!enKTHZVI9%WZ$Nr{TN0MFE`lN#ent!#*5Hn<%j?|%fKgfl4$94fT`!g z%BCS~I=~SamRQQ`t394hggu%K6uon!?ON8xCepv=5%~}qNiLv=aXJYNp1br6R7pMc|di13h)jUCVu9QXhe!a?6Z%mVzV2(clm zI2=e92;TpFCxFq>+7H%Rw^c-qX2iy+(<%tLZvuIEn9Q_@WMGa51{zePmxFs#V*MuE zC77AX2JeS>vmvMxNO%AWcR-T86 z0daG}c6X1zTFy5fMLI@De)_04P{8oQAQJ0=f0^i4_nw~qdv^V+rVf@PMudiL=4YfM z;<@>gq{y}PZ4i?W1u)8kRxB&~S1j7X){?#Ai4SAlCh12&zlD^7ygre|9)vnQPS^5U ze^cJ!zSL7w&p(!bcY&wjb4_>9eMeYPYq)8Q{wr#R9oh7lE_)Za7Y3J z2W$0IXUJWc{1X_w6e1#p@_zVwjenvfu)|E%)B2opAi-)6}39O*M(p?VwG;mb%Bd+9p zR1pTyes|hhyeSD_V%Us;^xm6QoCx0CSer7)`puJER`^8o>DSSizI@tcwI2`1^Ibj^ zbC!7DH39I=yf-KAsDSCgU6}b)-=M8>w)%Zg3>2Xvm*teldI!i+8CXKx zTN^-yn|G=*_f_}#M%Y&s8bb#2Rj>BwpBqO9lA*we5c=S`(0Vt?uW0kk_wDpDPR4>@f|x(Dy+ z(k|ZZ$W(FxiFeS?^pq9^Ym;q39V^Eb&R4657kiO_zj=r{imCpqz%?37V>eq3DiJ10?tVZ@^lKC^EJmo<9axfbC z{e7|^Jt%d&4lx2(X>^L1kj`c!bVlknv?)k5JOlZea_@)rhh(SS+hDt+*LF1giaYq_ z@T=t0b3cwC0BlI=s?m{~KhxsQ#>jxBt<^S8KTk{8RqRe78Awk^P9N1y&U8Jks zG_t{~e0HQhXY;LyNV$bPvawh=4*CcwpAp5{6-&oU6dq!axx?57U~RzKeKXm4!RK5z zyZ_tT-P%J(Xm0jd^A~F)Rbv_%v?K9yR(lj{WE0=gFKk3k?`-I=)EXWnn8w%+vS(`AStYe0=WN-x;;&^ID%m+jReU zQ{JF(-}T{^CuH9LoV@(w$#~*>uuy7L`CzZ&zt+G*hk~pDg7P+^qVCiA?9rZsCEJha z$L~YrF<^(IpPAlb7(!ZtsJhB1DY*mu@pD!iQ4WKfNvGrjuO1lC5ZOiJ^#ppyS>ATT z`oyl|Nf3p}fWPfW|7K_Y{q?teYG3W^gEyIb|Jno|?|Ak1!nVq}57lS1*~bx@C)*=0 zpwmUW3Mo(ej``;5h!+`PSk{xbK65Al1q#ryMSF^yw0id^>Hu+fb|(Og2*QZkrC|VF zH+D_S4K1td+aa9vV8oN!@vr(M{f^BKNOR) zP$4h=-mNQAs;bpi#VUlC)IsnwJ_^w;aAo?J~NoeMp;fKr9V~N1sl@1Yr zTB>LygGm@{}yw0w_LjvlX%H*crDTaDao%Y`u{aLRS64=1mL5H?!l;Pd@0(91IJtWZ! zl3ghYROIG0xuTMyo(6jkTNi_ccsD|N7K0Ya< zLiGv~mcc@J5>to zueh~LkrW064EDRpNdv*tH`UyHW2yZ}ISLvC9omX0mFGDw^n+51cYE69k2nUnI{sE* zp!)G+FUIACpU z?P+n?@3TD3kdG$8Ns7yic1~d<=z?r*3SDj>KDk)bY>e7fG1%y*FS| z8@KhvREEzT$VPW}X+io!tO`VX%;iboz*VISlRai>H=O}gU$L|`$}h%?K!0AQSh0+g8+qdF@j-t!z!huO`6~*@Up_-HoYTVUl*dSS~V1BMtOZX)5QKYp`<|!sZ z4KM5!TWj7!qW!wK31~CHV>x>IqI-oCrML@!3E**U^(e9vCOF))wT|jM0j1*vF;p|4Stx! zPXvJ43sPCbJ8Rq}vg1Z_)DCr!d>77JqLp!SpZIVY)hJUmg|G5UI9I;SA)W_@U{HeI!8Etd;FXp4J%h#(~8tG9oZzrJCwMSZ*K%V84dfD|&p7gE}2GRyxIkESn z%s2ie>!FX5!59fB!=ve6GZOHjHI`2*xnuL42b!};7Pv5x%aZ-R;q=P zi6{+(`xD6+$H%27>cf%Y2gK^WtmtJ>{jb&P2G;d8sJVp`#ouCBI>f%A+1!^Z-^vk3 zvkXdgtXZUzE{zo9Qgq3$4nN z9z{redBG?9V<8+D=CSXMua<}SS8vVuLwbzgc#nK^debj*)0#yJravf z$3kx7>;83?i~mc*sBN!*i`3JfmZ_~Ey5Z}Z@j#AF?4H~8e_87B|4G05B6n?L(SR1U zH)1S2`i_NXI6S4OAqx=P)P*x*i!0t_58Ai9nU4OFYh8*x{A$F~b1mUGD$?ln&R&nU z%SUd(z^GoX!kl0wTP;)4Rx3;w6FZx20Y30{o{G?xVrYKpuZRGqoKzBtDqW`nvw!lW zDHWrTo-oO@F$Fbc^~=)Zc`rSZZ$Ce?FoFm!-x0g5-kehEiBCE+Y{lNnggHy9Yq@j9g9ZJ;E%?rKgerg#b5BAVzdZ8Zu4f zS+>jX;lm(S@+YmA*RHHzPQItKk@RRAbQW{O(RSlbd?8n~pGdgZN=gt1cJDMW29Nrw zrdqE6-ZMM^SG{vX=%SMd-)DSsko{5fT)42oJlAZ0pd=H2f3>82Sd00rkEv!ob5D2U zmLs+Cq1F4<@;d8&@%ulH0i0=5(?@OiZi%tl$4L{$>K*&JzsGm~`{5;W{G(h#LWW?quP<+dxWy)2bXM>x9ZeWte(dnp`EvnJr=_B_ z=2gqI{cqDh&#(R?-)qxlT8cb-*(^ce7_G>~?e(-|CP>wD|9V%nINxo0;7dPEdxxBI zO~E`oLvxKVE$wc=zRnq_M<{~IRSR^+E))6dk4u`Mkt?eIQMiExRDVK=CIZZ2A&QTKC zFU|(->Js8eNxd2K&A=HE=~lC}U@rn#7{%f-gQSa*&6J2BKX;S8gQnG_5PF1$%$7^k!CEGKI`3%AICbJqc%8w-&K&V`*n>qX&;hAbR;v#=G3TV2*p zxftn1&`3#536t$YBS0Kl zQ}i;L_3sg&Oe`@UMs1ET33SNF$cxC1yl)Go_dn1EI@0rFvQFr_hc>V;wpU5)*zT~m z5kRC~H|jzi|DzDWWI7yJOhA5KFW3i$F1~DNJc%x8fPc#Q`^b$*ZipkE(kL`8)N3lG z!@snuW0nzy>Ua9@r zw=(A4-KW)|dM$>r5rz7}=L5-^Z;n}B)UceYuGFtSp}+IV7mJq{{oFT=5$mD)J>(01OhDBc(SOPI>Skex1&KPW`N_yO- zD-YdJ0M3y2>=#&Wdhw3*sOKQ*<7$&3n^8~L(VR{6{z?3{{fMcsSd3(U9ADcTv6*MO z#Xa2o;=XDj1Pao84YGoErfsniRIp8qyz=DffiD*yg|`oBiw-j5hD^RC*~iY>?sz~> z2+HXE$ke^Epg$CDbSchgB(tq8mwxrii=Fl!Ii>@(C1L^g0ZRo41tzaA<($n3&nCpa z@%W%xJf`{)pZF4ZH8Zi{)+93=M-*#M6FWUKVbl3YcQDOYvBvTL0xw`SD*u6o>rV z=Q2O#U-^=mE9(>FV}q6mj5T203nND!uZ`<$dAn}}i@ zKydog^PLm^i{cU@h((EcsnZvY^pJI`^pB53^F{di*Xr1rqiM|Z_l=~+dadH`Y z=TA3SkiY)5lhmpUbi|ZZlP#nGXFi~GVi1__5a|=XIT4dPiI{=8;!+Qq9Ifg~k4R{z z$L=nj$0jTK37_1~dD!*p>8$*{(Yga+R&%09$Zpx8wocq{tg}DK?0wHlV3#X~Yaqzk z(+3joqnD)13m4K?E%WBL|0-s&>7ZqM+jukaNM*^ORCeY6kk2Yq(-;(#kjo%jT;G37 z!OM#d-Rn6eLNz}E+cTY`Cvb9C2H5l0Yi_X-#oaKO!v8Gjm_D$@O2{rYqvy&)5MZx^ zbQnGd*~Mp!kLV5h52wx>dl3M27ySS*U1>8pFFP$pQyD0~5xb9Fe6P?b#>J~?z=EAK z7!S7L^AgU|MNmYQO~`x(@}Q>KKFRAT`y*2WMvlpUOFepXNW)C!)JJ{ijoG!MzK3uA zo;?~HeJreWEv5Y|bj~ECZY=DTeEzw?U&^mou|Hf1o_k)s3?biKPMJyl8RSafVnd3w zCL7Xst$A|#3EL|U2M#H_hk|Y_lge9k;e()1@>BB8o=7EZlv-_T^lm$%XGkJwp#e+T;$!4%WD0Q z6|hdWP*xoCKk%J?LQVXP5N$m9`UF1%c=uacn+BgEg|&gi#vEs9{fVaoS%-XF?0{#P zIo5db^_JbRt$soX0wz0v4;c_8_b28ty`N-6LVBl}n;a?;x&``b`9Gk!DxQ~-F(A3< zwtHL1GDi(4Qb6ijIo7!-r(Jz>VKA9Vp$SDe-XNZ zNq-zwZV@llzcQU7!m8=6{ScW+AVu)A?&$38?>}oVZEW56ul8z&!E-CUB8y{JZ#MdD z_{?Qx)cy8$zV7{Yt&My0g4F=wuB&+Z`Ux^6^wi_CS-`+|i1ac&py;NhYQLp`x1(+B zcp2~H#|-mF^~UiH)!N&W(6f8*cou#EE9At%!(52;7{FtVCoLAgSC)gpBqWso@3JM1J~JKa{=^o7H9l2rAU@w`c88E;c{bacgn?!g&) zbtMG)(s>z-vIPyYV%%h{4!1*NkWBl)zpey3U>WS}V)yDl?#gh!*s^P~3g2pr$DMTX zv06V?wJ~+C=V4m>eY>5H-lwEj-P~%oAOdLN<{p`YAfci3@-PRMq>NE6VS81*zfg3S z{v^AirN2bY!h8}b73o@_u`}&wOl8#LYBfR!mNmvgN+E61g%3rlm5N3QNiof%7`hr@ zE53JjX1>3verSD5uSIX*B0|Lb@4%DO))~Lojz3}T^Oly@SIR`H=Sc^g%t}YCa!lIK zC)-41XTCCUDmpw@`l3z0`x_zFj)F?d;L2IW1*bQeP2rU8@3&6J#N?OBEud5-vcuaw z9zQDvD^*$y|1SZRa8*W|ew$XlhB8b3HD;>!SqnoAd3*knHv2X(3Q7dYa#`|MZ;vj$ zjC@$gl)ZXvZ|r(2uR_KlX}feyKe)4fpIgeU(=$##v`Cd|yKJ}Iwl~&3nWI2(u%9&224OiCE&z06ZwA8!_F28(zA4k$c^7_(sI%1VfbFr5VYN|X!1%wOa+=c z;;Fe@>Z{07#@qc1&3iGqX&ZIjudK_;&o|&|I3)l)aTq_a?Pn#9_d|*|(zN@rJ#)&y zvk`SfPHv+kSxs38UrpS^4eZUgrrkIjliX#d9!?q|zPskKLZt_M%P5A69fkFS$Y;c# zSxf#46faZ`{mBJs-cZz$1*pqq?z>(^;Krh=1D`=mR~dwBL>rkIy2W)7O_4B1zY?=o z)T$Emx7eiJb0y;I7(&FA&PTZemHSKe5z6$@OG)wNwR%2p=O+DwOHwJ;;jH&Btdq;` zU45D9P*Sr9bv$hu$7zON4cuDpe9`7Fi87yB=lflVjU-WS44lFYfK;*x%?zX@84$MQ z`T*AHK;Lwdk6eir_;fY_L`}%NwS;X(YS8{u+YSyK>CZtWTr_4tg}vHbIZI1UY4VWQ z{JtE+;gIBU@il?yv45{y?VdgjbFTaybRgB;@$911oaYBhmqN_U zj{SMv!aFKHDgcO{_r=v~N^~YE7MzW4X48-3;Rhgj54J!t7yjoVnI5mC1Jl?D%{Z)?q)`aHCh zHGrL4#Dx1(E+0P4f!(6AEI8a8<$67x&*6ZnlMEc~-xiOw;6iBq8oPZF>KOL_H0G@P zPq=gl5o$Hw%zCdf$Rf(lim`RklH32+V{W@}W#7DmN|dl3YqL3jfm7$ZMSf>tSyABtdi7?x%%TOo_DrBMT>jz42mc#fwlKbgtE!F-j?(1AZDp zhZzd?06>euST6v`Qy5S~I?R;wR+~h*{aBHN`N?(GUC0CPwh$z*ZL-v})6h*jai`^k z5^Yss+F1|THbKsOve*)#Jj%#5{ss&y`j&gDbLLd9m;1wId-0jqbM?IY@~zGrgTw(G zNP!Cjes%K{_^atD(prBTTW;S}5h}R}F%p4X^Q;Ta)LJ3HLtn7>!Gy18tJDYrpo?T| zMxd1VbW7uY3Fn=|AW3w7O1yxH5e%rzZz@PGn7IE3^|}0MEpmU|dAmBU-<5NynzTR| z*Jon=WTM>199qzWKRftU$u_v{{NI)JhL7uULX}}SP4w7ef^-C%iRm@=Py>iiiI_2w zUFz^%e30~G0yNqdo#QnbVOocQ$SqPt!UFB1S5g2}F)o+960Y)l(OIt$4;g*Umz&$B z4%;L&LsgM4fCqS(%3T5M|D)}`f|`2Yuu-ox5?T^^D1n6DrFSs&s`M&gs0ucE6E&fQ zPUuL{P^1Y82#N&^y-HCLMAT43MD#~d1V!2Tf8W7A+K2l%GjGw66{`Afn151B`^>^%CSZ}S5UGb%6iDO03%cwE;KT`ZfiRPbfaOfzw{taz&t5!7# z|M|vQdB)jfb!Q%_FezhOS7zcm3vn{eBgYMi?o)@K0dx>1&{OnG3EVKj5ppV?1oC_c z2R6Ar>)1*(R+J-H#b?r$=LbZ89tePK1CA8tvbQ}%25f){*;g}ciVG{ZKS*}&;Vw?T>!xy>r6uB6*3)+CF-oYTZXiKB6 zxKw+ra)DUbT!VqAcyF?APxk3P0bYXTN1311+zMo@?_pH zwG?bf;n8p%M-co)zYtlJwvQQLo-&5M2*N}KU}URNajH!hKzOrTNXHw={34cElSE`x zHP7FkFEw-lr~KUbXAsP##@xUNR=|Y^Eh#z5oCfD3fh`zH7cCEIBL_csR0c1ew&V+C zSW10{axDOKgI-5=9kU&rAdP^hRoBu7K%Z1d7KRC`v0SfvL}RC)hU;KC?gShO_k=xU zj-<2W?E+Gh4*`x9Wu$Z&;I!zuXp-a|Sl!++!qxY+_wZGi?8msV_FvZqe(sIC^ttXU zJpT1e@U)n-lf$orDIq%KU{$`5*-te}0JAue`Lank-ZF2fyviN6Y$8+=GwH1;03x4f zz?Sa!d{T2DA9J`gWMe`kRyAlKp0Z=y2YbR1dninQ>%A0ne}kzC^|krDy^vybaaVdrz+A1PC4W7tv-x zWrN;DRk_iiLzi*)P)+xm|3-*|xf#rdRCWZI1vVqiPyKxv^^0YK^-|Nm9oi_V$vq8q ze>3P;$$c^#`{)$Qub6E1+j$>;WR`4?dBUZ>a=y2bA37{9ww>LQ1(&ExY^6;P_-@G<|$ zeOh1+f(bD<{^x*UHS;8aK!{L?7X6Bzs=@Vao-6IB+q0NfE`C7@fFRNI$k@?Fq5HF# zYdaq0Dk3j-L@I(sX2Y>>+p+I=u*<5VpSbvo&9Tq=gh%nB(jaxk_QUlZF%-acZ&~O& zSH;p-F|H2Yw<>tS4m@@jk5?0yiV(-E$#@%!uGzgd>$}3e&L&VG{vv#R<>K^~pO832 zlItbAV}z7vhm_B*l%JY(klOv=mm-lSc(Zot7qeo~9WvK;Wyor>sS&an9kMyQ$Fliq za>WsHH#_92cIB$oTp;sYMMi^5 zu4Lw;xO;@(vdkO6n*(|8G> z2;5a%3PhG5tjdfjlLTR{Ni})uhCCYP>hPm&k%nwzafTKvt-+1{8Z!urB5-VzV7@e; z%m-UE8FA8{x@lomdZE&E8d!xO9D;*K6>87hhPLc5xdH@>AHb2Pj$owsr*?a&o7$kC#_77(kM9-Fb-O=8A-s~04%>GBfy&a3lD9c&0rrsJ# z;gw3r@E`&W6ct&kvl=u+vF7F3Mr*J_;dZek>8dMs^Ac7R4O`fXc|erKpSwb@I<4Jl z=I$NhKYrL`ytb;P;*bQmC|>aOvPk1HzYT~jn8-4^dn|=z0Q}6{AcqPe`=cKsnw|1qIR^;Wlh+wt z8^860T4ISQu2<_KyQ_p5@1;5Z*6gi=^@o>XZdQ+gE9_e8tGgacG3TznvC4RJKA%71 zVnB#G5L*u!v)OO+q{1*;XD%3(_zLic|D` z(eHkeL-_7cUU78-xVu`6MuXMS&Kai3kxJZdyGl+@Ljz4C@g>Fv03?cW;-bX4)oO@$ zKoDPnd;LaSVQl=P>iGHmwBQr`a)e{HB)o_j8TRJ9-Gmmwi4XhIEfrjsnC~8cGghue z^=dTf@>2n9uXbYOmQbI0c4(UJ2kq;hV{^2`Z~Th&LJAln7D$Ekt9|aFx9zT2kH;Mg zT$>Ys);~%pj*$=tu74`M{%OxL?@E-?hWOF1M96{5h{e_WARrxI7~v09Bk2Ygq-686 zBr*7g{q!nK$J441KngXJ=*#E#=^}6((O_|f5$VhzJ$^kLz1bE0Sovg$mTRD z-IJ%GzB}{24x%G2Yv`BK<2RnQjy{`crT^RwL}bthrTQNhGTS|}U<*PMI@bz;oVl_b z<9(lYlkA7`X)=~R(hZXTbdIU6Tn*fZ*{?9HZ#@3vcS`Z}r>@53!WPo{<5D$i3QpV< zc^8{_)tcH=M*XxvjrJ(2C*TzE3LC@00Ub~W;^)&imcV|Y>m*;SZ9t4ONDXEo%ls## zkcBobl{5oVrqC1#ASPsK$Bo`y+}LJRxQ*_g7+dIUPN;;zLr=B12m$A&=vDv zD!SiRRG6e{m*Pd}n*YV)rkeC5Ok@i{Rq-UXK|k<{I)e=i3_q?s!>D}aDb!>Cm)Y;A z*Qq^QbO#EqY}`|fFcJPw_tx9#zf-Sn-sOSZxe1)7SE*3J9gph-NZLL`rhem6%0)o6 zTOf#4+=Pa=a>q0E-GTs(kCzDPd<%YZ^YTS!;Z!2_J04w-&=5(L7hkO8@)CNmjpq=m z<}0rbh%-v1*7K2?G&NyCLXE6!RTmSCzIoz*=t9pryEq&BzK8;NU2rqbjr)Z_O+xeC zC-uvFu%zt<%dUERikAth<$+)I6?caJlY0V1u+v_dLNm3R3C6a?m;RGi>PV=0s$Z&FmaWWBXx&4|I-TNjiD9qQYJekF2QI{R10MRW=|22GJmZ0P6pbR+cX@zX~y7 zloh@`h8iS6D~H4Y!Bzk`k6MMUhbAV_c$)pNul)q2$=8-f#-PChmDMa(vY4c5mN+_& zR3entCp;dCVX3}?@Opmu?m5Vte*0dh`{Uc}_F7KH7UqYD(5wH2~l+z56x28{c ztqV*-B+N`$Sm#Z?O}fyAEq z3A!yim6)nW$@G6q6ap{bF{eWTe#KrB#Y6?p7@GHt#t2VhpRmZXXg|d3XebhQJbdmM z@TUkgL*r`(i2#hLQ`H=H5|bm(CZ`QvQ~*HwsL%e>=OChBcFi>h__1-B#!c*k2 z+g9CXv>Y736y_)Amn|ok`TOY$CS!QEBf416h+u!Gu|dN1zd`Sx;X|RLsg)w>OQWjK zo*(PeL$Kqj+bsQwSFpK(Go!DnDG4^9bNKZr+FgmeS@Ya-Ma zSX-naE{I%o0`JcHetY|&P5Tm%f)iTm6CJe6@P&79WFN6VWpn3V$3ioLxPF4Nbb_}81pUddH~$Qq6I76mmYFEJ1G zx;fDzW?2oHU$GKW2Ve`%iU!_(chvV~is_>oeVgz7cJt}+hnM0I%*P%4*E!R2PK3Lr&rUfO7q@zp8dH9#N_Bs(6io$4IP_0g47 z_D0mWJKTB}cP3^F0P#TKavPgXgOq8a@r_HqEnxse;3*jzd&{%k1d2cjK4}!(NlGf$ zVpdrI0IvQ`tIA0S%r@)ok&K^q?X>o!K??ta1rXiRUYwM;p1H=zjJ^9>i~n@ohWPpr zd%caH=>I05m6DPVZ`qCI-mz^JHQ+#Vzo;^d=Z61QFkNXdO*e<@J#dtO!!f-J%TL|I za7NBH=RIJV6RY&3pGR1qo#g?*Y;TyGZ+P&S!mQQ#wf|Q*E-bA-zTNA2E|z2%>8j$- znbouPw)4Wfl{)vLd+(ol&-d#6DsQ|T|Mj3TEL`*HKa_||&V&7Ac4-o+7{Ngp$W^hI z1OcoNME{g-f@B~0IzKWt*DBd;2PXZ4F_6g(#L<0yMX4kcKXEFChouEHlPeXM=xC+2 znq7vWYPhZ25dD4`N^d;uL@_fQMiWaQO985^#I#}Qj0%+1lT0NSyedXW zUtI_(7PnJyS~o@wGc;aEUh1s2z}M8ZC9y&bR@}6cJB>$AeD}~b<5vEyc3L|#ah65= zZJT1jvCtty$7{|xvYAnRej+K)!iwQab<`y6XRCduER2rY)X7(9 z?jVr|m9LO!Db<@O&61@)7=FC%)wHO=HUk964gO!?)07WS%LKaxXF5nD&ZUjDb}e!9 z^SHt79AD`C>pZL%N}+N?B5~)(n;K}>@$yXu;st)X!Z8^4^dx_hb<3MAPm0oEL1$7^ zWApf?+ql|S#m<*b3YR7DU%-}Vk$V+M?6PG#@5`2)NPS}Mr%hGVGlpuwP9klZNP}vQ z-BjKm+#UUhrHIs;OtZ_;9w}C##pM2`dy7tYRb1<(D=zoT$yCLxe3f`^%(e)wes7i3 zh||iI$jAjmX3`C|j)^Th0wPx@LGYNt=KDO}iQITqB^j9Wbnrip^=O6RZIaMCqJSye zq2o5(?G-R%ft81#v!YK-bMH-ReyrS^VpcKbDxV7LJ7qLM2T@d4(W?-E^-MbU#y^lO zjw~TcWvz`wqeb99d;^Uk*=KVg;T zID53iAvc|9XCXhl;ARJ=v!Nt{X-uC!&e?+e{(EKdBjme}t&nE4zBN*RYXQTZO;cME zw&3${T zR>jB+V`NJN-{+9oT*05IEdUbA*J(+D&qyZ)F=W@xM|b{so;!zB>Hqm; zCuPO~V7VV=X`rQ(yqmo$D9?=aIygvcgsK+Kfy(csrPUk12~%5sDRz7WC)jYJa|a7+ ze-(_--x*RJVrq#$@3q^ADc0q0#RW>rjFD|VSiontSa@hAWHiwqt66Ex^q<{qk5Vt# z{m!tyo(%wxQX*gg?v9*ela1RG?h?;@sYkx+w>{8)KvSEgLhjFp_!7yu`SABQz#6!( zL=yWujHT>#5|{_W#XsUN8}s2!oePnCyj;MfVS`KEUQUd*omRks33R?J^?uB%iVr?TGiaOaIX4}U&IE#csIRSMMLmp z6dMmm%W~aG56)`h6B90PKdhV0vYA4{Z1&~OTG8|L6Wifg0U_3bsyFerp|no%x$jOM zO?GII=b*G;mu*fFC8m0WK~lGwxoq zBnjGp&B(ZnMa78uJrmW(D^G(CcUR_>7;cFkFp}HjgvIa_jjp>tn@}{$8@_Awlbwbn z1pvLY%>O8U;?noXV(}!Y536YVqR<#>g?C!UI)(!GHV^NN`@Yo5+yPpehLFK?Jc|(P86vvdVn5 zPHg9d1QB6*sCSqVz4i7yvf`R}ytcKO>sEXHs(1i!%n-!<#kkjdiT4UQRVl!{@HL;k zmAXDdv`+7GY(Erw6@D0Wj;{m3LFIhr&pIR@yutt9d`LDQs zf_5F(m|MD;;%2dVm|y&PQ+CtLEnXRgWqj6?4j(9~`FA))q%v~SRz1qMu$%9`qV9

DSla8seY&Y&J1hxyvk-2AOwrk)VQ?ez2uAru1ib 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%0A_aW}C{`sn>XDzQ^q`IHECwz%E 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 z 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 z zezAE70ZY2?Fn(l+ry#y@bZuM1Ucmq1zmwt5Ty@&*Au|(6P4cZyO$^u$ ze@1^!>XTQv$I%84%OiH~_)FiEY)T2_BeqtKKQ&+8d#z6S13KKN>O3doptzFkBa||$ zE0It%R~f*S@C$@O_0r@}Ek`l0nUD4Ah<<*q!zVx+`uayLYr}+mGX;>(8lsFU=UJ-G zt^3~>Z-C*sF~_!E*^;wtgLC%gL%GjrRHm#+7&kJ`T2i4#RcpQ0WEriCJ2e$=+L?dsnxMJ(+%TyG#Zq1?TrbGp<%h5H;GD_j2e_5FyMPWtu(2cErn zW)GJ{MxBpHc+t|__zj^|7F@QmQmaTuB8dz0MxG5*j#NkFDmwo{sMz|^_wqsUfzx0H)pPfqiN1c^0X2pjiIUv z^+_&jB_>TOXG_UHrT3JRX~j&M@WAJsO=`ckEmeNo8L#)20cD4?%B%7ROuk+=_!ka` zs)Wh1k$Xh2LZ!SpR-d!;?7f{}3aGMnF57(M)n_|<`@*u_5F5Gl_^)kshz5e;SBFj7 z+R}1`Y2vn+;~U#O7=Q`i#!y4bxYvnZUjLA>fv7Y7dt$#Os)E3jW{u|BQ5a4B{>x%)K=S^oU;r)n*r&<7&m= z4H3sHw)jp5KiYO2K>97mAClFnhE78bgGjmB=fDF6@eRfg^SbjRPaB_fKa8snzaSJd zO3T`(S~Z|$>x@_xThw0zF@}VFOR@=EC=q7J8HYcINFf)?ge#{`OL9L2+RKeWVm#?c zdZ&-p#>GnXZ7BF!RieJwLuE`fk(Oqbv zMGWy&L^^<)Ui7D>v|iinoNN_(MO3X|<)zLNbGF-?!t~KhA4^SOsi|LSbmMl3vJqyL zAAISOoE=K^fanWhte(@#N0&GG6%isV9o4qPAx(DPI->p!v0A8%Z2HHWc}id|ru8OG&jaLWe&`}Xhp4|jKs%6iXG|-}e0WD_ zabTp8z63u@zDKK+t_p0((O1Y|B%>B5m@i}70z9LWC zvE;F?7{VPlSe4ejN*UJ}W=IIf^EXUqRIq;SJ#C}A-Y#_4TO9(oi+M>#B^e|U_vw(kToplOKce4gXx)IG;G(cQ zw2mKK-@)0cUUQ)#BJOPM`u(#f94d-kW0CHQ8{+G=y(n^*VnfW;t`cH2f?}s`6Ng+f| zRnSeOphn%?XN!(#baBVMl}7W74wux8R2Ps`8e5#&TCe+HDnj=QM>SK~&v-KWcnRgr zg&RxVF~p1T%_jV}hgmm*j&AKADIJSbOAB#z(!b}rNL#tLg+H9C>T2fybh$ubvHqh9 zr6?&LQg-(Y3(o=V(J_>SVr#?CAC!8dNXgG8kgA{1ms;1kMma6CbQC>TmMH zw1U-Y3~Lt6Wq9!AY}7H{H3pb!k_YDZc)MNg;Tps{rQc=W)7T7cEu5>a1T+vma@C zmM=?nIm7YWe$UlRK2CaL(#!HM{*|z5=cetdpWZ1WW5W7^zt#MBW$EZGnzs!|7oZJ4 zr@jHf?RT=}k2c1QCH;Q+cG-SJ(@otE814Q$!s{#Zh#FUoY%2l4JK=(m46f-%?UljC zL=AiTg=;z4hBOUFPTuIRJf0L4so_9QVQ|M1W7T=1i$|j| z2BEo{_i;x^(C|ehz!oO3;kpt?C=7#=K$SS$+@f(fc}ZXZ0NM#)z=WWNu8LwKGW&I@ zA|v+2wy#1tRtZ$-7DbGl4U5POnYk4W zkrjtr-fw%VgtYn(GPn>K;@H&a0x+iGvC=bPQwX=kO0lu!(S^gKEka;H=)CCK?4t{S z@H$L!@Solsii+V&s8Mu&!9Y&1sCNzkd96q@WgHHmDc+|cs&8w9a9e|KfdT-C zg4i@v1{xJEMP#8bqe1xoR#i=+T0R?_)sd?&X>U#}fTe*fG%~$P$P?v7BsBb400|7i zCYdk5%}eR5DYfV=%htVqe2HJ~(l3bV&&y(8BUDo_oy(->*6`>ir6?Xc=jj~4iWKgb2(TbhE&Q5J zm8e#lo0=dr<6OC1+fq9X-(QI|lL=DEE@FB<+Cq@QMum3pV`$zp3kJ^@b2Eu7(hgG; zO;A=B;9IpsjPCW_5QN(J^{&kVuB;S2ysuSA;klM7Pd z`z5QMo>*0^%tP%scb*K*=g=Xz`DxZ? z*vv|l%e2nouhUnVXx=5HNvp|GK=PDAqgA8T#A~pPD80K+)T^MmfiCGCs6#HSRB+(; zEc>sc;pO#V|LGasp@n?;3c$#@S^bB$3=S`5gpKtoto{j%~g*KFhI8v8t@<*WYC-Al1vs@%w>l(q12`r7#_Hir~I-A z0}^tU5p&i7zyoQ|k51J5@keU{O$`G08fgH7c5yMlfk=Cr45C7$IUDMr9yIt2*Vvt> zJWZ5j7Zl){$8jKlh`)}Eib{YQD)O=-^Bh3fCN3%tAHHNlp3@Mr#-Wp%)nvA1d>fGmr$ z??*{jnGsxG9Aa!TkKE*)@PaqZCM6IQYz2=_cJG%M*Bg|TNTN-;I?yU z*%xJK5<5Jh9|c}HGH4h<>_phgPr9ldjccWga}PL)~fM$v_%$vdN|DIcU{Rd zK)W7QC_ise7rwnPsTB8b$Qw96Hu!LCPa?kb@cL7wMbx=GGnT7LM_y(m(l%1#;7J;< z61LYq+t5ZxPlISEVObfx2>}&UzBsRdoIM}n-FEauoG?|vJx+YNt-~j%+oUrE=%5I9 zB|yb4e08b7pqj7W|1y#Wz1fCZPiMNjpdO^1-N8U-?1N1@i)&mmyVJoueST5g)pB|zsna6e#lpt*l`^L6eIYXJ5sdZ zseaqo&D*!^JG}Mj2lpt)ed4^6PLQGw(-3T1dNV9TjLK+*ze>4(TJ&VYqD(1I64EYR z*w>R*v&|!B+TfGQ-hU7!;QXZH81wpc;Z=3{)*aV2Ql5!F>5(B<{6rc_A5+Pf&L`Td z$(Hy*(mW;VxSyQIkOLIag!|LYA1aVyzIVrI08P)!oded5qD;gI`#C5VS$0QCw;}+2 zD0k{=e^Ckf_>oUS&$PlbQ#e!tKh)x#IvpZ>%S3yqtQnH$S!~A4M2y-9=$`8i zMuCD<05ICG9p$=k$VG4_WBOY~(a_V4MQPYqr%Rne-C9DubkhZGzS%v4OP5}LR>W~X zpf24a5R!Fu=he2MIJ{+BSEYW5O-<_`TG=FVq|^R3&tF^s?%sG)(Fa7Bc^d)1@q=q# zy62|SQOiV?q{WL?uEs6tWN4Eha|BwpgVbgQGqtB>4Wome?Fs&|r-TP~UVSzWRaL7D z?s_V6*G^VjF(0rS4!EGO8g0^)@gw^{rzW^ZB>yvZb#p)H_!kvPETl)F4GmC6D^g4j zwTvPcDrKLBiI9jNac3;PU_(_>Hhmlat~0%U9KZ+zdC>ZFK1#-?iL!P3f6%6XSfI0w zBCqC&g*$!$a=kt5w-RRyDD8xGYv6xuYTJ4tf4!Wkr%r8JTnfk_vbK~y{CDuJR!1ao z$1JS+i~in*3Td+RX>#<|xn%|*{Sfq23chqR3hOyKnvL=#R}mJ$Xf+{T1_}c}Y!ec& zcmi8A+bPTTE$bgtY$XdHjn$!j@2z;!pNzk7n7TB-eN~2_6#{85sk?_-qu^80UL5qR z%Sub3ic(C(VMu7^7oE&C{kF?iB$>ns8&9R@Gxq1a(kHsGS&H1mNYq{lGEppKo`M{$ zK$mU(Hn{#nbON?Dx8xMzSM9P4`$oGi^Q<2KthA#yX*2^WncUle_E2b^UJ1#5ZnYG{H9g|0X z5)HfSAqhVt=M^LkMh|R9U-jiO0o?DXD$_$CnLSmj=irehbG-1fSko?O;_hIr?}g<4 zx?o$CAN?H%g(j%zek$WrMIsUhx6NHJ-1o&yTi*PR808o%}Q(=ADD<*vBTrjS21_J*TKy zuC1KsTh?z;bOFcreAih=6SbCjyH4%ZilT-xn1q3jCpEif`|Am6?j1B4Lv8-@UA(sD z6nFXJSgGcE#KW~OcYc1`cXGF0)?BRUb4fxS*4JZ1m1x&NC+>Z^oteYIGg9zM41ot2 zEu^XEsTsjXWj>S)g_I&6`NDBoYGBm@1RL}okTjs!TG3@NOs^~)nirzz=9gr*I6;l_tcbJ=k^o?`8oBZZqM4(o)=ptxs%1WO7F-J-cQ z+Q|_x`z~ISdwR=2h89Xs?xqUGMz$(PJ6esGtLn;qqXII&ebbhj#xfu&bB=92SnA|k z^6Ap!4GJmVdwRXvlFg*ei_P5m5;!uq(6||6*YEezWogl&`0-a8PXgT)M^9`HfH&F# z1GXxR)E|{<$_d+0^|$FSRUW_EPbNjbPLKOHvE%U64s>ucI zk5dL!afGtyBiG+mo!T6a3%ELCBA1us@->3*)^$T}%Gi46HV>VE8s3!joOC<3$bh%h zP1GN;+al$#2&2zCW4U#z8l{)xyc#^d4EZecWET6meYl`{UGI5!!U380&XyIg+z3*Y zZCNeJMfLjEmriP?QJl|4y|P-DZ%JE6HKKLBy~ta}KH0W4!cY*CupS_unvT=7#qI00 z(ZIYqyztl%N**V@kfOZ)gks8_r05luhN|1ia5HuQ+=I`s)0*V3tjaOKnDB!Om4g(5 zID5#=zzIqz1RXy~ZSBYW#6=R75!l+3Vt=n2l?1ztVU`20>t-a<{tnP*f|v1^%lU;S z5=EvfjPb`_(_s)7lw6oPruVy&^rUsOo+p-x@rxxS2hmWj;Go5jVH+hu5mWjA9LFmP zhCIeMnYrMBveaY9c$mRi2}EDN{pKvlbqB?7elr+dS7LiL0V2}U)G|O-xr(>EY4y?p zBMy3-I1aIFT33zE#qLMvAgo&7UgurUCeiF12nFIvi!vMP;y?i|3;nx~bl9Mf3$OU) zb1V4kb%lAD%8|&u-Y6b9VpJ5)=8Nmnx!>5t79 zFP93u5r3$*#|DD79Z{6uOYBFuX0IObjc?St9vVP1?{05NJ+JeD1MOJS6h_N@sQE^@ z>XFKE=!S0nP92-rw}z^eG)3mZoFQ=T25Jf-!M_JU6N;#_g&u0X#tKr8+q{X<*G}i z_G$6NhfN>+PrGTh*t~r1nqgK><-rWf+1|;@*oN{rw)r+!AOIo}8gy`vs(dmbRy+aY z`ZtpUB`44rD`$R^|E27zQ$D=~R5rlXO`U^a*1i$fIey&cZ z?C##v$^AXd{}mF?u`U#h{V8bp_m-GKLHJs!K`34)kxRbRL0E&shM11ib37S8W|{?uuIaxp`>>-Z}nJM2t`R;}KZD_8g^VqaSB-b&4g zsRL}X&0z$j)uSi$FJDy)8`@1rqW*Nb z!T?acCq8UCU>%-~ckHhXS6S>DlrfIV?xRim47pHUd8{qD_(flo7_)b==P}co^0@Pz z^Oxu6N9s6dM;~l0X3?N(X)LFyVef6MI?W&%L(tjBrL_}D_JDuC-j z0x|%2oV%(gmW#Q4q7Tll0k>M;h`_UR%ZFNn03uCuu>)^4*pSCw-+fj~29E!ENqn(xKZv<8uqV`XUf7IL$TgO0o;oBfuHZ%wtdenXUxk~SJkK4|2hRN#S zui7JjKc~ORMEv^qL;aHkwM3}RQ>R`6tN#1rpc<&jlN;i~$ye>nTJ4!cHvk$bg}x7D zAgNtP4sf0$Py_y^&YV?%Bh+B)Hl1z7t@tdHiMjkkM?WQB{5|yJ-;b_~sjL6PS>yg> z=`m3Zgbe`n_R?bN|eRjA0ls>dXW@g#yV z&?apMz{j4w&-QMV2jmW4U;pC#hL^Wqz1=B7xfpy6*aW5DMXz}*V-{%4#4;6qygKtl*mvyHY$cb2b(;(+RQ z@0YGmTKRz1QjyR}qK%>B02eTR02Xbb)-w0pr|Eu7dx3w_xa*$SXdAVVba1;b12YA6 zC+1*SrQ=@>zV)x$uUe&*w@Fq#DAU0|U;SiZ9QW^h&cFFn$#3rtg)1k(8ANi=nkGgP zXTY^J$2A73pT;N4x=a<2JT$`W9IRO{TYHLcBNmwtS5v?q(~3InUWnaT&tA}Pv3;#> ziI3%Dh-D$)D1f#tA22GcbLMqZIecvy(-a3KdEiEK1FT5uM`_vad;FGDH{07yhDTOX zw?sPe0iF`y<8_lcN?xp6$0DrpVKr(l*WII7TP{`QK>C16q{ zG4xag)vwBYG~kHYL6<2b`-M6q6%(^WBlC<2?F@!-&|0T56Y~kEJDPY@H11L4qaENw z`T0iqtSBDy@punCD0_JUlgi7chDX!!^-f0h_Wur}|4gj^pV3lCU-SxmS9(DRM4j#lViOU#xx3t0kb)}ozleZ zhPW6hg28Z{^0AgPcI^VOow@bX;F{^~Fnh77$}`U~Xb@V^DUIInKo=mIyOYgR@=z#c zl9sH2uH^Ej-XUyyZ+euZ?pa;*sdmjoon7!2e9~mMQ;gvW)2Nm$gr|IujvVTqW2h{K zal;cGbhwb#?O~$@h|r$0Zp;H9$^*3Z=&c@8S!HuV%?s)oFYr`$q(!h&Ft$Yi7)|9@ z%VC~D-9JYk*^srk5@9f-+s&d$a1~`cCq)HSyZ2@j3QzB2>3GPcfF=&Iz>-oV7Q&}J9zor>j=`vA4NS^OSXO@Sek@4No)A`jw z-pTO*Oe076n$=EF5In}A;HK)SJW$P|JZgI;x7jnn@+c2LCV7jddZ4dWyuvN=Z~~O* zp6ghS3msxLTw{HOVJ}w!%`AY<9Hj;tH=@5{Y~Y9&%gY28=f#4H`ijIrc|*W1(FbCy zaYIVN*|jr`NWXUjJ|^strRU_BgoLwDsmVFq$r~R|_k950o!pw_z41dtCH1j7uZp}? zYAz6Y>gDwQJr%$KQ9OtMTbOYJPH+$_s( zuWI&&)+J3>R*>)ya#q5-aZBfF*Y{iBI^A+O3}RXYvL6IBE1v; zY65h?kylbZ=eKLIM~A5TpwCm2@ zNA_(r=@H=9R_|$|+JucdKKBgrhJLP9R#}W&QNj$1GN`2&+Oo=Jo0-Okl6Ma}lM>p$ zpG;r@GXA9M_QwZ2aeU_lw?NFobb?-^jz@Reca6Qc1P88)? z;;9GaPaw9n&7S{bP48E3XT#e5~}FC#}Z*YA&qdq22 zS*3V>_5SpF*XPf6+wJqv(^8W8yxL(Ts%$Ns9L(itpt7pRH4;?|5^sb{(H)0j|Bt47 zacA;>{0DyTJdBy+Fl<6{oKxo5=3L}_N~$@PN;Q#lY)*4NS57gfQc9FWs5zhISd?lG ziIONuI{5AV{anBQVAr+ly0`oFdOjadLnyaMi3I3g>D6ze**wXgT8zv|AaV@`3X3K~ zjo#{>2P9U_>oNeBA3=9R`XPIzHl%jIYsvG=#F4u4>yA7YCeKUseS^=K*gj=F5~@fe z4jh3mc|xt7NEraz_H)5bFw`SoEpf76L>amC+R&XGm<@wb*)0WIn}Ll_y@C(g_gIF7 zSe$CaIkL@MfPoW_&iOk-IRL3UUSjO>G27|558okRz(6Xne8SZ-B-r44eV@*tk#h(* zoqYKFhU4=`7HRobY>N}#kM8fv8n%Ad?|TI4f&nhyO}aub%ui}xLS9+|dZ*sWboMlD z$oy&_vPdJ?J;(iu2tK5T)O{7~gVALj)j9fVD?zn@-&5Bu>Nfv5wzh?x&7tihdY`P4 zXYOp})F=`LBA^!6Uh?m)zx6{G+vSUy82jEsK}~r=)US=V{(S^zT~>Y)4CUnVur}^A z5-i?xYz!Zfna(caU*e`+RVIF$>r)~OjRGI_!-IIvC zB;tF`I$*}r$&6#w}G2&QUu!K)bpN=w9c<07G)xu)^ zlWh|DVWdV9TLjwyO9pA+Z6!A7PfLH@Tx`j^9Z~vSzwAt-?B9qozTE)mE=y{+oG-Hc zd2yJEXvLX>6&k-zo9$L*^*S`f|Lck8DtV&6HLIg`Z^u8qt+I>Dh^%=Zai=))ZtX7j z)_VVKQ)BiiD~iFFYJNp^+4&*ct;pwmyU(Mv&uUe-oHFeExbqkt z4Ht<{&M>Un_XmD8!t=d(U{rb+;!mNw3Qzc>j@v{S>w8~bn=FrxOUI?bV5FW|)6n9t z!9#{U+J7ESMi0gQb}ZIuOl-aVF}fGs*8jqB%zn4$cH8(+bpE3Ql7XG_N*x!q4I6&8 zoTYWjPqE3r^qGspAVD@*i7a5g%C~3KA55P#YoE$9ZqfTYX?699ZYvz|OV&M7+Ux4e zV58dLzdqr{Gig`fp}pSRzIs)f4)z!ZH=YPo@_EnvJCn5rNoHX2{fWC_&ZX^dqD~jK zhP&T@no`KPInaT<^0rpKe{Wu37We+vfMc$^N7owysDN=zksCG6hGkN8t+_5`KZ}Do z5wm&?(4{y7T4%KXnp$Bq)^k!cElJAjgGG;zrzj7;? zXm|FHH+jBr+XA&Kr@NQd-yI?$DNT(t!mFJ*3iirXWCl47#v`IyPi6G*30XNC$aAP5 z28{0@^(to1@pe3tr`z-GhUxk7RGXs}UIA17_HCA+jW0@hw~m%b{p|cB5fac@CA@kN zhEG1(9{Fvi=gmXkzTPg=6s`Xe07hEL9A$CyMR_Z}ebsaZT|iMsUTX>1_lo3aBKNJW zRUG;$o3G3gMiymH-#dOP685Gk(5+F@^~~1&jfLfIqf>pQCyrOX?^$$Rklr|4dQh$L zd+sZhcUO-H;BXo7uly3zcIM|lZ_&?6NB;@(MQ+rezwkVN)aH_L3XTS3xZKr8$eueV z5f9&vb6$-{!v)Q;v<<>XQ^|0A2eiN%%VN4T2K5yS*;lPpz@{s|klS*>>lM#-hXT0B z=iX3Oy{z%B1{=gT_o5dLLK2YJlKMs55OETD7{sH)?G~6y-EW)>xL0$SpJ6k|I8Z0? zQC>)~le;n>vN+N>f7yJ)u9O^3?Br2V9k&%QhB}%HX&Px-WDG7jS;-!zseJV%p8?O2&h?)cGHHIdngXSvI7#H-zLI z5B@M=Gj3g*_dJz1<`pE}?#lp3y~$gfM^7TodGu}MWZucF7i+aMzF$Dp+0$hiFLln{ z?{PaG(fq^BGnw&$5a>K&v)6C54vPp-^-jbIG)h>Dipod zY*7~AJ#;QST<)=NSip9oGTeD1oKkaQ{a%ZuvtRB$cjO0scbWAqPIz}Fq;+%eW$~rw zhNn_!T^RS0pgzJ2d6odY=@UXJtM_|4gn84^p$pAzvJQ$k@DzxDksROQKb@i*}Qy$+boz82d3Yg%p;x+ zxu39Pw6)UnLKbHD|+u?7zzI!qV!3Q?|PDz=2T$0yIDg8X`#ycE(A zB|d80xDiU^#|d83xBvJ_L4a4RTY26s9g6&XwHkJ zN>Sb!I`*1G&QFF`Nyt4U7GX`UE$BJgD$j=Mg#ZY@Ah-sN4MO4*g44SMmDvm6aCY3A zejcn)j~t)Q$|2yoQ#!zJ2lP~QE2%#sgbn+i;+{PnQtq%iL8u}y{|lQw)b1{~H~D=# zTjQHh>Vv9fgC{d~Y1qbcbjFIg%DE!m>mu=cl3uS?2LmRAWIa%FSb;EQhr)H;ePYviOSUixeqzV50P$~w_X5;fdbFTh*o6ZYA-g}FdaNGG-|g}Cmixo}YKC(A z>O5&R>3P`TTd~mnLKJg%!ZhsRgh`ixcR_{ZC!kM9z|lt{%< zOM0mq2NChX$sa!sH%iPp&fPmR1`vjwMsHUa7G)x>J1zPs8QyKlxGs-PKIzUAU*p`{ zmPA3R1e?qsO?pNW*#LbHhI&w^s@hRub2MId_-SIaha7$ffWaN+niRuYMy{^k?7DYG z%U2#!q4@aD(TsDhmtggA3irG*wKJ2|SMFc9dfw~f-RuMIzXo^uzg=%lkNaqRLES67 zM&ZczAwjQv=^ZxH^twOVZYdY4#0D7vR9>0z&<5ujxS=USaACCa*x=xGVgb8YREH%o ztSk;JfdEh73s5&h#0YKI2GTzTVICUAFCqasE$zxGDc)zMh`>1M4@I`dwhf>X zJZ{?V3Bp9#YtIY_Z$G93q5Ji#F9yiEau)GBXVez5q4yL(5j5tZ^$qaTQgukIht;8f z2lWv52$TDH9%dTRV9>ALFeNM>Y+=LU@R*T2!urp`l@)q5^Td+F4TE=I9kXh`pWx9c z_@*@4koA0os&ZEgZdlqOB}@jy*ZY}G`MPKl`?H+kgTpU!&|o;!?8EXAl1ct_miC_s zLS2oOA6IccJA-dHW8c~`)v+C0Y4m6I+^?be387hZ+ZWS{5*+;I*!riJ>VV3Ewo;{+ zJD1V6!c{P z;z{1KTQC18ZkFTOeS?bEvS-9Y0P*?w{` z5WKGs1aLktWo``CrHw}9^L&?2$~xk_9r3uUP&lFV^EwWfUGb4%9J){ea-JQ%>2p)|%XGo*J@<*qp#cBdb{84~N4o()hX3g`%Pe4h>qw@hC) zVu9|ii`mM1+ft!;pN3F|G;JPn`aA5FD#Q{{`;^cilrJN7DZ36Nn^ey0LA@q}$Kr-< z8}dX5a^NcJ(W0!+0%W_@DZ5P<``fD03%;Ro>K$r2?eD*`EIWCnUM`G!6Pd=-vFc6p7y`>bG z0DxIyNS3l6X|dvW9)r078(N2l^qqsdTR7;XHrY%kP6wKlFPhpYL*ba2O=(Ib0ls&s zi<{IpcH!ho(f%PQmb^U5oz7g>Q+zq|)ZE)b1rmZ6YA;76lL=Vvy&_}uG95x>_r3=8 z$tc9UHiueMRm|z;N7o%65Dx$Bfg;a3@cnQQer)^m2)wV{@ivcV^$$aetIOeO7k4>V z_s6csxa{f`w>^IU!--BG8|{R7oqxIzP}}ymEeKkiGd79=Z@ZHMbqs^IV4;mx#VQB` zc(@jQkERjmpSo@C9Ac5B0RdR2_Hj-@LaD*$Vl0Wu*NzH`X4nB_XdPABZPJ{`iZJbX zV9U0ldh4v|Qbgz9n3MC?=LIc&!>#w}F6o@&>;6xP-7e=jNk!z_>y36biO)1C`wWd6K_zIzqn7r+)n1MHyXG3&EXm-wWGtR z1I|?vyII0>6q!LWd%wh2qrSDSs+`59i z%~FsoA!Tzu;`#+$G4BT7a5m9yc0Tm8Cgcc~etbbQf+;urD$sq~$2`o>$2&o#GkxEg zP@bRPwfIG1$k#Ff>79qVl^?NdV$i^vh}ZJ+RFa$t9(s~s`1KX+9{@~+A&iEvf~Z-G zdP%P3F@$4s&;mL?meC%{klJDF3y)KonPt~!UIRz>+=#tKOZ%JeD^+oE@932mj4NH; zSH?l1x1C-q(P~xGw#8{w}KDd(CrFIjTlI6@JO5Ol`CBkj}YHel@K9`%<34x z)L(@lmGH2tMycg<&?^lV{&kXy)KXS5aCctDw!?g#l&fQFEZ7Md1C&B@5JfwX3IcDNCWe*9&fODfGWOO(j;4NY)kc0d6fTb&@>>uT&^>rn59A(RdhW=cn5Ado6fz0o@Z&F%@jQxWrn=#B$_v+n6N=AE%4FlQSKJAnyPT7f zfRCr1vt`}t?k$Cdv~dtsj;dg;?vGY z5Hf#9l@;7<`E+w});v9me}OIlE)nRZBEaH>_oM7HMkhVBz0?7Ws?;Oh;zxPFy>x`# zY3~z56P)H2IY|~4E;?n+hUjP{ItK_pnS#MN;uUFobGOott(S`}&t^!yviLenz|*Cc z%JXu`xyt6JV5{2e^I`yS`60UR${&2>pU^9lIX3ruzEfhJxL4XIR7(5sKV-yBR*JCj zH*DEZyGUP&tN~eltnNeDX@X%a9-cd^W5f}^@doBL1F16_dh9*a`e#U(zw3@mF@@7< zNzM`R5wf=;B)B0Cf~1zcWjZ^=;wbNT0G)_#w-*%IY(TpRX&32wx?!oJ&2->MAl_x({$fhMnyoJ!05VA_r_xhyVpHSa zAWvt*Zupy5%$#5T9U&jut9HL5(CdY<^q$59$;k6}liDqv5aE&5c|4KHWcH8ayOI|79rb@+Io;tx zLtQTpbH;?Pj!XR=zk2xrl|Gj^?!Js0D(o3;i5?O1zur|+`6Y_rQqpt$PmgcO-~-L4 z=09YvQ%*gJD;DkSqO_G|-4xDy3m#z1K2hXYUU0K|u$j;Tex^Jw*k*^~sNMig@g4(D z%qJgX!9(07*Y*5j8B>2K7CJwO`z6~LBhwu7Ra6=qz}_QFZ>S=MrRjwkuIGvraP0{x<%ZyFwGW!&Fx99vMYxc>TA`_2ZKuUd} zTGv#pIR{=YWWvd!>kP?>b{sBkd&vlo%swa<}dcQOCRIej7wQH{R);OZVVe z0K{o)WQ75IT=h{wztPP-?pdZ4_i%N8=A#|KfW9okS)TyS^IlJ6)g8DSDb9*VGps17 zBLBDAgiZJI6}RbOoY=W|Kw^PW4N-s7d$==P7=k*rnEgx8Q5#Yjw42?Wyg7IvTU7gX zC~QN=lCLfDSKJ04c0fS$@QTRE*Eo1{p_r*g)G_@Z{=R(AscLtxMAqO<&nzUH-EQz>YhyZW23^2 zIismd9%seBox}*j7LMOaU`B^kbMP+xV}!G;gZyL3MxXL2@qT*u6C}^8+@m^2MYQV` zf@Z5kg^+T%>^)w?X_1a@-9-=6S3q6;zF}eI2v!Ax`)Vu;98*xpIm~~jThwcjz7Q|H zxb~ z>4rOATHS)wrhJ^EO(a>t$hwUPi6UaPN43pqH1~vDN6U{W!$yC}VE@v><)RC`)+`26 z(Yo0DN{M!+T*&<@A1J16!?a2=hb(-KME{<3z-&nngDei+y_0?KBn1sbk(Ve*K_y+8 z@<1Cht`a7*vykt4GUda4K=s2(RysfoD3{^TM~zdsDzV|a{G0@YC*2Jm}8d(}=;PUBEwfwaXP)139uB9nP*E9V%cl6N=B!E?o z6P(STwA04hy`vXi*NCj8eTwuh zvh9jhlRKwabnfAu96aFBh&lUWAQ9srUz99YtJ1Wh!lV4!#gwPsR7nSra9H{9>~Cs5 zgAPu+u4^NQ9jo@#XG?wr++0i%{GAJ{d_Xr)Z)#4u_dRRB?$X$G$T_<9C_ZGSa?cKX z>NE$CU!yN3@$O6B4~7Bh#LgqgEElIm-X>P6;m`~|-KcNv1KuWdq%%|ZQ1V438xf@! zZQsXi9xTYN??5d0RkMlF@U;h=3dFa!LP7=38Xk;|8e=-2$#MWCp6BA7uI8QnC$Uz%I-@9=BH!!F<=Z~&Z_{1ubIkpHj{Ps)*Dh?K4d$0N;yNf z5V{>yICQ%89a_>)DHl~GM3^nVy?#ZA>E$i`6WRU8Q>b3@Y&QsuLx3!(WRZIuCBT~Z za6rD$b@rvp@(Hfp9&t&*Tl@I+`$4}G!Uk+FYC$|4CHR%zE|2E>m zpaQhb-{Ly-62n^OzSMkXP+)>^-%zyc|<mv-C*MaWA$< z-!tH0ZuMG|TP~=0VM|dUnGRPa#_?9c!M!_Hdrew5qcUn`laPmxUrsK9nv;>gyO_|H zp4?b}p_W0{&mga$%nQvOh_x=z=s8NK>)x!}m4ld$QxHRslT8}OvJR^m-Sn5pKnij* zG>AhJ_3_=deGmaW-NT9uw$ld_UxrYQt~}*$RUbI9Ll;K}cJ`lJ;gjB}fqpcnf_uxm zgKqFUo<3YZyWk(-efGpaM6jnM+6&ahq=NXlex&^g7?jY|ogAE!f5M3cdem%n_Dm&L zeB|7koGmc&ERP#gw-f#8z~tk<#`shZ5x-Ak>aaR31b2AM_kXz=Y@Fy>-tj04yS8@5 z%+NC$)iNw9U*zxc8Q=@x#FT*RXphNWMOrt&qlxM!Rfcbpr(U|~SzIar#$Na3$~RrR zS|drUo#oX*%AJz2DmX=47WccdS9{{`ImSM`TTkv(aFOCCK0gv~sL~ah)Gk-wum4BKUd~c!DtVrZxW5KTxucA5|TTU1+ zQ7#5o9v6vkCOk*TJ=Zuq2&%)v<-2L|Qsy8`wwERUOs6q6y$8o!0ZUs4!436Um~EPs zj;S5eduCC#!usaJrSl#75d4DhgPk7jXPZqlIwY2A_281z2P#WW;3NwS2r)9Ece;d2 zD(6H;**x?yimiUjJpOQ>K0ufqF^89B%T|v?a0zj zK$tvT{*e`Z-;E*MHuv!sq;mk*NOC`o=n0fGOuoP`=OqcqB0CPyC@GrIdH9K+Nk*lY zeNx<;X?#|a*qUcFRFN1hAT)dDqv|!OGcn&hWL>e!yKk#L0eeo*kRqOir zJNuiA;sGtNErnvJ0<#${%ZzF5bJ@8a`{!dUphVZ9fjNp7VdCMRUh3c8#>Z9!CX5BX5W6tB z3`PU|+w91?Fi8E!(+?TC;t*?FO@Wz8>TN}ErUSY=6s3)EiPZ{7W1@diuUL@Hv%7#E zn)H`3u0JWC7i9PukB+krjK9VAMo8a3(S|qPt#%1WB&u`uR9$vh_oPCXgRG~oa3(S( zw?B+K7?d#<8gCuAN9Hra+sJF`=jG$k+5GGE;or!~J1lhMMtJrllF=_9xHpf!&IapJ z!I~R9TN^eB9;rvz;$P*J;u;|LJz{y-a}O_IOOBG9_nEzQZHI=| z0s&dx^dvncbs)WSMF0bGZ=|IUOl03xzyjGBQilV7(b4a*nHYj}bw9YroYd5txsJ?Q z1D`sI$wy45ry(*l_0t}&;A{QzTC4-xR?^(duYcH|d?6*DPAW)DK_`W)99>BW2Qd@% znJ*of8y&goEjgNnXj98PoyS4~4(>ura=Ah|27)Lq%IMDqGrsSiB=fxofbSes9t*@@ z;o)i~WIrly8*Jq4L}ZoySuNu(>|yY*#l05k@3hiz&H*Wk%odwZpUTw3fX>r-hqDEK zkkMb+s45P0Romd8w_&0n|LdUAGemRM1>iiDZ=Q^vAL9$phN#k1WXHe*4rn$R(w_^; zazHP$q04a~>D_XIL4`tO#U-2399-9CDW_W(uV;UfaiO* zz%ZRRe9TZ|tl%I8G{6IlI>6hzgrvL;o$-8vn*!})@akSU3AyUt6nE4o)>2{h%Hh){ zyj7;J#VsPMmW4Fs#!|Q0D2uUZOu5|oF`n^kfh~N+IGNXxW;TLRQRZsEY}EW7OL|_Aza1ZH5)hEtUxD%D)7S;Ct(I;aDBD_vPBL!uyOqGs zn&RllCH;G}`pQ}`_bNvkqiK$DKt81N*ig;lGh6Qip+}YaT2Nyta05AXm6y9QUULgAuxLB(apjHCem6-9$Lq+wO zgZ0**xF#lIepg`XPPNz5%Aewx?*QP#E8-t{>+I88z6OP#UfVf84e)BHS`}=tJ6FLg zsTkXQzsvL9pHB|}m3kW9=D8VYA);nErSy};eR!()xWt3$h?}#&PBo?0J{_!mmU=$F zTi`Pdv#(qN*fS*^pHvA|CLLmnZnM(B3dxYQ+I_%*Lx)Su zg~Ow8wFzJasxZb(-cksCXn~pZ`=AP?Ipg>VRntRHCYru>iO(&l=xv^A`lk2$uCBzm zUK$+pPR=1|H-Da z19B8_Qf-J*==rCWt-5m+a_Vx;LKtGRR8wxJ96%0jUV4%{_%zQ4{9wp_b_iGD^l(jE zOE;%wjt`S;D3Ho0fBn(ZHAqd7_mcyjAVGrsBPne^VePVFzpXc|36oDIKR>3n8rM$X zib2i)_N1ErB;%-VlV#0xP5qDb^PIf0%|=!Ws0eAUInhx@pedD zvV+UZgH?M?R5qW67oW^1d|r1xAm)u&^H%F`9Ywv8JH0j?k8OxkwH+NpEtB&t&UtOo zm2$szgw`rME4`mUN}llGis>RcXVY4swoiA?H{Ao1_FC<~Y39Z>*?&!N-#iS6a(hwM zR(B?vD>2#=#l2a<4wi|a#7&V?DSe@-eQ~({IIsSQdwof^&S%n7==b_OOZrm+`}PM0 zq@~}nKn)a>3<$9M>@=;_$NG742P$lzUbF2#8{JpsJ$Tz|V9(p9vcZf;aL7dD!XYxa zY|m)Wd#3F!YG5mEC~0``8E$xwFp#2Z*J*o@MB~3LY*W$J8#Dnir9phyd}{#On+UE9 z9xfcFE;^LF{xibCjke?r58YEPoJ&|J>3>{3T*@9^RUMsM8~KVG{p>aRJ+S}B+~{&! zhjegf*IB3@71oCL^QR8{j2>Gkd9j{8hI)I$E^k!X2k~PJeVPM)&O7ky25OCrG69MM z*LasHWuGm-m52lj0X9v!e}bpG+u@ zOrA}jG*Fw;`vMZWIjMbA(mnSH2ICsl&Wf-=kWVZS2@HCI>%Ua_(eVx;f)aK4cpQB2@ z={q{NhnX8SmQ?ncYiyr;s`h63?;wsX*=Q~)vH_|s2X!u*jJHouzCAE<;$2GMo4UL2 z^z(-*ZAjf~ubk57*8je8h#I>ak$8@ zpv=6G$-KzPd9j#zZ0Y>%qfR9cfx5)`kt=U}Mca{&9J{7D`dB4qLSy}vvHF7Ng&8Y>LBqQF zLTlYPDsKv_(tea9!X--t5hcD#>7X~!$OFm2ATayb0326&`t0XrF3X-0usdni(E@d#C;5u`EdOH`FI(P_o&r@t1B-5 z*gQg)cE)(Q|7ZzDKoE!jD+}SS&|LBjD8}D=PefgFfM4^SEZ8f3mGo{o3H8p-t}iQQ z=FZ&0$TiU1eNe`;cTY#&bar(%N0+EhKzhbv)7Q=jWb=L_^Sfq$vQrsUxM@VIt z-?}viEQkpRA~;lmNcu>v$XeIQH4JD-f_6rO=)~a(=!`kkeR5GU$6@3CATKzebwm>U zzB&mNSR%Kf^pAZXj8UpvL;etY`|r!)tOb@$=2g%gzP{#I{eKB zdV&7Q=c0=xYyVF=dYdNm!y(o`dhD^lOO=29755;vG`w@>X0yq9o89v1X8_mG|0FO_ zLjjEh8g=KBYl~i>_&CjD|PypcG>)WA4PRVZjp4t}M`(EF3=fw*mpZk3#(oF%5wINNd0#I* zkLUBL_nublC)fhUc)pfhfrlKJmLgc;>ZqDPU_pJ%KX&x9_v%tYQnpH~al;^4Dy$SH z5J^?gpx%B~$_6N)_-p5Py03XtxSA;-u!qC0Ze5URr#v!g zQacm*Wi8i!sssO@Je};mrgo|hCmg30y*!8l4Nk^$i}r5(5@6~>qELU!4hEVW%PdB>Mzpjia`gZbB5oEIxPQh^*Np^r?xD*QGGw2~tfPExsT4Y zay0{T`!k=3Zs{-0c^}IT8$s>xI=mA(1e-{obf-aI&z8GsWY&YbSfuu)AZRV8X4! zBp7Fg=AVk6#=M+%nhW`C)EL)NmqDk$ok=l=nVp&uRSZ#~yF(&YzuibU(^dOf1D(!E zk~xjkuS`2KmcuMlYaIM`8*;1JQYKh+m7C|BOZk|Nvl}cZFF^hKwjc1~|M3zgLQEkA z^ug$Km!)#cwDjQ&`l$95*Opgw#(if9e`HPxBXq?+stEwme_ z>|3r7TN8{!HTaA30I(Pk!*CXk7S8mJmcS`jm=chAN7aSpW% zNB|XKclWxxL6Jp;FfBn4w7qDXSoFhA8^&tL@+7mJ~_E&Rj6TT(jG6E?lI;tsPRs-xs@o_p1|FHlN z(5z(3x$B5@fAxe_0fp@p2!T5bgXvB{ZMB;FA@xc?C33Q##>|8iXW~P+;msq-_Vc{G zMZe~HoJ<|*V7p$6{Ae`fnXfh2p+kEIr<(lMlXLga5B8?TrMSU20G}fC8j8pkU7WGR zzIMMqqcFT*sJZu0fMa|ON;%zEwGuHJo~84RZBU8rGZ`kvi__@7i})m7FAi9sEjRtN zxv!s39DJ0sC^gSUsD@`_WoYb;Gx6WrEQDQNIcoCx+-f zI8=^KK5MH9mFd5z^V(RVNMIx7Npfy>7o`rI{~NpvPTZGZoof8a8y(q9$RZa`0)V$O z5WP>djolZO%OTglmcs$q^T+HH-5x)jzF&nL@;cRRRccQ61(Fkq;--egzugAuRHljg zb(xxb=`DSob)hYWtp7AulY+^o#GuTpWCB8)xOwG4@!P1t8wgEGx4}C~3Lkl2QT+GY z_5yTd1k$(IzXV0kjjn@Wy`|QWJ(r%nS=?}=wtbLRIHg)rhH9mDJzT7}zwM=K{K=7Y zUckZInnssF`r^#aWg749fnefmtni$m{(ZgUSq{TgxOtF8@bY;yu;h!iU%3OpvQiA+ zn>`!lAyz#IalmqXaKMZJkh{R0{H7uhYa1ubsepfhqEIU5qbwUcY<&WUQoYYU$Vd zSX3P7kGC{-VU*Y?_~a&)jxlvScPo!LE7li>Y^w;-H~I`lk=OzpHW#8VFF%VfhwD3J zfKEGp!Hk5-(E5`Rw;YZ~&52bWDQ8}KTtkcUDApHX?%2@)?oUl8Tsgc0Rq;nS;ooR# z#~U`>>DjlvGCz9Xt?MaGSSfWv|yR?`5x-zMf;q5XXVeMarE;f;h= z61Q$YWfz=(6&+**N|GV68*aSbtUmaARxNqEQR+)j;BR)qKjjXk(ekgN!&I9m-v|7z z&M&;LIin%d9N{M*$mCws>HRR67Ja#yWvujFo&IXQRvUnrij+g)#D|*!>a7qzQ<*jg zaJtx|(_9%BZR*rb2i1R%+4}R554kIpc5u)3@qHCp5Tx79;H5NE!~-?AJOue*?vvTta^oap}Xvm_NvFsBUch79rR68>7Pl= zm#qz*n{>gQ_@HE_8jEiFKLn4H;eZEg4Hj4gnn#3pTbFbnk!R$^u@L|?6wB1#;cvwP zwzSN%*aUSJ#1R63y68w`M-(lI5)f}hq=>js#6l?8e2QcvC6rC^$w@_#}pyD|jO@DO6e@PX<8 z9byd&<0SI1Wnm;yi$X1CGqA6qK;{jDKT!$i@hIu>49xI%vI^b09aD6(^0;<^ z$g^0<^cy-g&)5Je`Ctr?nEx3gyn@;D@=i~YWQbV9TpOW@)_jx$pvH~6XbxR$4eouJ zk@K5*)&Xp|l)Mc9J2mN$8CV21NmqVSkoEHXh!l7R{@ zyBL)u%Sop3-1c>p4PAkYhJerk40kFsoE|4V!w_rKOKC(LD^N5nXubO8whWH>ES-m) zt|bPcUkr%zHed)BXg(YOxhy;-?lhpt&r8c0s&l5%Qi!WkiWALD{~GW>a=$&5d4bsL zoZfV|M6hv7L~;NKU(4`?rlOII`Fw%JKX}0%I=(+4kjmZpfte9i5}Uhir@E_H2x<+( zwIL0H&kkBilBb*OId1`0Sj1H_*x)ka3LT;rpm`#ojJb6Hs2Tk{Jo;sA^l%|7Sp@o9 z+p=>LxCezRl1aiOz@3KP!46*x2MggVyX6aeqixmX!2?yclJ&N4LO>D{86j+h^I`r- zT+R8*#aujcJ?HS&TCAD3JJK{NDc=dM&z#vlATc-g{IQ%-jpha6eX#2`Z

JuZfAJA$Nq}WJaI_NK7oRY(gQZpm59keZHjS2_6nwepA5|CTtdfJ?7-I7a97m~}2E#=<-p_YrZrGi4x#zHmaP%~%<>+p%Oyg8Tlr&DE4ypsQ7` z`a(z0>}i`ZSM*=4Q!qDq!I!tTQe21N(KXef`2#g8MxizE3mF3%JUyxHOj^GOrrza3 z4VXmcKJA!>RN&$c(-k{WhCQC9dt7qtV5`RjDab$uwg0F;JkXknDP-zAJf>UA4`(MO zX)}$fAglo>3pQ&YIh$)dt0Rh5>+$rz>^w7YQ`Os1;;r%f-^OG22i`JLAxcmm+jiZB zG;Ykzn+1myLeAu1rcI$IYm%-wAkMMi5dl-)sRwCS7`~X-KRq0~o6$5HBGx0(kXVbU zuYIAAS-^(==(d&k!QPf zhoMacC!T7!6uXSmLO(}sQtGUpmwu@cg_g-adg)8&>#ciOwn9(=eGOC!-FdHVaZF{V zB)A5ao2}npo)hUmI>x5{e#0qP6u^JFqZETBQ$m;X*9Sces_bSvJ_0hE!*OO?nHvup~cdyC9? zluXYGUO(ccJngL|X5;$q+ZT!P?>s+x5Zfc5pMRk{{OvV2vu^^tknls!{UDj<)_VVB zjkKh(sOvhD^F1z5`#)J4lW;X`oIM#q?FXspX6!vx;FX@454ZNiy-9m!Eb|PQ`z*8{ zogHV%f&YF4l?@Q?sNu(u7|wsd=A5Kp0C8AQQJCc=chE=PZDH6IZG5`PBy+L=bz=NS z`@+f#@5~{9BKuf1eN@E=dtzUC0E(ZI>O`h1rRM0bGW=-F<2I>pa$ks69eEKqwDhA8 zVvX841_{JA7k)@kN^V)Wcat*k?jjI(=SykX#!0uwe7=d(OdS1G0mVq!kE%W-ne7_| z7)#*`*e9@-NFMmQk|~+>g7^o^)XhrVbTyy1)?|zQ2JZ zMd0C;!i);qM}|V8k^>-Pty(dY@uB4O9{$|NUq!RUqi1h&W>0S3{M5yaUV&pP^9+v7 z)|@_8UC3t^33zi$Jk#=Dg6%aez zBB@kk2}u$qE&n|8JkPtiuDP!B@^^mc^Zk79`y`l3(MnMcGr@GT4*~3G6~vCAN}^aU zG)H<#E}-*F+lw7LuX=|pfpRvnCh1sV8V8nkVL?$OyXmLfCzC}l;LD)-JiUr)J*HAScQ*z|6&OFID1RR|+EvhUkTB4C z#gBBsqeiG-jkT>+Y6r2LMr7upBHQ3H+mt7O_cSh3`fE52az@rx52}-BJBFOuK(#eK zqR|rt1Bx}Gpi+jjlH;7iJa2pYx?z(bf$N@7-*5>kr!JMIvHv2$4&pa$?H>bi+J zPgl;_h%4NHn26Dlz=`0|p2_z)N(QOS_Z-b-GEN-R8iw6D`0I-24(35lt%PwhMQRzbRFfhw7C6PW#r}buljXQk{Ke5ieZG(#TI&|`{ZL!oPGNzdN^%ev z52|Wyj&3Mx^Lb6$NJyBly3>)?s4}2A)qA{axWy3g^O(grOebQ7&PLr^hF=Bk(7i{5(G++9;JuiN6=(Y>Q}7joT`rH<8vv8Ql~M#fhs%h*VjxJmOrGeqO=;ZD)q zA@!Om3G$!Gr@?h=3sZhCqOt(qud4@K3khvdU^(r87K6BPesdvYRykq*bX?!?*-~yC ze!te}p6komxR>v~_`R22>TuO|I`;CT0CxG4QqPN>nr$6LFxe&;k!ipw-+u7=Plj8t zTfYKKw;g`_8?eRRlYl}Kp%&3J2)A=L0F?6eiY!`BI!4ON;^%3?C5jxwp;(2O*2^$G z!*ClY>#Yrco{&x)cjhM9@SXA-7G1q*1l!Rcn{Fri?}j&|=MrZ-tx~Z8ea%*lKD~YE zl;foi4;!o8P`P~}H()?-W}3@R+aH6}ej*2DK3IWd4WKU1Ke`>=FjrF@{*m1lX3_HD zD#esysgPGzfvTVy@^1!&0j#*DmcwiPQ6ZABGvb_Xk$3ofc#gcx*tZ%<^Z0+&B$qQj z6=~?(i?8qc|7i({eG)X1&h8vHOvty{X%D;2R7*v>Q{UY-Il)Br+o=5*x--00mTWSWgBDiZni|ldY*{+6zGzW;Hnp zpZ8`!GP=!_MQvdczyb5xb)$DTT{}&i_A0(H#QJ8#|zA&_29<8A8(6_+jn@aBG z3vTwZzzb*pcm6;?zceswaor+W*qtnQS?Hw^v1IpoBhj3ggxmh9G0>swwsDe~{@g?; z!$PpFEy77o%7bfx5ZrO&auB=QSqzvkB?J#(4q1yTtfNeR(`LKy z1V;C$aj~@)hm;W(LAYSWO%SsGT>1VERA2Dj5ZzYNtmXxEadvs|mMJ7d8 z$luJpN@%}wESn?ps$SOu6LQii(w!Q*9{R@JW{jcUS_CNt3TJ( zcL)lEiq?ac`^_rlpVRe&0T2pQCK4{-&hwLqe_0Kj#=`mu{BcckC$3k_H7KyLXi*n{ zhOyW33YrndR$pUB^o@z4IiqIHBPE?>pDlLj zy>vf?Vecn-b5l=VtzmCg7HxsrdXBlp4GEzT9^=tk{b$YgjTfhOCnhKK-G7S5TSE|8 z>F)AiiX;X&@v3-Y4zt@XlJR=JxFophN>FSU>Q?=Hj<|v{qgU^j-6qTfynzG0UDf2O zz9of~fWRPcVhE{lYTfOfZCQh(`L@Sg3B#7e0IIKa+{m&#U@H0)^|^H?Av!Kj*fA+P#QT+LX9hpabB69mLP zln5~k6`8+)DdGIFTu~@+y4x<99Gcr>eRQ5Wp#mi^J@N&mX`)LtHso}+$b36oVTUMS zp9N3kT-mQ?8`x8m9FE?-U_ri}u~&#(l{sml0P{7pO#=#$KNKR=w-2`agSDp zTrG`#YQ*!VX}$~)Adk^+196({=YlF6WTfjw^}f#RxEV_U(`hWKnyVQ>NyKE-q_)qn zu8H^oB`d!Ez}`YgA2~^Sfvg~HrQ@FjI)f_A@(|3VE z5g5D>(g&fhBTTaMB#ieBJ4PF!OoQpI7x2ENKid7xf4+YHsF^91G?JuWT$Lu9+<$v( z=9XI^mw0nU7&<;+s~*gq!nLuGc%vbeKIgrG+u;7eo*otKY>Jayx#Z6p)xYRDPTOd6 zopUDuxQz=KXK^q-(JJO^q|EJfzFxs2z)H9*_q^SXu13m+Dl_HI_42-mWSZ`-K-Zc# zdP1j~l}x<_22ycx4h{N0>QQD&T1n!jT-Qb(L{O+3I5bc}y~@9wInWWIGc6BWo72n- z$F5b7Wko;L;LHm1up0PI+EF+|e>IPAJMR_sub~w#v%<41)UD6Hfos`WKWR!xQHqyE50^}$?F+efs zxmlQ5K={~D7by0i83$AkG-xOxf$PzAApxiOx!kN$y;YAXUZZ(t%m<;9zF&Lj$or^e z4r1@@2T9$BC*C^vps4{CxhYv~a!r?lcMOj}1g58M5zZw;#<=BX0NY1Psx{F$98{{_ zCU}l;k$Zn8&1RX&Y^$^F=M5*!i*wckEc)gn`Xkpth|)=97#;uAW(r93?9VT@#xnKINap)1K3j59^YI63>zs)AUi zow-P&)LW18#G3`1A(5*&R?9ziypUk@VAc(8NVZwa7e&AhB5hLLAF*VSDY?K78N95MJ{#gM7T^20z&!HKp=ZjX zb=RKWK5$v!m{gbW)v=d?r+0RtJ(=hu$tS4a3vG1+##3*BfaH(ml@=yGC;2rs19l#Ug*;v(G`^3v-GC>=XeillWFPkaMJ zT^`JiuC$=vLjnSAY_SE8>!ApT-Z_j_$cVcan{!PMTRZ_ui?*$=}yuKwzs*jAm1(wmVeDl1>Oh*Ds{D4_i_1rHGvEND+nR}3@ZLY;jUXcsw83+@Zek@#{3Ji_WWaqvs4qYjN~3Ow zU(4uqwsSZ_w>Vbw%G#Gr^TJ3c9HZHQX!xttjFg{k`$pOUp*|aUYr8 z*r(p%<3prc%#^*N$N}vjg@i|-%PolvwFi4IkgeaLeUQ<(s&)_^ZLco&T(*O8b@rxQ z>;Y;vn;1&r1Y9-wZgR2Sc{WYyq5wsrj0tGA2yC$= zP$Wu_y&z)y1ch3TYyltqU zKKjzEN7B(6PRTNy2D_JE+k~;rCCg>k<^|!zRRsnz00x0AGd=#f)vWg!s0SnyW|CN# zRE`2ND1S`MelaL}k)^cP7qb}F;(O|f?5SgRE($w)Z_sar_AS0j@h(03&P(oA(3!lb zFMb^lGD7pK14f;bkKN*y_(khhLbAG!KOwYI{7We*(g82%x)2=q`RiTE5gmTf_#WSL z7riz7BlMHMA4oZm@kd@}o$8qICSEz~=yQX2Jlb<9F#$kef!Ie*i@53!2dgKlW)rhz zlFzA}-1=C;TDHs&2*^xm?NZx@Z;E-2jzxH1%2qO`9}m!aR5o7qg*V-0;brkb{* zjBGD7v9^pNsa5E&U?gsb%vF~ft5x~cq`I%n?$HXPocGsw%=^z=##WCh0}^^Lw7R4nez= zvTlS^?>0dLGhe{;MJz;=mYRfC>b%rhj(1wBXQ!A9MUk$yakacs1zK*GYh6%esES!) zK#`tQ^5*W;oxs;~U-(loUgo_ILTaO?A>(Rngk8voI&}%PeSEgC%r=KI03siJ z0p&o20nSpw8WjzM$%P^`G@-t=1EDLOA@wpw%7RR6k%+Nxtrqlp1S#94M%cqh<$@LI&@NP280?1V_ zQMx#Djty`%p9-z@#z{N@-XC3is!20*_?|l)5oUjQihPzPxh@LaKlY+nsW5Yg;}XpiQ$(4J1?Q zW#Ei6S62Vo1ga0Ek7a?bUS#;^&;TkMHp9kgjHV2H#gE_Jd876f8vY*=BcWEAjtTF7 zbf?Fh9;EthN9g{JjVg4SAy&`X3ffKfwSXjt!3+X3^iRV-00^i1=sl;9a1J>Vl#8zi znBdD%Rp^+-R>zJ7K+nePXbxNzf()SPHEcvMDCkCXHKW{D(-PnT1~YlAbUH!UzDevf z@M>j0vZ3p?UzfC&(1n11o@%7WK{?hN!X}?9RYE7azM$QJ8L^N?kIGL}L{)C1nn7K7 zfREZWZKy(TR4xP1NL>1DA;W^~9)?IO3%dA%=*h;3DT10h`_ok8Gqj(}WTUF^=>9Bi zookKI;>G~YCjK+K+!+|=`ncE^=)f6Uks93(XKY$Bk)ZaAqRpt3{wg#m8FgCfc)B+u z#NcLVaN`#}gOEnFl8zulCip%@qkh-L6%~UoRcGO&w9N^>2#(Ml+)^iMa5 zV1!uFHQxoLGC%9;#4T2l?>P#Bs>7RnIq}jEgQNlqRDx0(P$?0BY0ETG*L$bEX&To& zuJ&UBqcr;c!HgU*suJM1ThH}=gopgsU8pMZu*G+|)A|*DF44_1UG@HAKMu*WH|lcH zG{F7sW_@u4QskcF-AF{6J#w>orbyc*mpy|7#DaHA!5IMUYe35n-y`%l0f6W8dnb;s zU&?1g+M(uI;^xyf;d`OD%QQ0KTUW++yWF$4;xp~7tV=X+;a znb-RV-C`kp`Knu79pr=sWRi{i4%z+GVmuWEg(p(N>H%^O{Bk`+P$v?_SoEue21Cw1 z<mfG7(BSNawX=tQz97<5ZnXaFq8rAAiurTmZbmIOUP>mkB^}wWGVF;q ziB74A(*JYP-n7))e>d8dVeb$Mxz@@#675<53O#6zBg9AxwxGl6GyLzLzYr?J4f9q9 zBTS;>Wg@-fI2V;;;*W1DcaQ$PoKwxV+ZfNd%$GV%T1ts@;;bRE+#P81oMCA+_*VgJ z;8$Gg`Gm$z2!*k@cGV*K<6qsuOCveN+HNyAbdtLN*LVCa?!k&{O$bv5tweUAFr)Nq z%uN|TI1wo2GZ*M}RY~aZ&$q*qX2Wh8hkvMXczfh2prK8v3}qr4odkpsM&JP%a}+>J#O(o4RHYG zJ=xfS&W2$I;IMBhEUxaW@nE{i!~2i1tW4zOkA|O7?=l&UB5WB-oLKQ=#Dk1S5vRo_ zca_BDdY?L-vvU#w?<|;)eR_Oovm>sK5dSNa4T<`*^&V8wh0m&>&-JTi~X17`!C*nbdbTKReXa5dt z-<{R{otb*ljU?*qEIMe955t(ab43-)1%C1hb)CyWR9C8rgci^!B@_Q+Mw_INcqa9ryje7r&d#y&#iK#}3ua#kEPw z#{d=qc7%BckI;HIUkdUZ(HXs z{1l^n@s6t({dwk-&L(;C-;(S4Ie&0gN>@rH;iG#iGIyu`m~zLuIEZ0lo}iw7Tr(m6 zHIBN)Sv#~Ab?x7-0`^DsgvHIarBhV`XDlL;B~+^22fy>q<>y?5}J7c(vGzfjwJjXtI6oH4*zDtYe$u4JyZP zT%Ee-ueO2_!tsm|LE@)J%W`CG6DV#fzC%0Lv{09de>M6(x6(TO?{7iG;`1u!Q`9Gt z*8an{z5B14-8dKWw$(d{-cVn5)8PDz@1L4#U>R7nkY2nn4VD4LcAjPMWRp_#y|^>% zd_R&DefY-aKQGpBX&S51LuBm9T(SmSs;{+179*7r{JZ_NeEc{LF8F$&JV|#ou7a&d z-bdgp#dbq8wctTDNr1yN&iDg+{(c*YXlVTqS{~MQQ46n{os4mbRsj`TKH2^|{0T^pAX6A9*XLMyNu=udviVLCkK9y4r z8z2OQ4x=euqYtp5cu)R3C4$T4ph}e@zBF8qm$)Uhw<7?S7d$P|FD&EEFR%nmlNK`+ z7&LFdV%o?yN5KxDrI52dmSn7gYUGkdTo{m=){U~he7?`hTH@UA*GVWUoy*G!|99Ol zSAT`&R~+HvT=uec{jeX=@KNqo1*7fhd2CEDrM5dc$ zF9Nk_Oa?V`hnSV|xu6EfQ1oKJOkg71q_nF?oGjtSp#cJrWs$Em5;auCmaD1+;n-t_ zX;;+8xQPv<>7-#O!=1O-L}IcHlDI8^ z#WlpbYNGM-#!{}d7wromkPTWSLXiAhCt88dVq*=rdrIQlulFEv8Z3)jC3c%ww;S=G zN+Rt{gTIW*nZjANgG)&gn&d#{iNx28TdEVafwDUnc+WV>WmiLxGVW(USpIiFdS~0C zx0%99KE*d^QDz78hP@WrcrsVRw+1-J@pPPl~Ji^#&k_eUpT8;Sdv z<~aFXS}zo?=w7}efh*8ncRWjER#`*2@Uz(5z4$c1Sj5*zmb~LKJGWf|^r*mOa$k>X zoKaSkbu0u11_-a}Gc4Lcry?y-bRhSDHpM#{W@xFe$Y3K(S>oY&X~qs(NXaq2_lR~t z(4xuAcbl!O^{9(48WK3*%@%x1wpB@BLxs75Vy}WS&}-NB+(aXiUfuZs8B)C~O94m^ zU95%n*(b_-d=z>Wq(YcNJ9ACF6AG@+n#>-)&z2t1EteHK>4lzn#-*pKn|-o8knSSA zcKMdsr33fK@YGuwG@WO!h4;#B`{99wMo7bk@gG*T52clQCbSZp*kv)Xm182b<&%^j=QLQu)*2%tbXRG!CL-T(ZuV+eO_>JU)w~gJ6 z1?d`lm#v{fZTE7iTy?V2ks-NetUY9#VfGHGeOuN3RB87KAgGEI)9VYD=ZT=r*CCXE zf=9O7N`~Whsti_=>Q+rZy}jO1SVg_+o9>X|;=?^8GEHi`4S`E#a6}doIfmCEcyOFx zb@_C%fT)1up3FR0ye0L`n57Vshlz2U2T>>Q$C<4>#U@^^xyc`C7SMJVU%lpK^zO6M zVYP|GXLpZl9XxZ?cZ zu~RVDW~48VAm2WY@ov}~wtD_@kjx(baU@({<%{Sd-U-c52)#(iw>h=%ebE+oUqm`( za>NsoMH|)Ty4nPoNWWcsVLtFB!^Z1Y+n$GC25p6!HTU!vlM;EgsS{|VC*#=RQ=4d5 z8v{`vE2LMMsIlah%r8kN3hlQk{jQ(}NHVeUSStbOcTi?(JV&>khT=E$%!}%w;>0U2 z|2>1S6<3)AEO4G2%9r*vWclsni~&#Wt_cMYS)}5xUBCbxbX1$e-EUK@lAW!;pe>p7 z&`@u8ifkHgZI;kqIE(Wqqt`LgGCq|$RAB7w(F|J%%NlaFB?nvC^s?7e^omFgAa5)^O{{E(@BB1U^i;;RnWfY_Dt)km_i`Qk1h}bjv z*K~hAq>NeUKMZ7l8uHwMLO}Lx&1OD|J4ab%+Y0;9lMX(uo_-$k^KlFqBv1*HVczak z>669L+5p78Px{8|%K4yyF8_?hn*ne7XKC35ersQQN}4e=GSa+(hj8 zGxgKq@XS|E8o77g$@>qaiuNGp5%H@5!FpGV60DV6dZD3eK4pR;au2e4h+F1CMUrZl`9p&~ZtxYG& zDYa|BEqO>9+RPc77j?lZRR%+DA)Mu7iP&FOvnZP>b3NosFlGg>(;J{jd5qcQf#ca#gfH^P=O+h$& zPQhJHxpWxj$wk#N&{=5!lJ&hU0}x_#lb7J;4B=781Lar~s#&P40%Aiuc z-*Tp$gH2QAYH)I&1PQg2ZwE{5yUVcY=cW2$0Q29hc{#_OPz@Ck5DD)O$1nz187n)i z;gx|=bmYi0c$#lbzfYS&XuTF{Pe>VdP&r%PD0_d{q;o$lBiESLt@ z2wXk8)eyPNfNUa9nmZ~SK~m(Es80jtW4j=7AVv*B(5ESy(NT6WrzF403l1Q24p>M|?aB?!{8fW|7QfQC_S+kG}q?-TmKt!oT?N>Y3A8 zhaGf&BW6dxCL1IE^IF!9bDqt1mM{~Rh&+)K7wp-hk#~-M&yRkQv-o z1N+DtloH*KZ{z~MwT3k6(K<}Iw>7!xD~7Rku(m!Eq(COr-guFz`-`BGr67p3HxQ%= zS`L4GL_|Ga5WLhx8%r|2831F2<|U7uazN^%Lg19mo{lVsTvvmVft8@(+|db{|3>S_ zlo9w_LI|jtP$#m8giT8mE5zX`Y|8jw%{ic0GaJDN$aV z1`%RGQ~(u2Hq3M~Hd+o!VI8@nh&spGdjIL==w~He-fn4@$h0h#U*kW@kT++;yk;q> z-l9jt(bf%KrU3K>N7~)H#K-64XqAMy-HZdNdxy@z1o=p^888nJLIuR@o?*{ez8_r@ zk;-BjZfZrU83d>tf8kWEG|{t9rAkG3mbh2z<$djm?>avo{A2H%+xjYdBvIjP@NHe1 zjT#LNPu#!Z&?vU9_&HVTXXr=xUD&@B^J%W5o=IHcfm&(j~y)hTrGCkTo9^BJ#v zQ|Usc#35pTmhg!UtlWEWI|EcEx^Fe@w=1x(A$Cdr2@xgX>ayX&R2F69_LBBRi z{Z}Fj`p?Otg(u`OAv+DOh;Xy~>X?zIV8Ygh4MD@2T`=&9=SLO+&OHPGfk*UIOaV;! z)n_iLxO6MnfRYKSvB?eyI@n_(V`=KdgTHVH5=?a7%lN`{c({*c2>mo(TL*o^I%M&A zoC`o|*1}V28KI22ROrzi*e5pwO_+w?AtzBmO$ID>uc^ilHxmYI@<$kjB|JSVA253? z&c`tc3Y%m}Pj_mp%gW^cq|R9ocvtjVlvM#n%;v02Z5i5&{Z`i!PUezhTcwM*yK?a= zbQUh_mBxmw%->F-noE9zx&rJjNbyqibEwQ;j#v<5ivjw6h|-B6`KLMi|2z;7*HW!r zpf`HiQCw|yY%)N4`kx(u(VYF%0zk}Jx)va`!x{o-G`*k!M_I`pQ6`hMUw#9EeLOie z7F5$>$;D7FKPacn5}MRFtCAg=5lsqaK=8Ja z$@8DyS4Qr%*BU7lChpp%9{!0e8vXK@k+use&+JKSV8ACEaPiycv=X5kT83@g2ej!I zA0}ONnikZwY+=lkk0hR?RepJI9ncoBXJ6aJ29|&ew{|Z0bC@B{m;teQF~Z;r0a(~# z$7hS%atzkVP{Xtj07mIqu=oMwHrY4ZP+oiaVBbvEKnhC*Y^jmHv-9Y)3dhXbSX#CKYC1lQO* zqOKf+2`$pL-}vPNUk^viY;%ui1s7Emwh?qaqI~4~P0U|iCn~0^@cUm8UiSj54pnRO z7e35cCnr@9LO=W&;&-jz7{)_?lnNVPST?#biQqt$I_PI6(4PiulF5>K`)Ke5$Fd_K z7Z~9BKlt5c|4X`Eh670S*UUdF{&CJlxAkH#t)A4j$oeyhzq{}w&A8|fCJk1T8tgUv zq6cXlo|%AGO>g@ObL2W+R7mfjE3ucuQukMWESiIg9=TMZ9Xua4DJk4HD{=KY{$Te9 zmabbaA7XhYY|*nC4`QY)qWEBDOPpf zzW+gY(~wsINt~s+ zd!x^=^nsaMBT{K|XIbejZAPXopDuS>%=~j-JQY^~)8IXfaORnUP?r}nRj$U5tpn8B zy|qny%!IY8^=Mi?9jDPDfoV{`_*?K9>B>%&Pcq^ptaJCgLM#Iv%E0bKcmC+&mIN2y z(l4$iHw{_+9cpeLmRMxo)b#($F1T&ejqn?pi>4vV0e99&ZSnAvzrA69kw~cEP*DG? z$KKj3s9Xp(dvw-O4quspNUqUWQIweGkh3U*pT}TFWp{xw#7ZcFX*w$EXLj6Vc$ajU z*7*rDX#*P?I(7bwF-?hF@_~NLC6ST;Hk9<63xnQ&5rH1vBi$_{5Ay`mCP2ZYnN)2M z=^0I0XepAc%ONg~eTI;u**bh&aC8W@3qmgEAsEe5;(l!>(QofP31~k5_DPAh9SgqV z>*KCBaq8&ZoroDlzX;#+Q-fdMexT?+@SDjH?VC)VdAU5flkpZW%)R0C4lmEHKkI|w zy&Ks*Gjr)a@8aXPq6u%KWz!Q0`|3%e&jp0wGU=xg8T z*ZQ~MZ2s{eHLcoY?);rcasN$7Bz%-YE*>ad3^!kjOjwHPSUM5Bc;0+DC1E+EWBF34 zj!QXIjHVn~x@cn7=hbBuli$5M2GM80T5tyC=Fp-$5APi7A^Iu0r`D$)_L0CZU&))w zN%#^Gu)ESrdHVg5Gy~PcDp5YV{L(y44uB=o@Kd+TWakx-AZCpPOT-xj=M%kcVCOav zeAKS@2>{Q_8V!KyvykY2s~<|*#?9BvcBWNn_+*Cbj`?v3NWyCW``u1|^n0jLIybec z;02Z}TeDQh;DYz+dikK=SzVT9vzKC<`B_7!xSQtAJzm?_g}haGFeDA%J}dp5A)@+Q z%h8e#ou;HZO$W&~-qgiesnjx|A;ty6Refz5VOf^GS|&3BBK&|)u=hXiA9GBy zToq>5+bn(F_4geFnhbJi0NFI1?wyR5RLhFaqnBF~sABGIHM8E||lCLLZ5?cVE1~X4TLYqN}?`OykLs5{2XK13Yax1V;Su8Xuuyk(#>O#(Fj2MMbKp zo@yARKje8TWw#yWKa76ubc643QOPm~*x|qh->7+ji76S}69mIH@1#42l95HTCwh}m zW7ptwrc$Yff|WIa zM~xITkFMh4!1RXjpX;yhqD)y|2X=GoMtF_)~6+8SMa*g z_HXA=fn!OLVGK^9gi%*g)jH$>0%7DqwB5eWI3iX~O5oCD&TlDR{*drr25RC0WGd=| z1tRsTgpUY`4&Zck$$2pRgO3v-zJY}dD8>Wq!mdHWKp^B^8;Jbe%%@rg9hG<56E_CJ zj-l5EPUM(Ve^>}+D{N-(?D;VwJW9`SU>>(KUb}2TnBfVdA9yCevmn^ z@V1R-rr(q0FOtPF>$|RKIfI=5TSJGC|Ac9g6ySwlkYSq*2#uP49hgH1>ZY?3(~diz zWsANakjIPYoJ~3AU4Ll;Pi(%lw+pBnn8)w(x0Xf9))?j`p}mSeGKdBZ6$VKTmH;h5Z7Su8xc}Qx(6Ww6J?5ER zt(p5@K73}TDN~386V10+khXP4N<`;EB$n1;C1-`CIoW$0twN^ipb)N+c@WH>U|w%J zn}k-HoT*)CeiaMytF{r(wX@ZK`w3>TtqdYI{^|@8tdiA#>h-?86y--@(f@8flf7@c z8DMz)=gzC~oWA+*FQYERZwz<8ZT}IqWH#kX%z8o5ZZIg0gx$;9blPPI-FXQ_vb*t* z^!jDexShWM9!H&cIuew3qf_5NJFRP1Na@5U%#L$YHKrowZqcD^%V zTO^3wp)MiuRJ+uBvKdG(q7WzACF1$*PCVLj5Uzns(-`wk?%3!{45*WdO7D^YID~j1@ zlnL0GHvNzv$iULfxnW6i?P@i-4{`DES$uq$&jG36JFYs*o#CeQJE&{I5P^STR#v7V z0BRbH@?#SDcGz91LU%or*@KMeTf4kUIx)ZVbKIk^+|wAq%AhuCo3m6j`MwmFHmgIA zU4-GKrW`cQAF4aEPTa@ih(A%_ocaqBn=EG_6>=}duUiUq4}Jt3^9Yg4vI18>TNuy% zHVG;pKtDF=vox6F^zt?3V)cO1bl&YZ4nmCIf#a%|(zV~0|DbZ1AaeQXKNo$XUm^D>>RQSeYvwvO^yyCOk$lc#&561f7t0cO2Lea+%*P>OZ?0_osWEo z*MCs4>r3E~Zzg>AHBl1~5KuZgE9f8HU9K2%*_`52n^D-KWYdtMRqH+0GTmKcMr)t5 zVxPVT1fpuJwAYoh-<_XS6tS@Su>S2*SX(wKP3>*!@&ih`|B%>}*MN)pXM!|-51R`koS_l1AWdSU zzK>`~L-5JPM!iQI&Hj$3+W$BiFdCi4O|?K-898g=i7@Wyq@Y&(MZ_IrfMzV4#Tb{D zZb$#y(o$+fZGF3ly5Yq1q2^=(~jD{ttlP3((}8r?9unJU%>{-k#G zXyl$MoL>@4%O=_Ym@^YlYLMgr#(=c1vy#Q$6QU>ESZqYQ@-~|!Guj4GTb0cs{v<_6 zgq2%RxJjq7_>OQ|XA{Ki3&!owo7EAJ=??O1kjGZsT8$r6mB50INKvM@@?NO|=kl`7 zuN-_D`=F^KvSs4eCu3f(arI7TvLrL}7D>h0?1gNm)Iy^4{;M@8VncQma}GKdc5ENX zl7!~@P`lCHT}QQlp4euoXms`%Z9!5fBVfS=Lt6uE)MfN?wseC^Q_R<_KQmu_pP%1i zLmIzblU)Z;pVC_(i2TPP_3|S2Z9glI{A|j7Hjh^?v^YLZV#NNnp{|alV7%zCOfpDX z%eDQi5|SyyHi6w(i+)u!e|{bIU!Ev`?%pRmKxxNi$_4xvd;H;I**l9gl{9yGhmd7L+4oy8YJg459H24 z4e?jUB4O-U=)YV{X9Ulh5+wiqEMzC9rzO{<5y>Ji_3^9g zgz7Pme-K!5F4UwzaDFTrnFqPy0as)JR}A!&ElJsQ{I6WXBl;d>I1o<9FEQEteTeXI zguw$8ry+BmhTFr2HWiSmOlUJZc;EN z+D8GOL_~P43;f_2XA4^_1Z3~9(94BTRVGZ54OO8LPZ3dGJhfx%svC;&hKBeCqRDr0 zsX)K*dvNySlUJ4svp)}54wrkP#*<&nLV|7!?xCAW#SrEgC`ZN);wC+?heg!Mm3ouw zHbEEQ?~PVjViNlc{01a)9^#W2Fh2Ecs~+oAaQ%a>5S6!Qjfd|FH&PqS*AytwjyWNb z8dGx^b!V`M$}2iDmcLt~Kqupbp6jvJheefDH`E7j)c?BCBoJFi%l*m1i6zI#(V+^w z3@-U1(mQh2270TIaNBNA1vB9n4aZv)LXDvf5QZ^KY$+F79Z9%GB+INr8X#ExbumeX z+_7&82i${?p0yZN;XWIPQx1bZ_dyBN9L&Bh02^?ktsmZI;5_N6SLLBiBIq<5sF)hj zrAd*-^6ca@tU=G!G29-e6m<-GpQe8M8jNb3O2h1&NOLK8TpsYajPoB|z$r{+asjfa za{QDJbkH^*8DRXhhG56?T;t-yxCq~$o=jh2Q4`?+6aL45IM|QxT!tz!NC7%h&7{Lm ztjexgW$@^zgNF{1V*})KAtiYb83u{UfMVALf90OF=UxpSOltHtBugZ}KdCA{q$}~p zMl8srD8@KGCft#HaB3ZP0tLJqgExC~tNV?R-oRrbW8^19i2;?`M|yaw%I~Fw_1~<$>Rou0K6d-(-j^Y;)}0hj%JJft8M!Dw>{7 zr*Z8B>#kjF?ckfckJj&!!fphfMeERaV7tRh%E+Ym0;Q_XsP8nwcb343XyVI0{Cgh! zBt8Ed3yEXKSF`1PsxUs2;gc-P5yr{i%_N~*{5IE~!{_c?jB`d{(e;2h15sR$|HZ^R z@vKR-e6cNCOmaBL;Rps!_C4gW@N8Cyw zgfQWcWn*tI1k*rtp{0}u#`aSTzM_|&JYjb(3?DRUMPk8+P#8f)qTCJX(aGZ>7Qhu+ znJ4#F=D@Ac3{_FoPO|v5@YkHy{<0dc7uS#tI(O)JvAxz`S1&@x%vWMl{TP{BC8-6_a`SHk&lAQ+R6*ej~A};qW^d`E_8HW4t zP|=uwp{{=tT@U5=KVZ3-RW9xzfLaFe|H4pM5Vup0F`R?Q=3+Y8xUY2WEe4^q9-`E( z*nx`IQ$K?i?9>rHSZCMyi&+>JWj&P(*?(V zdx$o+1AtM2obWF1N}MM4?2bC(a+vMb0L*H=3x=pz1ja}H zFmWqf{3HYSlYwVnOnM7kl(R6r5Zm@n?^>E{m!O`YquS{GObu)B+JSxNE$QRwZ%ZtPD&8jB<34fN&?Ith3FX}55WB;0ik zE6)|zv!MK*CIkWr0(ba_!uj2le(4o)o)Iu~uG^k<3v<;|I`erq&(OeRd_%Bpv-K1S zfPlA}Or`Du>oUgm0@F<8Sy1pXo3H|+>~nkDjPdr8(h^L_E^hi1rsd@VD;p ze+2J6ZmRk|lCZ+ZbYlYLllrW%i!rS!u>q-hQiCAgqT6_Tte(+GZX<2z~fTpEEZ~2xRTRNk`t=$=ToLD+f!$vd%a5g>T zzw`2MSwG~lTRcM2y5@^V6K4NS2#U5B9D9B3(uDC7nCX{^;g$B2 zV_+;>l7K9YJ`vdHifYaOq$pcJKJ& zyEZ=TYAFn_cV6#9uu-UQBy4?1cwfcnRP0~kw7YG&PGIHXk<9D)63POA_!HLoeSOaV z5&kii{alp4(+MCbsgU(D*Nli<7u2~Y7&->sI|lo9WSniZvnMIoFGVA{WcFRE=k)Ty zJE`LX3Co`6hR&1gW-aho^KY+E=F`bvrX*s{-}C4c8R<9td!VyO@Fy3aNr$KP`XUl| z4SKC&Hfb)7AKkM*3RQhvP2n9IjsGi8WqEx(q&a%Bqu^*AFQ_AK_F_rXdE#8q+qS&Y zc_#8KTBP{TDM?Av+o>fzoT*%{Vlk0lh+j5o^xwmRN>r&;PgTGWBKNH&#L+M zuen|18vAj!`k?CHxsF!`t+aURu@(J$HGAE?>2cOpmw{rqgaIBZsI~tA2sOW@b|K|+ z+f~N@aCF}PRQ~@Tzs^4PvDa}Nn~=@1&#_mw%yeuCZ!00ySw^x$lyQVonGI3YIW{3m zb(G2;Q6WjCe9!0m51b!f=Q^+3b)L`r+6;Xk_xD>rj;k-)sf`4QzO!@OmM&|)=iT{`&VQDL?AqC-u1p0y9H>g9jCz|7q1 zCY@7kll(U62*HHNy9IP&`3^{kfO(mL3!6XGHa1;JF5WvzH9J%#H*ezR@X^c9dB6W? zKq(aQfBGXV|KE;s>rQ#rcl8&u8q(i+gE#uVHYb}seGv21^NI{VLk6;w#2b0J{XSTl z0rHOH)xVMU$_-J9ye}XFzNr5qdUx%=0&KVFbXh(qO0$^ShS;0q3EH{?C8SpfiDmL1 zep;$Z;NatcG$PIL;G_5&Tg^Sj-i;f)LNu38ISxacg&kV&ukaIL1#yT^Z=3DE4k(!O z1}geo8vIqw_ZzYueJg|0idab$^1EpE@JTV=DN&AZeIV=bp7>>ONHh-K19Oqvk<2Mt ze0urQ-}yD)kK+b!G29neAERYS@Q@n#P_o$9gP*&Vo4NjCH6S2UAhtwq%jhGUvOS^A z))jbk#p@&37-;8lF~{$sx(sKcw=ZV){ePTYCAIj5b*_YQ8dRmY-oE6B@95^*A%jeT=>!&* z`%XvNUeeGApJi=_3>T>Ir$4DZcLL;0;0djGA=&U}xU zthE;9F+M%3bDvvAg6B`phc>UDu{)3Ua2@@8uxmV#!n8hVjKEJM%>T`kq0>*XZzC&OPF!NVdqJCx0oSFbOHj!|6w6NSQy7kJx*=&;(+w+-%a~xWOFlT+mHOCu#-l7d;&0 z{2rg4otyZZY=Hyu8?IKnM>VP&rQQtU2Yv{!GZ-RPcruwdYZy_?qc(}}+4X50H#c|G z6Q)sOJt+vd3yk1^W-wO;98z}{DL?F?L0`Q@On(JT00lty<7vf zd+oq;HnWCnD2*KyTsl4YHs`4=E8;c7TjLwA*rm=|8N3?ZC`fS>Yh6i5Bw2B|G@exy z^ZF(}4uG@Gi?plcKPnB`;<{0hy^p`G5cE*EatotG-dfqBj-T<18NvakCZ&mYIH*Xz zkCfl&9i4M4Y!JBazB9Zf4A-Jy5*C=as zO&+E^0a_BDNmI0%=kZ*#5_ycu+{{L!PGuV!O^wGsV))zI?UN8F7qLwslP5ZkEXyDE z-w_&KcV~)IXJr_svw!svVWX9w?xd!tvrdkEKzL{p2}w;8qu98<%rU8N=F-{BQu4Da zsn{GB-NeE9oeHh4hPhw4zO>}#AjfxVm>XKb4}!3U@{5Dwqp{fxi8n!fKJV%<-^*#P z7$Vwti|*byN@F`gGh~2VPz~KyZJF)LEDuIJ=~ggH=yJUIOQ1YhwSfPnOhL#S$n{}) z7>`XGrQMJX9vmRl!(AcOR&@ThrYyB*T1b(DWtj!}TZU63s4FRS-nC&x)9_OqBDqAu zwM9GVG?1T|Vga+L;9&5!aikINW4_QDaMgIQD1hYuj#D(=An^G$5#gPEOp^otY;mhd ztSsAO(0R!3nDb6fda038WHm=}a!tCihr4MF+G-#Zv4SQaZksCd_f~Xim))yxaK)~Z z5utVG50zmD$4?z0u$zn>8*DWyU2kWkFwV3_D*^ZHxd7U0NB{%w_P*2w%%z&42Qvd@5aScKNNX)^;lWkK)0Hyz#qzhe%bv3Sd7cyCFyfJ@@gYEMSYITPNrK* zkpI=|>`eKmI!#MQ#4$%q7C^SHyJE?goX$^9P2~TUYagc^(GPw+p0>2E!DGrHyELDF zI8^`e%0}3K=e!kt!>1u)O~JF?{ZTdXkufDw;tdGsjm#6Y#kx<8F!WOnNaS>#=&k?( zns6=u$TUzR>qAw4sa0@xw>LRA1kitMRQbTD6N4&iyK6EDwx|b7u9q(xL{7oSzMRFP zkrtXO^SRoE04((~Aiq+?8$Jos(T{#AY00mz}7?;g}^Alt3Ivszvy=rFJ1m z04gIm*12WU%byom7@Ys_i;EP68O)|v#~%g^$C!}VF6J(V4hhL21|@=C9a0%^c!Z1D zJnzp`**qV87kCpYSNqThUC-#_vT9?dJIo8R07eCe3G!c@Jfs*#Qy)!ViR@;*`6uIb zLMp+l`(`j^s*%8BF%*i*P>}r9xf!;){VvzUa8&H(y;AEZUt*>A-aDVsE@=q(Doo$& zx}~pfV^J3qd+S`;T#b-e$MjJ=3z`sQ051aE)?oJqux zaGcC}sgYr!0RDWtpEr1niJU$QTO1aTIz?h4kB$l`vd8UIv7F*Z=VC4-R-XO^;m>Ap z`OJY{kA-3tL4<(mT3(zyQ`vGg75c`5%x`r93i!E9!z_Nll5WWynp`a@2%JO-+!^|O zSj+hDK}**F81HV9lg7ASrCE&_g38-*lLQLMoS}0XrSMJs90t_&sz(N(lMpG@KlvlE z9|`8AkAExkMQM^%pWASfDxX$M*`Jqd)$V@v8uFtS`E(@9`v6(}h5yN7&*zvIvv+;O z$=pp+fN%;ExqlROnDBRfWv}2q5SQ9`x_V1!i$ivh$!9Q4a%sAt&*A>8+PsyqcQ9c3 zT0!qm#yQDI-BWDDLdrU1eu=rXBzdS%(x(B;ML!* z?Hcoyjl#1VW zv$`$8-P7IAdi9@Z_uYsiS>Uqb%i;1{sFGjz%@aBM_>KN}XsGq|z7o`rn6dECB4~8; zXfNT^1F|1w1Ke0ZhMt*77o)0jwpU#8=aN#cw>r9u{3O{|>-ay@rDee5*OOMCxCWS# zmdASKOS`!0*wi4361tz|=SnI1O)y)ke*{<=A5QlcJBlAy%Q&&90N(2Ph zghyBGD07ndDVR=>)?7xKW|mZFZ>w0ZPC#CST;qh;!1&x??DU{^x{W*9Btfm;Q)ple zD71~d6@-KoPI1R?3i2bRRxEALMGra54kbhLkd2V&xU94|xROt${O_R`M7!jJKFrwA ziD;X>QIe7J(Q|QdMMmYdI=g~h0$cXz#a6pwGyd+|l{k$|*_9iQ)}5O}SZ5brhuD^e z4xSO>DH~Nen@vL{RLJO-?t%Hs`0wKASxH!!B2N5xx9von9jVE_F|^_uvyJWU^3Qc> z3TPzVXAB$OR2=}_~5Up7TrYlyBU+@Ah?3@d|Y(Igs$u%VWF367;4 z_F8u2`K4EC!G3PI{6D%R8uLlzeP?x3$ z&TdxD+a@l%PA(sWj{VrRBgv3J?9*Gzo2QS*g+A{cbFP*Hz=bbhjh8P$kA2rI0O0_7 z`3oM_6ZW(4&y!@j?X-93Dc)l;vDd`zRwvx*b`7A3crofsMzb!uK1_2GXD$tWGa=bT z)|m7vo@U97TaE8vLHJ*j>2q1?ow;?x0LL)w%p6o9<=O}CJdX3@FQ#4POx?>yT;(4c zlIJGlx3W@FvXW8|Za!BYbD_X?z%NgL%k_%Uf|2?$J{XY<}u(h_jJy-suhk!Va=ANWzv<%+5W@f!sO<^lWF= zMLVOzoe6op=?%4)KRn$#$6hQ#M-vWgbkps=mrS}TOivLVoTSENV!CBcxc`iD=UsCR z#Zm<0KsSf2AcsO=TRPlVCd*$Fs?c_MRRWMpp@q64&T1l#i_u0x*h@Eng9QyL6pm`l zz-t!4H*;yexltL#eqs;_qOc&{4u#FZ*ui4r5dYDw)KB9{Q?&TP{(j)K=d$N_BpFKr zDYa1(v$JeWIr$j0Gp=|8*KBOqYcHPH$R8sf=h@%gpc~A=JIH6J+wK@$GJCJx=~Z zO|VbjjKKZr(n~%?AEqNNjrx0$DRE=ziHnm-t0dVd^`t=ZQlT-~Xjji_7N8Wsa zzZ74X6%t3qGN=KKSr^103d7|5u`Wmo+VdXm<#Ogl*!_S9=BeX;?#FywJpD7PIPf5r zM4V^jbawhXy1Sm2m)FN91Sa5FWue65LcN4_^R72@^a|=2pGu z_~5s_{NAZql>}Yv7!Qu{Kk5FERb%qW^5A2}dH=mH3qQU3?lBPwI3E>sw}>l@UD&FV zt!47w0${;_#*lgk^N6B$wk~V5lZwU~1_mSI;;zjO7;-ccJvu*R10|R! zoqAL8v8=50#qOj}z6xBu1ExSHJYNi4u&;_Jr^L*0$w!%*_mNL`B0R*vm`2aX<0Nyo zgP26I2}dD(sPSS5dtA9Rv|JU309aIEJb9N+!Z9KNyll+wQi^`*fCWdo-O(y-m65Jg8n>r|Uq{#^FJ<9? zK^(#w_^kGv^r$0O%GL50Kj>m}?q4DjF-JMCUv8hQp#nNV8u*_g+)9~kbk26gf`v$f zBGqqmwl|{x%*O9$v4!CJjgWA$ti){CGapdBZzh36J&J{f#YxMmL`FPW4hXz`GX)qF zLlB>8^Z9&vbKwi?W7WCK`HAIlEI=0MtV>2x|I3kXn)vK#wGq?t@w3gzxPRfAX5-&X zKgJ&S&kVKvoIj}*xZxOcT9bUVHCu&)V`iDLKD2cCN1DYE=-4=%|>Ka zgIeZ65_A#@KffqOu~?yB{|L&85B|ZsY!=c;JQ%&ib8PIZQs5|uY z@7QBs7S=KUwX_7vD11_KiID&FHMuO|_!ZW<0I#S!%i8}I-wZsC$*@eIDsS33X{BZ=k5og%Xem8`A2-DVmYxzqb3$Re~SS5s!GO@bil3 zvv9A79~E&wviZ)&*j2pIRQ-1fT(ofJ>%Sk{7p8(VKHXi}X-R$`{3!1kW$(cXixip= zJ`{NBV!|$5@XtqtJYzk^fM*&wYlk_T;Q6hW@vZ%<6#pa{cO7AQKZD2~az+mRHp_xN z;|2`^Vuf+ChnlurtI^=U8RVf_FFFrw0G=Z90>FD9?E_6DDUEaSK6Nv z4k^+EBK44*XVbjH8&P7rQCYY1hx^zQ*r!tOoz741HmcGc6^16&td4c>eEaxo^UJS) zJ8v%n_sgYzm&aQsiy_P!#V)Rd8e{FJl+In$<$Hd`)TdcQsge`Wuj9Qfw{Q`LO?LTXTJe~7m`36P1S;{iAy7~6=d zC1k)PjSh2hg+UfsLaKhIC(GM!IOOaua23@PC86{M!Fkn{BTZ~Br>aBA-cC#?2>ZUrKbl9kZz$)>G^7G~ z+P-*O1F5~bA9K6CPZ7yxe324oV|hI?3l*f(uaD5n?m?iGBa2*#hb4>VVXw^@gke(LO#%Ju}aJ`y%2~&sy??gj}Fi!Fkg^dtX0Xx9Ylb zsAj>>N9WJ9uvE(sxj$&S2yuSe7Q!o})`ssz3WWlAm>j?WF1%Ya=;ab8;R!yXIoK-i zKx;e*BswSi!YsT=^9_O5ifFBn5{(rJ{&q%zV6;QGfbg*QiyUU3XP>h0~c8<{`XEvqdashnk|df&d=+M9DCU8UJd+JYBYsMpiSvTB@FD-Ma^*d6XZ z8fP@+Apis$x@HHw+8VW};*cj1voL9{USNJCnagaSR!l=!hQ|Swi@PC6e+=Vynd)lv zVkY021;)7fL*-gU8*7Yx*%`E5{5b9vPz&PXH6cC6{Vta&D=QhvtSB$87Jen8Hi=^1 z1Dr|=AyEe<${g~Zu1wcLP+Qp0`8SFJy(77=#s#(dw?+-&H)k4C3oL#Y-MQ-ScRPum zKl=Tq5bT4BeQnN>*;_WEw-Tpr{yTW^vOT!!;hPz9oItakdp`)#(kb`CfSqrFNxdEx zq$4rtxg67-a*s=5fs+J#-7>r#la+WS#NcC^zXjF*r8Pk1_mn>j<}%%zv~=JxWYJt_ zH`@{m^wgG!Z|{mZk$FEv3ij%oM@+XV7h#qjdY?QdxXVQ3P0P9H(sGMzb@y0uIee;x zTbfq`1w?M%5yvy~Ox{gu!KLaM%)UY)M%*!SR?_x?xW*Xvp!#Iy$Wc2;dU1hK+$1WR z&tPZA^0$1zAJMy}A$|}4`bLZv{rywG@uTp^_X3l5wL%~dVf=5cnA4mA*t~E(=@(iw z(Cx-5lcl19^mIoFtH=?AUm<6j=N5K-H@$aMqZ~xCD{GoK-b)qfT_B@{>_hD_wv3XIJuC){*y;sVqWa!ZW z;j+XSp!M-`xxRMDz_V-sQbCjv-3D>a$@fFD=?FoMeJhb^Vs2Rx>rkIU5ex{D{M!co z30)xB^xF%h`+_#B-F0i4k3?Gb`TgrmW;pJtk)@cSd^N`zRaNnJme-dKa03jF8}7$X zTybf}ie10bC?h;yjxhbm8P5`iFw*}(t-;w-Yj?l~)p_Iib zfeXuRjmpWKCO&I0YhEgERkyM6*%f78yOS0Qv1n84T!L>JI&@ZE@U*Fr;lzR^f$|}PC=f!#Q$Bw@XHZ); zEmKGfPlxtQdZX^RW+u?(6zvFFo1o@eBrT2AmW3-Pf>Xa17~bVvwn)w~{~c3&#X`NI zE<4%&#$MqquP4_IZ!UTqyQzK0{X_j*OlOgi{c_Bi9ZpLLE0NZ0B2+BFnfkc@wY;9S z$JBf|(vD%LiU|#sTV%btkbje|=6mMW7_42(Kca??iuA1qV_F>9Sq*>pY{=8KD zsCF`2@E6Jwd)cDHsDrS5kR8ArZ8`mVoo2VO6pmRhs=lUeGA#b(3`s)u?PrbK4M*q- ze-IBFeiXIuymz*EDd+F_EBV3T_F;1(I;?0~`^=ru6D>A(9Jqx`oY+*=daTSZf0|R+ z{jr9kWP=;c$Py>P&9$p1TknoKRJY%|{^ez`*76bCYmbZ{kH;7;KKbAsf2Z+<{hbS! z-XGap67BkFx_lB5P4ql2EXEEOfc4wR!ec-QqFU3AVL^gwb_y;w2cJLYIDcDYzfTsk z9ewDyAXp>Pqa3&$$3`ffb%4Yl5u>T+>#aAeoz`rWx}1x@ z#;V9P2lT`~>?!-Gd&~ICx(n54`UXbtwqwj^k2<5*cLMe9`hWTC-DmXXpY?q*Q}#rw ztD_nm#1Cp(cEGz4{ik5NTyMUE0C~JxNA*$8wvOlkr6(+-*GqL>cWWb0KkgN3WPtlE z*6*3Thjf+cH{~0C4Qr*(z~My@eL6^#rQpxc*lRrz_BFE3|AR8`&rY6&RnABfOQM$4 zX;AV-|GV)!7KlIP+t|%6n~D-SGyD^SIkKQU2{0LEdiKM~xY;0EMTRpJjR(M*KI}h) z9z6sL5I2BdG{G_0k(bFbWXr~vdB)8B!0(8~^a0mzzou`w z?_9Z+zFhUhZfYt&$@;~K&*t8L80L5Yp_u{_Au^NZ-!5HMntM@v^{aVA|Epg+XJ4H7 z0x~+#$`pJ6l3FEEI{{5>GO7<@!1KGogmm}F_oLFgahAuzd&DQ37tuL%var!Jc5@da zyHpmmYRZ>3btQ0L#TncDVG&S4LeLGaWUdA0VuTf3#4ys)cC(3mF_5-jb(p?pdos;u zKJaJvPt&c^X93-Zot9`k_6ea{`tQ2;vyUGUhY2sA{rUK(?;A`y=Tgmf>B*fg43<%C zI*j?^`>|P!tVxIb^Odd<#{QD|^ed0%jmAUbEVPq^G_t`$oeb{IPdSDpNN6QkK9K7O zK3B-ie98gG4H#V+kiTPA@BaPL#RW&&-jNZ>b?o3|mSO^6;JMuiS&7 zZlA~|gO|v|`xz^`g+=>%|I@9RINytFgG74H$K~?dy3X>j@HuL=1Y(fH=3G=8ph4+RE7=jEHPbPY`+!3kc1FuN4SL z1dHX%915ES*IM5Y84bFeN`i_(;M)`Y3w>CUn`BEl&BVEU1oDkVEw{E5&dsotnoLXq zR;%o}(?PggOYvzK@_>ly5ZEACcRXP5Fc=Ul*fkd@g!)9i{voDh>+ zce*~#-9D6*w+j*KCkc`I^l5xr;967}>tw(i5CAqFo)>TyfUhz1qaml`0!@C9NN3rb<*D~%+on+|6q|lR1l~P z^NU(KFKlm!u6ImloJgQ5w=q7SfV%JZ5feVeWh?kzQ!t`8_}wTEdKwm7{pon}vUgyA z*g`|#&T{2##o)nZzgU_N=a^QT)%{cw2OyR6caBGMk*5)C>|`k@7QtChx@S#FauaRI z$e^FHgITcwIKS)4&^~L?>v2lwtFnUQAm&MUZYWcaWG~b(~h+CG1wpFPRx~M#fP*czP`l11*wJDTY&u9d2a?zRw6>;}Bje z4PU1e_dg87Gm6#(j$3E^Q(6X<_~O>7Hn(YM&Rs~#q4!rM1$}hhyR{8hXhx0->ElS& zJKytVjotyPb!KR&-sg+OQ7&Lo2QEN%aIoIu6z$$EJJNuxB4@Q%^`*~|>BaA>qOvc8 zPuC|~<%i#b+gUH!Uo8{}yy{u1cK~1~hJo%AG9RD_v8wq>JTyQoQw77FY`9rR(@aN`0deU{LxhBxAmu~r+_E__@W{|2WeVO6{%8X zhRu&bo#id{B0+p?W$UmsvP6nXK_I(N>-2AQzuD+H8k9YEV!^bjrdo}QQFU8ZaM+S7ynUU(WJ+4b-DA=!!PglESzq#QycJ88w7)Z=%(9&J_`!XW8rTn^rNXWYlE0q zBQ2-f(=tZJPrVEV8;i-$@Gt_+EHwQ**-YI_Q zmin^5Az=~ueD*2bH2IPp<8F7R`iQpGgJFL`x581{GMuBXdSf1h0)$BrW3gU}I)iJpiN6B*i&m<|MFvJ?iIEsUCO*&~p`<7=Brq!j|FZ+uapHwQsXEaB=bFFhXn~Bc zCVYqlPux1wh6F8<)s(OB*h18;2s};rDPOW$HbiJVIw7V|77t1c6>;yuG zA$mAV(Pw>{lc2-FPGJVUZ}ve^X-0+l115Jj@WgWq7O@34uIkCa^Bu;a_}U+bae>f) zl-;&=kEL#tg}CN4`t7#Vt74vwc8*T`l!_*#H4a*EZ-WPq;kE?$G>^7H!iuZ-F}0@9 z1P)A#P;>(9{AH!L5arAFK5+xGy5F@kEOn=QaRX9(f7qaLJ4&#f=W#V8o2*($<@rew zn{MPdXAM~b9og3|tDx$zWWV=@sHkcQ-eSX>o1Z^(=t1sbJ^BT0w}oo%3x{ZF-C|#B zn%b9nBb%`J>rcHuQ--h@<%7>I`u*iRL^5~Ra|)O#h4~&8Nm-! z^Mma}10iPM#C@?PK~tKg*|+;R&ZSSQ?mH{swnm9oOoOlg+q1y9I zPNxis2V|0880rGox48Q%D8hPaW#D%`*xxhG(*0bjY8H67;0(kJU2D>2sd7Nd-Ml8z z$aKYeNUqIX$m0l->_B2Wg8xi{c1fDKmIlukJisS8jljlp5VtqH#%mPL>S(wF5sc5?$&Y30X zME_LHNsdqCgGGLyP1lcvESt=NXuqyY2<-(ab^Jb_gP?ar$#paxhw<)Pz|QYUKeOCr zTmcANq(nt*ldsUc#Yl1`$2Q}ORA%)!=ld^q?(<)O2-3ps82Y5EQJ=%_Sk@F? z@^H;L8yxc~Id;(idu5K7-9YN9pXEInwn}=M@H0e}2?vpK6T8Y^@8{ir4jeFz0E5W4 z6Pl3(VbiW?#6H}aV6??6XgHTGc$oygF{u=Sq!3s?J6TzI6c7RnF1re` zIj3oe8G|CQ`FZDzy?+?V(-q)kya+C!;(RD#4?tKV)%yt8v7FTM{Wo^ssEy0G-LWX# zzZ#FXF;nZ4sw9ZYTj;a;Oas7t{e{&@90$42haYU{8qvIWBkx5p?ioD!w9C*-zpUeA zA(=!LLs6DG0ZwkboM)j9H`o~t5$!SNA>z59K?cKVqIgR4{fF_bc*tDVo%?AwAOAkX zhu2aoP~K#UT7iW7$wzu!7H~@9OAr|WDBKEA?CdkgK@MdqL1Qm0bfrVPJo@BknW89* zf4}=M^_M=?Ghk>?v4jQtWs{R_Zq`&8>df#|Hoor?=i4UQ^Jfx*A@N62jpzDwg$|fX z>7TcYq+J_3};`1G$&cak94PgWluxE_w@7n z(PZ0}w|#r`U*A}?N+(vp@9XxilfpxJzA&%FD4eHk1jSO7h&8#{}ZRYp|y z+8*QLv~g~52e!6ziE zY1g%K<`&1p=nuW6j&EZ}A(X+YyXQoek&yAN_EDxK4T+p&#c+jOJvI82u)T2NZ(3^> zw`}>|0I62l+*Kny1r^kL7G84smY4XU#SIH8v0>xim)~Aiz3pKyR^m9l?jQlL)^LS+ zCPO3rQ40460ETg*R(&JH2rB{I>Uzm*F-BpM#;09u4)kkJRVEb1F*C-E7RiYDG`m~( zWm2&7>ilu|)f#-tFsOIN?|oq(uj#G|1d<%YCQ*y`8BhW2E(20x5{Wn28G~R=0UCtZ z-XV|_-SU{1Q6P1y5IjM31EVK1xJ%MCp8iVS8hON_+O28%<=Q*z>Yx%kS%|RC0cxxS zt+^nP{5X|DWBR3J7(LKkSgVlsfzqvc`nvC{jH+FBQc(Cnbus(x`B?qYhqOQHo%3&A zZZ~(PIR)Qcy?|_P>#KGnA2J|q)5VS&rB)*#Dc+5n9AFn5=t|=L47gcjdr1?5=wyYX z?f1J+kFoRb9yGo8WAo$j3zhesRZXK$Rr+M(u)^m;=gDy62^9nqY|I_icq88-N(B|# zpjRS&T-jAT{dhczDpC#Epz^i&tYTbzhMBy;fjAW=a-zuN+}6R+hN}ZAgqT;lMk;X#990sQIuE+Z)Y z$MV~g$$%NX=<<&?M`(M2JnDYaqYFE?9%<~3kUf{WR&sgRq;LkmXZ< zPXQ=3&x1JK_dsm%joK%0M5)isAIrkQftLn)Wo*(Hk}lemHv)I7YQMj*lS6}C6<)sxGKIVix_VwNNJ$v&#EXlwpXpqhx8}gioknmh zT6}V8d)*yV%I(j-VsMXZ!Sf%Qr8C(lT}dr}r-zmN6`3KBpvehj*FhwF7)Zf5auho^ zOB633J*2oZsqIKXsi5*Ayt0MBHB`otu~!2}>m z;Zokq?%2bmnOs^L4p%QBHrrE1(HV0qg1n6&^w+JSBVXId=|8eAEJ*^&?K|`mA}U`x zTl!1FZM&MemaLT8x+AZYtdH!RQn-q?<q`oS@COi9IE9Y{nHV^ZS^|1LkbM|8efoBDb%o2h|tQOyUu4?R9937 z$aSt$#5(Kim5;4E+;Z0e(E{m6(8kZ^~SP6ji{(URgKrvq{kMme|I~Wp#@Y(QVjV42SLl_z?CU4qgALid=lAtttFy8roPq@%S8kp28*!!L zt|yIyZ##q?IqBMA)oAlW#iLZifmY#_8DANp(bxuEHns~hyLJG(eO zdI9a_<@fk#L`**UShQkx&#p0qA9lm z9?i`uPiXN#r}2;v@4eylo~XA?iZ?gb^^#98{<{bXm=iw4?sIMGR*VKH>fvX^9Gn*b z*?db0GfmJZXB(3YdHS4#Nx~@F71^jPo2R{aR^((MgfC@dQKmrX%(f{8@hkJg*UU!? z)7;=^%=pXD%cspNOOjBU8|a(%bx}hr;WwUIx6#yF>Te~5ytl@Jg(n%vOr-$h&PC~v zHR;T}=f~>>TkZb-JIjEXZM*R9aLD^7Ugwa1*I;nI^o04gihun(E}jUqEpHaFp9JN73OXpi+aImw_PXA6mgmTVvyEo0j7LPY}Wdt*lPVzva z=&!MRM7}e$dEA9|gGsZvM;B9WzzqwPUkzN12k^sl2o2VbQ1$Q4mKraEk6g53e?;RJ zNY67Q1RZ*rmw22dBZ6FO_Oy72Bmq7oc)$^z<440ZN!8f|SjwVOc(~Nd78A+>&@_i; zF|C{mPK@&XH_1+MSpOL$|Jh_pGBnl|Io93bJa3rc$ymf*FX-Suv=NUSBmdjM=g(Hy zi4`@4IIPsyc@#>%2+aTq5kY3^)6o$YMpQUh@zQU&&BvD5EtmAqipR0@%l$Bz-R&vo zb$BAG=(vSNSsTaVDN7R))C#cKYMB-~905tloD(9P3ZS3Jr-z#`k9Da36IcfhzM+A( z4l5$he>ZtR3@}*<5&>v1CO6!{7B@F`MPlKk=Knr#@p7neph?`1f_T#b*yzMgKdpM= zR{DNn&Oc2Qq8(LG@V>YIJ=9@8R1PvpY90Q93^w7%rmE5)`_ew`P|B*F$-RY?Sx z2p%GUh1tkR?=yJ-B0QHQc~8Cy%&VYFN(yA;v&VS?yg$-o5E9&I+go6fxjoHbg*R+V zC{y63+ol>Ir*DbzBP2CaM7zJmuZ0fpQ4%}xViRPMXe=U-9;K`qrc8&$F{QrB@ar?c zU}uaTN!pvv{5lGcJj7$90nx2_snNMdfThIkDT#JB$tMj8EP{B&l=xl6HreOv$NM0G z2x;wNnEoY%4^g$4DYYWgp~yfA)H>n03fp4a9@Ms>dHyHY^dTfI6rtDK-;ZjDPX`H? z&>LuuP_{I3b{?%rkh50Ch!O*%`@bBh6`L?5KNZQXZo`gbNcA(}Y7Fp#n;;AHps8Nz z?YvTqz4C{Rk~=#`?iWiu=jXJ|Myp~$NTT3ZGMeF1ZGzXh6$Bn`r^S(__L$uC)*Zj8 zvzz?VKc?igEc9iEl*rmzdcCq*3F?dS()>4$X33!A6IH(_96W&hXxVrx`&~=rmA01P z!4YfB&BI!a8Ev-s_GE$^-^r7x!>_20#_(V{+|~M7KcF`9Vr13?bV|^ieWzH=Y}q6W9XOJBDw2+DQ3F zBlI~1pe1;o5?+BMg0C!+w+{_wa;=es1_5>bkepa1>M@B|f}58}CZ=tA9qI+`SKFGAdT7eymW{U)O#h^ysAyn}f2U$4w9 zEj2#sm?>nNdDL+&YlmUyBp-sz*NKAr3`8`ItFyLyiT#M_NH5j4R=-5n32?X_26wMe z1P4i+YYd?YKz(azXmI{m%)kUHldFY*NjojDN8+TE2<{Tq{xlWi`^86QBOk5 z1Z2PMgCfXo9k2T*=g80lrx&`%JY-#%K`wuGU8aJsX3FsQ&%t9!oaH;1o3+TL$#S21 z{#o+II8EN zE@Vko!1?B0zqfHE^7Zj}FYnaX{Z;_~8>XKj)6M*W0Gu4mtL2o^`k$GXPX^g1PguI} zjDE?(_kMKcly;Z;*4a0&)-3SCpKB!rsJBP&iH+Ws(vE_CzOU+#gZX?20yfE*IXz`h zF8&n)#^w#imBOw^tP>NGN)!TgWyKSE5$TrmvjpjA>=W1HVP6Q5E}z3fL?+GX{F{UZ zS{X)>Y;fR)SqlnXCPdyMbD(53L^KsJSjo{1X$Pi_l51H18?&aH&`_9UNm-OjPN>rS ztJp=s$pzX9Tgx`HwZ;$9Y&)q%-*BQSp$EVxE!U>%Pf03A!CEK2;0 z&p4i-wHV@RaAqUujCmgD9ut#na3-TndV&teCg`Y;Knwb3ZkJ)4f)GL;<>3U3MZS@G z>xtszQ}4?RbZO8g(X{)bz~u3m)<>tzc_Isb#+SYgkAKs!l^b#X4XiUc{rTJUDN$LF zkbvvk_)`6zNRaNno|761y(A;xcjTQ3>HG)p$a(Jz>u2S@dS`7}m3x9fr{;`xmqb5+ zFwuur z#77(Y+xX4;bO)@s7UK}Dp-sk&kvTfp=H<@IphL#FzLZ?w_6#iZ^6I=~6o}W32-BC7 z&SZN>3H>cB*tEgv>!a4_IYH%xgU0?#fkJnp+4&JVDw>>QttJs!%R?KoQO5H`%djs+ zbQ*{+oE}m;rF>JYza<5J&qt%2b?FLe7)=siBa0>j)9!;1GdhY6>i;Lk`*_->SC+FL z3%6p};kn@ST1;B)oGe!Gvy9XoIvgpeFijNgl}XL3*xaI7%lghZh2Gv&gU~ooxUNC7 zE}m)ctEn?rE%U>jphga;*&&rm@0CGX>|E0yg+d3ijofW(q(v0)}7ZyTvQl36yt`I6})^Rm|Q);{!;cr>qAV%K&KJ>xm8|o5ude`cjm()%0oMz0+)|&+g z=E`O+xD)?MmY}r(x3KtKV(&-DTZXv$HTe3)P8f-OCJ2=fGdAd$xs-s(?G?sXm=7N8 zv0%gYH%=3z=ICny;*cSJzy^^0(r3*$igB~}>A8gBSUD*NEGy^hYXh4$c!-6nvJZ3< zz++T_b{YQ(Ed-Png#`e$$>lS$+Da4}!yjwTU3)>{CaCo*eL0 zaLz!<7;J-Y^?#S_B>7P9JxsRJ`SEpay>zCVg}n*TX=?IQB*0h#ZD1`q{S?yo{hin2 z_k-3%Wt;B)_mTsDGJD+q^q=%-_Yv#l_fK&=JK%rNt7AO4e3R)hF~oF+_z;&ei!@f` zAKrKe#2wCKe3B5pkn5i{6J&=TZ)92r-hTl>Gv>RC>m(*Gj~E1cJYV;GzWm=KH(9VI z380ZACfFs*eN)fHWGXn1bGPJv57`Jcq;S&;Kd`0=cP#mj&OW-p32)_0fXlcUPLTDkLh<2>X|7uefR6PdXnk8 zJAWsydc7->(m+TVAjGboX7?c?jsh z`E$=qMBi+fq`r?8GHnjtPZC{utb3B^I&lVUC_nS8=aVVTS?9!QIXZ6}Q|dEQypl+J zCUqwH@XJZag*mQ|Xx@)Io3{jw$h?hM&VIUp*pk#7HcrB&oJM<2Y&lm{q4`kZ{MuK zOt4UQkd$ke$PJRJl4{;t960RXw{J918yV9$b5G&llp6(1#B=k?j!2(W$dnM1kamDS z+v=O&68tnl;}D>L=ygGLzQmh(fl%WAarRzOP5<4t_b-ivn$SZJy+{cPNYzk;fQSJR z>4x5sCeqY|mVlI?h*S+Ah=_C)5H(b3A_^iZO6WyEKt)iLlmD~N+50);-52}3cZ`w2 z1!H`&)|a)`oRi3%4*ZOp`WAWq=cPM8ra=D*3V?g$<5onu(aeuhWr4d2gs0Qi*d%m{c@c(I}sUsDWOW; zcA_1hjEUkfJ-@-L|7y16hW{lQW{a%syHtZo?1xWqCr?$QkHibJjBDrCPUW{oe7d~# zp=W;M^KsqmQi$XV1K$$4)Ah03LgUSN^}wD`C5cSpQP8qiyc;TEu*ST8=jij0qUSr0 zcPlK4BK1!wPF)rGQE?~yx~4GQnsYcxfA;Q4CLb2nD<_`Z(2@@0w^O2D zkTubh&#`omy_M+5@qYfK44T(kx2%I;nh`E74?4PA!#YzvaP^^ea>(}NSL9e6UIK(a z&bQ8)NK*Gs$s5dvNhR%FR2IFx%q>#nfHWVNzoqvlRk1u%;aBnb!gT80vREq>+bFuZ z)yhdpZ;T0><^5HkQ2Y#Ogq0xAFg2FB8>kqXB~&nd`|@i4oN-NKU{|eRUb@oVArF10 zx>wPnXBv+hv9CA2c^wl-tZ*wVYAg?pUpjjyQ3VAPKy8kJaSilNPFX~*JrpX(*m%kj zyqQ>vp>qNtK(~d#CRPJ@HG7}HeQoD}_Cg-Om0iC+#j%2fH~}idxE+e<^uX*jJ~2*E z$9jVR)0fGi;GGZg8lCF-I0k49Ovk|htrMG^2c{s*R=dn|7exTBJG!Mehb{v@IlaZ` zdSz|E)nH6J!32iZoQdIsmiM3FM%Y3aU5Goo!hpc@(Gby`a{;>9xgr9?YE%BjBcA_d(3aI#4TF`Q5z-68$8E8TQ|KZ zdhwx^8|WD7{{4L&m@yfEIlUg#-mt#{=N6$Xl6d?D>N54WtI9LAPq}8Ns=SRtUK1|% zj~vmO{)QU|QJE2$`fH?;wVj*QlBA>qi6=#pUpK>%MslD_?Jmr(iHcJFT)6nDZ=Z|o z&WLCcyJB`Ra1AzcTQ0kLNT7j7TkyRu{xY-BfIw-^kG?9MFHxZ`*Gs3(F6wls-cJ!; z_4r&SS8GxFGUeJ~7t>=nGAIEowOwUl)OCjCtw>@!gz1DkV>zRl5UKC=6oGFZSu*pa zNC>XSaNYwI58%+&tnCAHMf6cm$y)XJpAWcy~8m8>u*<5GfSv z0o9=65IQ~CYNP5^lx_)w5zv|BVF9TcCWw3dBP5D>i6y5sX2W3~+}_5(UAKJgxDImx z*1ZrU!aQ3P7<6F`vhQz^*v)ZZo@9DW1EveG^T>ACALp44Lf-K zUQih7c*TVK+~Gd2vX_X_!R&~47Kw6}dk|o^69d$A zVvYkB9Ja!*-KpGA^OmrnA~)INS&p)Xm~OoffM2kZSx^dcol1xY--$XeQU+4`y^9yeC@OuSTgo z0<`xtmwieYtWiX4|2l&zob0cd^HZy%$5 z*izS^T9eF8$N=89Qk2!j&7@x4de2ty{q)%dvuOYFnN30Cdq_jR5kaUVKEIQrL-~}K z|4+DP`DV|L7kPuENw`h3cI^PbQ+)m_fW$*Jp0Ugn61vfAjM#?km-oaE{hp^SOeskg zek<`4V7t%~V|p0`ct;s1XJLMGWt4QG!MvZ2)jY{_@~;(~DEhqRd!#vceB{&LPfi`= zqFaA9d=qmGx9ZksX8zbLafkr9LyR8}jKlT{BbrK^(3D=yk?WxS1DQk)t_s5q+iRQ` zK5L*dnlA@f1)P<@@T*hWaNfrbojy|ugRS(X!@$2r{t{v8ju#)K@q7_Vj-P0Grp+Do z^2>EghHwXGxxhjv4{QAY1;FWe^MeC&UpVi+JA~hQvXz9kjua1FYJj7SqlMRiXA6(+ zacqtFB*JfR7j-FZPWYH<#blhbImGLSpk7FScOmzMP0Lw6$UQ;dN2YK;)Ezlw*Cv!l z5hXGj+f54UJsLN!pm8S|_ZN%&hC{0KCw?PvDwV5T=8so8hf?{8mBa$A_qaVq$;A`# zT1Qb*C~zkndI$?Ku5c=SaYda3HhG*-=Zk7sJja8&tVe?!_ya&kG*}Ji^@qUWPI9!R zvpfB~+$VI!?N%_S?G=xo9@^2#w9@20VMx*2=!ml@5!}_!=YortKmwbdRkn#AXRd~% z#w1Z)qRyDQZTl=evT5#>`uygQu#&WZBbf^wn;v5tZ>sV_TY06D#7WgH#cS0vBgA(D zQMb5%)+flugtJ^>AcSg-Wf#4Q6{G|Eylx>px6 zo|o|o2mRnnG0dYxT)GM&t79J#qA4bUozx#fw1ce)s-p~vU)ML9H!UCS66ZzUyL8&G zPj%z_rK06*At%>j1c`SqZPhoe%u$*LV259XA0xSQL_(J~k+(4dlk#!3{d_X0>sE_w z0Li_2n<9(SVBQtvA;9lez$4@oMMm8^@{f51=e z`vR0Hld|hhZUKQ3$ z&(+n%f=pMMeX{&Q6+vkie8VIQY!B>pc*X#zCDt*X%X=Bh3iZFw8(t|kVsMMLmQWW< zn0n9;Y*!=ZPwiA)jJhS@5Af_Ud9K%IJgT_LsTVufQyS2BRjQB#St*Ubr`yqzL*L`O zIu?_RKYg#w%6x{w9)*K>;@~&2h?(xw z0sv&#hler>i^6dn_|f!E+)q-c1;qI5xIflK4XRGA|ekk9NIKU&GnlLmI-Q% zn}_pNh$~=C0v9NX-JO*!j)Ik7kiSNcspAB=Q#dymXip|Aio_9yl49GsYpY*zHm-v8 zj_}a0^ogqsXs;~nbqYP2AD5qpsn1$s7`(wjncBLdDmjm}3yTJ-F`{K+ubm(2(-cI@ z!%ZKk42r9MC{tGcw313OJr9iKt`2IG%QNo_4yP~kUKc!24FP#3)xJEqHiVjVx#Kd;H8yw^LZ-% zSe}E9=wt^5_cZ~0X^#Q9@JeMkEC>o@L?P)oWBVg_2L=sh^lQI-sNKLAJ(aEdt^)2~ zzR#^f{Js>mtAxs8;(;)(*qxZ4=Crxl2Nxa{dOH-zR2S40QtMW!UW;i4ZKdEB@=F3X zclDa7N5zqo**LKW_s`Y7tV{n!S`o@^pnVpYw)ZGw_S3%egIrrK%2-W zqHGBI?pv5X#$%Ykc81&pjcra*@>3tuwJCZq{iO6%Q1i8Oq}I5m<3-L|4WR{2&y4Rj zX$2LqDLvl^auwJ^Y3PW2VZT*P_WzuEHTEdVRkIo#3@#2Z;4lWa)t2R|K#`fB=4QUEo3kE1g7WHP%^{>~EjrQL_y~s)7~6lvb5;+sbZpZ82P=b73=` zH4#epJMCM+fC2%0p;Jf>qj=1<`F#W_%~$NkKvQ)~4CsDgW1Q~+*D&o`V-I(g+^GyD ziiPg)3BK?}7u_83r9(E6(K<-G-q+Xr+&g+B$$h)geNHm57p42~1}^Ikv2_;(zO)@; z+BLZ!e!xAz|CcSNPrHBCpjVUg!By9$lV6TziVp~t^QPB z;(Wn*!)FDqgOv$`Ra2Kb;+pTP$|Yv>!%SjQ4QuMTYHFqiTZ@OyW#M;sevh(q4E8K=ljnx_J=?3zhq7g_tp&0 zxQ$Jl)Q_3`c6GuwEE2>`#BIiSn$fjqM~5lZzdpiz)O_SbL}CB zW1VpY0ciG33IZCGQ@p&J8VOxIIdrft#LMtZ-(QfIs;thzXL;&3KG01!khdd`RY(?x zF$k6e=}i7B#Mk3xp@J&#FMkVuy@n4|b5Do4Ql#t{x8DB?N* zC4D%A)d0;MR&3I!@qEc=s|Cfu@a0<8O#nQv38o1^aGKEa$o!!v$8!MZB=$9ek;FPm zpyUW=m?jhjB8E$L88M-u6KE31KJ3%i!vd+Nw9Wtm8W^p^;Y@n~VE=Td{|~Qf2HTTO z?p+#BBkp+h5SM3|he!%rEsFaqBXNer;f2v@|IMpV4>rdlpEk$+472!wvEDDk#M0+x zUL#$NASYJ<2o2u7$pehewla94C7$rSzH#t~Hc?tYu#`F z%dP_yf0F0d1$evzA^BsLQ=NHU?u)8ni*Lkv8+;`~dkmgJc@i+^zWzMvDS-dUU_VYf ziLK%7KMGqxNe+CF&bCK>$6B)%B8l|5U;(5HCgfxQP>!;CuXTc)JWcqFs=QT0+c-Jl zjU0_mapPI6{k!_Z8gvnhoY~^3V#0)IqoRy#`V;eQEb?(JAX*Pv?iJ+4erdV#rH$wP zK7NFK#sldQHHYIog@FdPaQOl7ae;F|ONE!1un+=bl5x3|PI#7ymO+8A48RTNoWr_7 z^Z_XovGNp0ZyNH%Q-~}XbihlT2A%kq-8$o3eaSReC#3QgvWf`tBXVtza{FSSlSE`a z7HY^`tG~S^dNATz3Mn9Q|6uTJV7bWH!>*q-jA`ueQRcf0&Qy$!D&Qt@uqAzbTmCde zF?*|rZ+%2D$Se$yQ{YsL=20=H$P|f6qo8d#w~4a`i{Bpww8};$`HPS;mq;tx*pTk- zyfq9r&JX-0f1K?Vs*-{%WG0p=J&O zpZ@ZL^z&%FF|qDrw8n{;x}QpFyx?HVSCaRZErYhhg4!Mh;fde53Pp<}VPC?Kw;5m? zByfpg*;t}@urTQ(gJWBxeMKlbEirLbw(qPYc<&@5Z*HCm_v1bm23)KUcP8maNbPqW zyga-GvZZe$zNctmp=>oO<}~)H`Ub?!z?W*MzU=+A%@kmBN1~zb$pQNwZjYF@cW2O^ zo5sC2%3;O)z8={o+XR$_gJGOmCP_WCP*dv zpz>|M=2#L1ArQg0oUC#FsFZ>=;%Pyo->W;u$9<{&BQg}By1w4+aOMpocPoDy=pBz` zhS0&YKIw0)U@2=z@21*=Qg8WFD4y0}F-2u|_Gc;FQfz<;ROHhBqqRxRoKB6{uG?~3 zgt4T`@C8yU^>uh7E-`D;iPMGRrcIIbe3mNVvJ?EFC1kp<#O3G4Q!Qn*_BLMZSi)bc z^%&{#BnZ5-W#GwDw!mT=<_dq9%~Z^MfuyCG_~Vw8>N<}X+oD}b!+QU^X?@VD{>;NF z@cZo*;d){h<&T(6a6_bclC=zyZCCz|PcGU-Z{)+Cs#cb{7!__kVth(ERebiLDe^c} z(~Q?buEC67@0S{=c(ye~GIo`nBB1DqVTEdm<1rxp;BZALv`+#V#>2|m0fgKR_QU(W zI?N6ps+Upf5wUZK@p!uPA?}bmZ|Y&3NJ6Ns41E9BuS4~n)xVK42Vn1-J8FTG9+pU+ zuoQ`q+nBCowWD9wjtHCmPSKL&U{4hg6>xs2orW@Ku(gm%(Xz8ttPr@1kfAYi0_T-S z3h?QU(oF?yqsC{}E2YiS_{{*4lC}22xYTLmi>Ksju(Rog_4A@CNnE4orNN)g`%Km% zX72?*y)TN$!B8FGf2l2NVy&q)v7(qM(UaRxHXjkO$dPiuc~rswKxf}wyS{~lP2Xl>md!5p+H%)$DoHGrC(Zu`HT73?i)9}wiN|%4Obgl^Xa>c>Dzfm_G!e#_7d6tr) zea5?QC1QfZKtu5xrT1=MSt+PQ+&jSll5*2`7=nw^$oTPY(vSQeRF_|S4~+q$Rlxz7 zNsTlD15_0D`WkD%9?lwWsZ(*BI$b2HjdG@3C~2| z|Jv^t&R%Z1^{k6y&fH|=#LeImrkTHqU^^kT4+?QiJZ&VVZ=3EgUMAeTY(^-kQ1cxx zmx2Z0PXuA@fPx z#&DJH@KC{!v7tcMg}^h9%%-jF(`5j@E;EBn@0X zIE-sU>cJYdr92^{U7T7>V@C;A%vab%)8)4aV&uD)Jn;$H>R!Ct$_cP|*qju(AA}4% z>#`C3xM+AK*!eT)QDN z?-I~PeS4>4<7j$pr{S2q1NFyHRap9>^*Lr=aZ z>kx6>yyLlo0!S^!$x2K=z%st1sp>pvRzR96MzBQsA!l4{&dG)3#EWGU)Y9UaT9@yF~R(};o@s~S6&>RjA zQn$oUI-6P_ikCk>Q_lgNa&*KvmbOoXg7F;TR{rB9B8 zg@n$yOz-a;WdzXg`GQi%xBKCJmL(5ELLR@7g14oK)0)DQW!QNc0EiDqGW>49Wr;HT zv)b@JrnvBqls|5G8wA8}cC?ni{gj+2jRdoNde<;E(BI)~LU%`_UJ03KO_kPzcZQ^V zFr6IvP3+O%ACNQ-v-TiZ2p?Zb2mS@+Pu}P6Y+6anyH)33fe0MH)C&d3F7%id-uRzg z3^eG;`-7){Wt{0hVZEY&44Xf$jx&ip+{u`E?XyOg*lpIX<;Acb%UyD!TPlQ68DM%W z?#;JFAPD_JZ3d-`z7>IN#=w;8yY&KjM4o*|@&mgRZI&)ee{xpbnKQzI zk(#c;=tQqAr;1e4xD%Qa;aXIW!qhhqFO;9?4S!RyaRS2jE)k}H4GVvwN!3Bk3NJnD zL0zxkUp#*N*I3;#WGa#5JGH(-yuHNC#H^%9eOtV{0SNg z$U%LU({LE-VnY&4m0}zQR>#yvGDV&R8gMk@xb`*H!6X4HxqJ_9T18etkUyFpkl%E7 zijQYP{Gq8a($cML&>~74gYv#RBbE;ZHr6hz(v8L;h`%#y(poY%$ig2(q*?v`lOSecY8@6bGqF2?06QPPTOw{I0 zG_1jYA%Fvhn)4dOn!R37g2?#ul&r8Jok1+u&u`@Vh9aElT@VL?EQy0B5L2YlVE8CG zNS6{o1XE|stR3Mmh^^Kg$85fv5d?a_GB{9U3~`#W#C)%NZYBs1i$|r(C?z_f;V}d# z97v7?;2+A{WvfDNFY)PI0_iz&jIJ>=2_{5;^^7_cy{ zs+54cGMXpfL(&Gg2)pFhn|+CBN|<%7@!E0IdC>WA06=6@>3xxeWI2KipDsA6m2wh; zaOA=Rx+J&VW{s(?xs&)b6zFsZ#gy8ARSr>8)qf4zO=X+_zV+Vp9=L@jx%E?AFk~Iz z7Jic~*k$Thoc4oY@(c}}qrn@)X~ew@e*7&CO++$Uav1Z%U7uw#M+wurk*<_yt7|To zPZp0?^g>hoS}l&LW+vegZ^MMszDpkzAoSU-D0FsKB(+0RO&{%)-bo)%-o(#Y7r$?Q-Y%OUp zTg*#_7KRF9pD|A$;V;iyG=^tB)F)ZvpWb>xRS=!(Gs1}!yC=G3Pbkg^>l`jTFJYuBgWCPQ&eePPEA(`hE)5!x z!b^unZ>D1D!^IuLCE~O*U$VDqGKSEDQ_`n0>8L~oG!F5C+hb5$Or&O6DKhG12m&I* z)T-tJ)zM!H=97nGl%~c{8NYw^SM}r^)akL*Tc)(xZTO)w zxL`|}a}`+_^%{h+oyAfr?mjFfPeAtniZ!fmAT@&|T0NND-($(hElqt2H! zQ3yOd+A$^Qn_$6@bEFg(aeMQyf+V^6#HcWMY(6}$AAV5@vTj$#Mvw@}7uUzYjOYhs z&w%8Px2cu@pi(d4XnM;!U*C^Tji({%2P|lp9das2wz_b;8*I>rS*7{lw>fY>Jk*d5 z)?{5M=|ZSmLh)e~f8Au3siQ|diN{0YAth0Y5(m%Q28k-3^ z$&i|Qg%>7;$w!yGmQxZkqr>A7a2tBkL`9Mn8X6oq6#LR0B3&9dpR9wBn6@fzy*d3R zsW47JL>Zr=SxE86q?iSsY5#eP+@PztgN86SFtqu zdKT@Ix|I?7qQI#*oF8 z3ie=gRzZ?SR4MGZ(xTQ1;ZXpfDNNG=9H~4OE33QdskWY||G`CXLRJV%7W)oJ@*l#L z!HwhObyVcg%8BAwYY8Q3UnNMXaz-h^+@-$!PX%l=p4{&Yu{w6wosmS(na7FB73zAM z4TAm-Q9Q6I7XZ?s!eo!@%4(nH!|0Sto8Af^<=Gf)amy(LnRM$-VMW3`7n)CY5*pm^ zb)*X-N#k@|^f{je5U;>Jgp_R765SA#IHhuD-Ge08vU^yzC0>4Vkfo>;0iX3<@%S&E zce{WL3}stJa@Zq-SE zAlWSjekeVau<2>}K<-MSoZrTRaR0$*yZKsAR$URE#6_%FZhO7Fjhzp;4fC(yC9Dlk z1ZNTy8Rj+8L2^mkYcCbn-{`E5nXivKtiL_B-X8(n_I<%vtWU$|Ac*qZ{qnJRA1eqL%?@PtBWL*841NfP}=Z78o6%yEt&y3S*)CrwQX`dBNS29XA8XBR^o*f6Jb z9l5+7lFLc($z=cfvJ2=`Dr5tR99?q~AY-E!<%$IL}iJo$V3VwG2=8+W|ypRanf$O6a#nGXa zxA_lkvc;k(zOrGg!xdyb_$>%-1RSl7+d?mGTNH+eWUMcwcE>xy*a8$K!0a87lt>2L z5ux4Un^sB!G&CuP(co(s5DzYV{)?yX^IK|Pw{frP-%nJwm_KYuuko@XxeSWZBSBsG z?=D^IECFFvdZVOcv#H}@%jZpP_2D{pS?aO<7ybL*#FiBGlTN&l=U#p{s*>K97e%~w zWW!i*j7c%5B8#^APwxW8%%c~2bO@Kc()#DS^Q75+1)G~hyGMi>Uy9DdhP@Bn@qeyi z`MIgO6FPPO;1r6aBHPqJNkc0i%s~B#fE3vjAfhD zGgWT}9T{4ky*_i>!kglSIz!^=<{|>;&~S+07}KMRY)>Mb4T?00jxNmexzy;EVrr7|@x7>UD~~iTKLBeR8bvGyhI53?aTip#$!(t+15~IDM?Z#8X9iOJI!If~O!wiqk$9G<;q)5>n zV?-%E?>gd{$x^#+dIuf3r#PGw>)b zDk=CUyS{&tF80{`Tp>s)86-q8rh+wgp)yh5q%n&EtpGaLSgh5EYzz``q-z=H`U9`| zt)ZxjYrX`Ufo_sIJ~_CaLg{!$iMSRDPz~JMaa{`8Zc2h0?o@ybaea={i>3h{TQcS- z$-{J~cNc~-#3j|^HnG*WI}+YdWBl{CUZVwD!Y4j4+G!cJ9Q0cjL`l^>K<_1HD5_D@L$>X_}1tP1wxV{hT^+g zJX6JTa*OE<^2T|Lq@KAqvoM^YoKPGwUv((^)^)kaf9y49@GZnl&GQO#tB* zO?x;vj3e5v!BZMe9A4VdR&MNCutxH|nK9_`#GCV8oET{G3&68YrJfIUvuSGk_TbIE zGj*YV^mo=iJdXSt`c`kZ$k-V0@7XApd@5rVX!2kpr6lriUp>*b)C4L^H0FIB{91#U z_%?a$q`Wc9p7YZ9W+Egg!T?~%NQYejWC%|_8X!9EIM#@chs5rroKwmj2ZSRAQON3E6#W;1p@k|k%B zkMZ!SvCkK0!=jIj9627fD_x|kO*?h$p;As6JU?SB^Om}|4^DG8KT*WG5Ja1bgmT2L z(kea2_IcW%NVoNsZw)s@tyU z>eGNPC&kT(0cr?G;-bS!EP8^LzBCZ!YA+dowe)jk36lPg#&V2Ld2mipVPia%oZ>vK@KihL)h z!5^)0+ml8uwrE?NF__)|pWD)&c^uT|86z=M#I5AVgj=0e#i2F-Z^?JQoXv2kEH6I7 z4c7J#lbRM$HLEs#lea&067JZ*W3V&o^{R1a^4lwPV(+l&2_Ce5me#Q_taCtco;T_6 z?$lvu#a8cF59g8jqL1VQaj=Uy@!F|JZ&-iELExDEmuCiFpZ>lgXO1=__R3yT(t^ZR z`(jCgH%E;j++UBW8gBL7yKQJYZ+v(}H+{bz%;D0r)Ls6lFrkZhQ#WOsch+s-2rhd&O&*@^$%DRc! zK1l;_9iZ6?t;`cb12g*3lctO`Lh^Be)10QtgSOZCJT@bHbtl8KU97F*UTO~M+UM!n zeyX;*@9J|X+wQt~agxN_{2p`<4(?j-m7vaAgvAA9ogD4t?CO9@qMO>W`ic-f9DzHs z{)RaKhh56AH|JV8|L}F*p;LbLim4evn;wR$ww&zBnOm zA)zzNtA|^*K6k;$U}fNR*WFy6%SvXlt0iI~Wljh5Uamlz_?eJ-{*ACH%`!!!bZ3Eb z(TfWNLmX>ioGAIyE^qE&O*%`F#(7+c0d&M&h+S@S9nLnlve&`q9A(H@h9EF2%xtH2$12OXCS(LGwdv%&m64s0DzK4 zUb?H8!v=G9T<3j*I<}_3?PEjxHP~!t*<7D$r0RL2OppgEjs6y9E`le4&$-J%^utt- z6w_ap&?pUADK*}<`nf0LaR16ZGTg~@cl3lR^jjkC*0To>%hpT-Y?56kF#qHpeb?c&~y~c%etY(V?Nlr zWnR-jcP4@eOh^!>lb6lPr%nj;Y&`_3f5Y99Yt0O>XVT;dVK!zpWWfxQ-o89Lz_p(! zSPodNonjr5G7`hzQhMCwIyu4`KV9$v08xN}KsQ!%CD7q3G`My?owjy;2S74X3}-!3 z1(o*X1(*z}qy&@H%E9EnFC}7zhn>23T3?1;?jq2w9&)uIVY$i zuCBRybp@U`#tO0{8r{Ycc2mw5Nucc zqt;Y?CBi_rsr_y3l@?CZr#B4GqYZAzHkVn9)tbW=0<)_qMyb4PlFP|pEFs01@)_YMPAOu1s{_Zd!0zPm7j^{f9qH} zcFX^zlfw6#1E!$J`!P{hYQI+;d3woMs(tj@l_)!tspONEabr!jKOPFN9jp)(+h6}y z9ju;CS9V;||1ee?EgSpi%O0(LGR3aTQ7`_jh2HNE-)et8b*WfCPl>NN;Czr;Sn!$r zies9;ZnyVP?^gmm!FKVO^ON&FR*g1o9_YHgmyzy@SyKA*P3P7J_^;^G<&Z-Q&%TW` zJ^K-NkTBjY89VUc+4t$a3#&oXg73aP`{_h68ZxQ-ZJ%>_ccs#56?S3&_3vkUBad}A zJKg6$NJx5y7aA-`+3d8}{oVU~aO_EW-QoMs(fFowRi8pG1peTRUTA|K-=CBEmOBqo zyoxmV@#;YCwD0rL6?3DRnUZ~O3`ikw_o>8RwU?iGM@$-|+Di);E}jS3U|+`I3}6*_%j$>bI)8+f?9nEQ8-%_D=4#Ygu zcJHl#iS#c^545}Vj==5TKcpz;Sf}SvFEVrqbHR>xjnvgyAxmp^IpfEc@YrvMv`}p7355| zWlhW6Z~!2^$1=K7SFoDr*2ZDTXmX$n_3B&?dNUYFx< zsJIO_-#=5K6XHPkJMI4VfkTtSsomxW@9K!%=@KU&)x2*~E}y6&Xx#buIBdp&m9+No z)03EQtDlA**G=CF%Z~L}1 zT7L52e#d%n_q}^T(<4uxTuOUe=XGGQ|FmQ8+p-fy_)cByub-Q9L+_rrcl_Sl{q|-0 zLi67rzxQEEOcM0U{Q0o=f>q2!E|nNeB)g8%OtL`PPr47_P&Jb(&UeYfLnK;hmMV8; zXU2y&uWB}3^>DPOtMntKxeTq;A7ugaZ>#3A3{7AkBhZzTb2Kxdw(A!-N4wqQO+;7b zZx8~b=3;Ce0v2wfr0>hcYkICM+)}f#bh$yy3s|H&tG{0;2!3=Q!!E*5_A8F+D!6O7 zrbaL>Nf=r2yF>b`>`zbT3G^?eN>=-qWvH+Em(z}^1l-NF2@I&ncdrhpEDl`_xJSRD z5?FOND=_eW)$LWk6WN~&mTp&9%BTd@G>-%ZJ#7749aP(~u^Lpz_^T3J-@`MsWZG!f z?Dy}WS+THL`!{UrF;tF!M0$=O(tj(``){!E)xt+I6aNwExng80;03s({~Md$LhW_S zn||5VZ>t@Jy~74u{tcS~0=L7<7mpsgJlYoU-i>`!`=8jnXbxO>Dp9Pl;rg8Vf3QJ< zgk4WgKJ;j({U2=5^89yQMQUA#>Hor}qr@vX)+&TMP^2z>h7B)z$ z;~jtg0BkI5M1NR(41g-IumOuA#1py9S=h|$^@}G9__DC+a*B~i6;EYhQxdy7aaFF8 zg-vXMzX(;ekA;nU+oVvs)*=fV&G-G1**G?3IjdtrY;!cc!u@%(6SJ)>Y&It6b6D8O zUptd^X(7)wE8i#HEme6jQO=vNSm0ZkR(bKl`*HvX>`PlLj+n4qDv4f9Te=;$Gq7~$ z3LD2VJyFPNxinQFeYq@MXK=YZ%ba87?sW&Nm5Myy^p(oO=yatM)W$uT;^Ms3mHU;I z>8sV%j|NvC)b6gQ2Wqmlj6S!x~~xRe-U(z5a3XCtM1{)#}^K%Zif9AL0|itVeh&m z)*RH`{*$0y5<7>2;Uudf8n$n;@XFZ0Qdx%XVwLPk z)h?geEEYlD=1HRp-CxKPJ+>!ti!NP8u>Sj{@)9cv1qYg82KNyumcK&Nn+U>;(EmYy?>3} zBOHHoH=wTCF#cSV=cjgz>G*&3FaH6Xk~Hmq`q!tyGt49Z*1yt&xF2Pnj0yeppBOzO zbMh!~y{o6Z_z#Sl{L*vSZ7Nl7Z7jU{kN&0odK6-D$-w%xVqQ!&X=rP1hE+8@{<&5Xr*mSx0Q&=g#L(udp!sxmj9y?oRgQ ze-$DPz4K51Rfy=MKjfd&Bm}Dv#lS`sJ}08gl}f|8|L!o8(Y{q4fr9FnCQ~t~N@boB z&X;DWN|jY*&K+lkKT{6^oF2nim&tKR7u%Xb`ko0-@@S9m06b^rO~m%s7C>QB{84x z``u31_YoYzTmL##&eH<6WfS}#J%M6a2x$ZV z^#rQNAOKb`v&T!rfLOrZJ|EvOYXS&x1qvv2K>?(QS#k%0Nd8A~u8s;1FF$!*czqz( zFT3((p{}sE|4M|cb&B>kb_px{Dnpovq3S=g!7loVa>-Nex%Z9lonAO`Gu{5a$%AtZ zCZF`9s^29OIXz+6yx?O^XU8~PKjx`U)kQ3&zg?a1f7cqZvb`QJ9P&9S{`aqn^jqK* zD7%o^u{Mux4q+=YV_=b1CY3=>PI%8 z8ZD3e(;bZq4|#QST`|gas=I9+Zf)Hf#spsLFOID1HQCBqY?W1l5C;haE}XV)db`;k zA7zx2SB4Fv|Dtw^{v&^R#;ZbZ;8NKPyB03?@hAh5AeoN^v&+O_Sn6-pGcfKqdYkM9 z%wgkX>-48T-kp=w+T=X;c#{EPhs83<5_8{g^zj%}QON=yGa%_maTOst9CF=XCLMYi z*Qqo|JwgTx<>xYBZ!^j{vy$3c%Bjb0JEGuf9fx@gLZu--6oVbdvYW=K^o8SphmRnQ z0vq*^SgrkY6BPdx-PwE`&s~|EPgR7XbW$ASdhxZAi_UDGfAc-ruGY-G64Ll5fC=y> zu5ifBvzYBs^8l9E?1`ImX~<&q&ZRy2=p@#xG6 z;VA0ie$G1c0O5PHvFU#4+~84!{P!{cKoxiy04K?q)a1G`Sp z$hT8!F(}R;5~d1af^Z;10d|DE{2ThDsNeEa5gKZf0T#C2bPoREl52!_^WN-+N~xmr zxith(|AV%f%Yyar|ArL=Fh{{SBS6cL3Ut;>o03s*^JGV9(?kvc8UheX%U@*iiln1g z>b<+ulvskpf8Ogb8BAgE3Rd1KUU%XB*g)jHS1=LpH{yXuW=9fO@AVTZr;S;mUaUE` z%I5N$2dD0s-_*YmcsBN2gMJDJNr9bD>nXTiR42fpQNbt%WBlf>^P`Y&Pd^QAl9I%9 z+&l1J1TTDi>LYTU(Ybz}E^cTTrN*VBG1ic9go#_qx8Uir=cb%k3yWNOb;I=Bql|nA z3=B=Kc_NJOOuZ?lQxh}8AcJ8?+-U%+v(rlGh}pHb9E{G~kU8ie1nWk8u4NE`V@7B5 zb4!AecMm*Sez)Akc^XHSFfccx*zL`k2Yz+#Mpr}JYp{$@1~C96!{Q~ssnTNs&(jsC zZr(5ZUU=@a$utuVB@(79`qO1a0%^X0;vN^j$24Z+DiEUj$*Orvr~VC5!jRcie&orU zRVgK=-M$&+aa9zoM5pZBy(jFetsW)or&u;InkDl0#S95nnCPB zq^0OCk{nDWH!o!?J3mAF+{%|{Q@Czuwn#&8dndh8ndW}H5Nn(`S(%RcPU1O6NwDx_ z6QS3eKzjR+aB*uD|B%bDlblc}K;7-;xvhoy@S5Wg_0ot=LKU_P0a}FkWQ4ZpRl>QT z`Q0OW#mzG?iRKv1ZZ6&$*6?;wZZ<_YoEdRC)-a*pxk!Zdg{xa*DAJDSbzmX(*`xew zcDwVD*}5m>Tvq&V>6jTK+}8MPjJ_wF84{800B%CUp*MJ*d~G#IBi2;IZ<)$o?;oXd z7|SQRvSh#S{ugg=9am-Awv8@&(IqJ$B@Kdvw2M-@ML-JmnhGtcaA=KbEi|K>OUILCdi^N91f3`qE8a*F|gK^R{{0Q(s) z-fQQMZ;Muu1{9Yxx4YTN?~K;xAu<_Z5Q-_30sUlGPm$ba z^Zljczys zyTYM=%sTCdi>~(7%)c(CSzUOnQS0)Sh?uD6h;{zvi$h%cX~fa25w$Y=TIPs#a%iNH zRAL6(LnzPW9kI>~C4=foYPZEkZxx7jRr zZt%C?9!9aFra=>fJA0VKYIk;o#E6(ko9w}Y-J6FejO;D%tch$9!_3AFbmYJzVr0}N zDyma~;8%Or1&d6V1oj%0rAnuFkCK4xOf2eM2><@_Tx3erv;xk_DMcJ|EFX(DIOj4C zpcLR&JN9nKwBMtH$u=DFwK&=|x6gXKi;33yr*p7=v#z&EIDhpHW2{Xl?^23LwQ*Ro z**@-zgt0)irF36>(`dBvY)_t&i!FYBMwkRq0r1$9?3C^%FXv|`+A=OBIjH;C=gOED ztrX;ZS5?F(nOrGM3*oA*%$DrwqxoGL7wQgRmG88Bv<)j;f{m+yWa`Ilzx(ukNh7RT1Q<*=Q{s#q?8c1;{E0n#fldYHv7S5N& z#+8n5j|q&GkQ`h*eZ12Cd9MMwRcWl&b*?v6qqg)a+N!5lqwn0iiJChMV1n3;C< zU0Q)RbQ{-dQ2@i5^%V;Vp>*$W+}qz?7|c+5#ByI!RG~BFTScHIgkg-;7cn^sal63^ zpqxB!Jf}Rt>U^$qqY=U|Ar9SCg4YhDoSbjC=jOO{Oo8W#=qTAK4pm(Z{P1W6WKk9a zbay`j3hZ`GWX?B3yRE9eed)#o3!_*fCe5Sv3D-M7V7yWYg~W!!WOc;xF3D9DY_$=u z=PslnnLL*>ZP*hn5Td|9gEL*F$Rd$B#06l~%FT=SJ2hfI7w#VdYeOAi+Hgou1PtLw z%aMsF2SvO<%|&ZU^t?vMe(qMnXJrD-_^)Jdar(9MuFL}hGfu6b_cYNDj&rXqLc)~O z&)UvB6kymrNSP}{Kg}D#b)IA(WEeWaum-Ydp9h9`3R^pQyf(DrbBArU5uNMbYA3r$0w(cg&FyEj zc46C{jCcCCyI6urcDmUUG)!cn9u@tsDApNm_cToP# zS6zNe8(oE8MV*%b(bhkw^1s&tHPCogWU@zyKF9oY^3RB7u<0#945rEE>!z!FBvTZ= z{)yH)qs*8A^NiQ7}Dy+s(5kyjknNL28iD3Y{cE&eEnt=1GGSZ z=yj@X#Ir}krMbsbncxa7O3H1#GxJyr9C*P>J0$vKyzFQy50ExiIlO9wxRlwR{ktT; zBTDX;-Q4q1zWG!A2SCYV!sJsMZfr~gN~! z-Nk{lK&m#|Oy76qfJ=Q%9kYN$9S$F%0sJ{Y$<@q#c{+LKqg3%n=K>|UfEHNnjrN0| zI(u*>M%T7*!P<}yK5NeI0;cjq8w4`RKCO^TYp;9wEjCRK?^3e+z`x>Bz@855U0if` zbxd9<$ck5A{gbFe3@CZBJg0{8E&P8XBL92Y`5l1T<^PM}8A4!1Wrl!CzKE5Z{sc9> z?6Wo#SNI0ahx4_wg}Pm}fy!$q{!LBNSG4?~^Ds+Sl=Gn;BS3&AeyWnz5w}5N8VTm!@ zY-Q6>=*40%JZs;-<0WP};JnFnUbNDQ9GBTgWD6Re@3qhY{yOVp%sMV7&zUR@AE`g) zE(%2Y$Uy36$bd)4ero?SN9vC}u}^o)!^5|4rWQm`JpfRf_G2IwYr!IVRn>|=DM*lU z2jsnh`V&upO=z7$O?m#xItJ$+^{kO)5Lf`NJK_*3>d1ZQZr7G&ix|7=%Uue|&fmq+ z1cEteB=gb`4|@m}QNfi+O^FrGE9ZS!k#J_D*L?U1p-=PiW}bwGn#?ba{llralCl%* z^9pTM2`-s%L`yo>FQ&MUnCLxLaS`E4F#$at>AnLY`EfE{Mz$#r@QaqSv}eb4!h?_$ z>E^f3Ii zmCiE1f}Pv3cSF&+qq7J|HIhtt%laky9xJe0z(Qo!yE({V2gcDIPu>Zxt=CRp@C5x{ zFzn~DyY~!;nWV&Wol9pr`EOcScrW@9obqCI2zl-;^Zqwjt%@Re;Y4$*6+fnB!x#)y zSQ`a5)BnrxE)~K-{})N9-dz-RJhKR%(qK?)C9wm0Q3eZ(rN9zxWFC0_fq}b zbFp6XYO4Rx8{Pwmi~MA2KlTF{xH?l5JXQcGzRt9;jvShG9^)FH^=O( z=b9B(EFekPFPaL}>)Jd8%G6YBKC3^09|z!EQ3?SlKQWq#S3R-$IvKR*bpbB`i6dD2 z+2<>J`6`*@0VETcwr8(%OlvpSSE{pgwdQ)UZq3Z{jFjxWx@|-JdiqVB>T)y!CH`ch z^gi+T8|Ov^EUUafl-~dR8po{OeS)+UD!%mu7g*x9R(#11?!Lqjl~NXyCkrO zvhj!o%+W3U-nXw1knQyAFGWo7neQkz9!RyQ7dvfsw>BvG2fcWy_38G(kcDBJ5BEm- zq19y}4Ds~ivA{C!va~`{DO-!t5b!{t=G=Faldtk3p192?oonHk^JqWC_FJ9X;AtgJ zk$2`gpqfr%U3C|S@Qg0Pk87QW8%PZ#26)8mURwy^bze~eO70KwcB?fH)U^P7JkWlfkYH{d?7&~G>P*X8RG1K)ZGK&He&zPx`FdnnBEo~O#)*q z3m&z3sZ|5;uraB(1f~TWkHKujn0)fTQ8RPog6d{n zN#-aU7&7Q;4%L9{UjMGvnRtu^Hqm)XOpxHr5ViIhulW`v0lV(nmFu`6y0HW&VvS?< z7}mLBb#=CD)^x-_YM#&&qFdO#Dy?CwqeJ*@efOpMd(VX4GwjU2a63}0E^OXkC%8o` z2?HOGSvQ(Z5%ynd8vjh;7S#NO3E80uuJxGw>gul(oToQY--u%`*Uw3m>YoU{gTi5gB6+hgf~?JY9Z0TzrlE6N35D>q&2a zkGz-S5BoL?SZ{uBa^43H5bHG(Tn-(BeOL>b{J|?Lo%43i!a5I^Nudc&E8cSEAVVLI zsS`6C&R}5eufs2PpfvN4p=NpZk-#Smn|$0B+MjDqHoFZA)vXjx^}XB5JW!a{VLpmM zq=k)JY-_q(a^zr|Mdr2ab|iYJ90ex0OCe{ttfW+g*m=#u=hO;hg*FM!H6b$z2?3w1 zV-1XkI|3Xx7Z%g*VISCp%UURsr+Rd|<%N3h7cOTF-|yih55!d>BDc*7$-U)twrC}< zs+GYO_e9f{V(OjJ0`B~RJfDd$Us^-nER(ddqScZrX^FY)(h&ul!jO^GwK8At7RSW; z3b%s77Ovv;D=d-}Byu?@K5PZbS9&^__)j)>iQj z=M$ejk@`F8lec;Fy+5^uGM_X`Lz1x6LBa)u`ujdA-LWNa@7ccS{2^R~49FRO+#G9i zz&S=ecny+P!ffAp_SkNavYSW7@N#TwHh{e)|2#Fx4KJ}(K>GSTiy3j(8cXdU(pNh$ zQM<9YeRLb^xEucQIt;xJZ+L;?H3Y)H+!hrn)Nyu9$)FjVKyi)OXS=-4fMesG;Hgsd5V57730J1=Ns?go znQny{87dNxiZ#_Ght<8XpN}(^h_|Am;|sx;gw=5nQgXG}pNwlWNm@vD-VEeSVD$nz z^Aensl#(YgDcxA9W@Rbe^oF-(O2jLUArUp}4DRHyLc-;2w0>NB2KzFAYkzDjGRcl; z#Xct^=<`WM0VD$ZQHm#DmRnZMs-t#(r{%7UHfo=mb8b9g++5wLpN52s)tbJ|#?4OR z_f0z^8t4iy=FegqIsWAc>Zp%UHSaca7~&_}el z-eb_~4q_dIA?m;5G|v8&O`s2iQ<)l&|Gjb~umPO%;puN7t_Qp*v)&CAe?(h)ykDmn z2nAAlUK7g5zkKFe8${(a#|4AQDP|`#u@nO?W5RpnOOJ3`pmyDN#);|dDRx=9j*|`R z79xfh=cPt_?62>U~l#P>jaRzD!H zWg4!$bpvbkm=(Ev-WCE!{}r>{TS#ELuDw!iMaXjPMD%mXIUYsakki_Avk|iUiF!UA zEj5a``eyCgXvxq!SF$XL^-B=36VdRK3cRAN3OK*ZQ}H z6wiKuDftsTkk^lt(zO0`t)xj}&Dks!sNv3Bi7>^0aE8z8HIqKdiumt>h&Sur332I! z5E~*k8)pBE)BVLq@1K6&?|c8-cYKon5GRD2X+Aj#HLOZIZ@1I^Rh+1U{N09MC$S{J z>vybU4-Uka{?%Nqr_Ag_5?=>`u$v$JPk8zkOQV2}ooyN)DaqM*3# zlEOwKLL)HUI$N;6Fj>zHVn`K$)5!U@lgUuexJ9z4Wq?9BJR`78$c0QRkgqURPs<$) z0abW+Im$o40}nM5Do|q|O~_aS^QV~(qwb+r$w4a;3umb&g$hA7E=|ZZHk?7%?&_@! zIea8so(i8c%Fw7Mi}+$_hPC&&!^O-vi=dt6oj0A9E9(YsM!@gixMbp55PS z^B#LGhD?y%LJH@5@3yphdy| zA$qZQt#SzencWQ*Gm%JHKnf%MGdQDSQ=={bF^$jCgo2Q=z*0kcZ)jJmf}1P&O5Oa3 zQ`tps0UtC0!(MSFLG@dorDj|@vlo7FJM>l?!=z&*HjGC=r2Q8`7;F<=tPcflcXLMm z7eTo3o?Z{OlI-q)_>q|QXFkXY|H}YZ1MvP|=7MMWUmDsQfw!)Q`lSXjoFq4?PdCQPv$@7Fl3n_zc~IufK09O2uDpp~zEbyT ze&9I;JDh~ub6~?}jdp7w&0q<+WuX`lT@2k*s|p;=rtG@A=B7`Bt9;!!{+db`;l(=LT)f#l=o>Ei~*367lng`)lKcJS~2U=IL1 z@MAvzyO?OaK=*AB(gHEj*cIK}<5K?PeL||n*~BkR&ii5v`&Az?%b_E~4$S9EF-j(o zA`J3=*Pv`xHIRm(`Ap2})cV9?4$SBHA2FLZBO5Jvd-J`yeYL>sKv9?N@l%vqU;=24 z%noz#wD|cT*^!DRV0IjKkhEJb{-dA=IP{nLTs-OQ=fL>?GfACT?7lT%hp_X zj0Uszy&7om&9;8}rXEUbUCR+_tlfVE0m5b8>C(La!2q=}odO<3$Y9^0m1oD0| zlqdXfj0}-o_$Q-v83W!jT$~LPTa5MdXJOLqlAPPKf|JX7!H~Ak)r{w&R3ns!uu8+) z2hNXR(Ek4AQFhkR#!db1STe#L`)gHyNv*KpQopmf+Or|2_rNEQM6^#_tc1|?0 zP|53AOf#iYZcFF1o}NWqD!p?$9W_F~oQ0I=<+0eIs72sK81*jy%=`UJYyCwU<~>Sl z`8cW+DDv^$2U^(?}?mY{shiC%m1iads#x zki84x4R~t55W)b`k0wqpu!n@QAB;;`uq{fm#Q|F8-V?FdhWTH-_TGp;kVZx-uXiN zt8!ycdxYE`{UvfiKEU1s+_k)BLU zGC)c}oG70qLWZl*`qsiH{5Gt{ZjOFxrLpC>5DnYHTq~{bo-N!v_F(oJJqVhQx6kXj zoWMeYCX~4z?U3`(uE=32)y9Lj4eO>Obx_LN@k`uk0kn)K9=o(jE$V@q0Kl^*a=6o7 zznkRUsZs&z0vFrFQr5nhG*5m`e9?=X`=-+Q0olo`tHp}mQAPGtVV+AoC3Vr#6gXo; z!;etEsh~sT-b+R)>191gSgXiGvLXrnzSX2wyqqWn+8t^a<&{_TGe1il2!|77xBq&1V;I{Fei z-4iQ*Jcj}%uTGkP$x$5tMfQalTCIc1!sDof`X#HOI3TaR>8*Ae1@fBVkEletxnSb! z;wz;V&+;If`E8@!D3$YYOsAqXfpm!pTii4J4x7fyX|s0ezbFoW{St(0X=YAt)-A9&|J7#B{(=^u zjQjs+&-mNV;D7NCG2n~J{-6A|2(p-|x%xpTFG3VizkX5C0wxnDf#nE&Q9|8YKffqx z@n!YwPZf@DlP^KiUBQo&7nvtMKoWU|C^4J!!FzO^JU1d$_iGEKySeZz?u&TI)DhP# zxt)tcaA6rUP3a{(S|7v!eNnr^891c{yPd%(IEAa=9l`Z_D7c}-;!c4@Dt&KpZ@!zA zz1p$A9N64sU#7A6r^e!lm9X&$Um-7*E0tul_Et0o-RbI&1JvGE<9MI*T7OIS+^oTa_js}t1kGU73XUDr8pKGdRk|J9;{ zV9oN50|k*B2q`nwV2bE~n8Z99=eK=F8$dJn)-b=3 z|L1SZpMo2Ic#oQwl((%S!*&P7Y}PL*wiSz$><$Y3nQN-^fBS2W(dp-e`M|yyvR}w;o9q|I{x+fKxhcbhu~Xjs0Q+(!H@H> zm`lXw3%y3gmoaunA*aoODuK}&n=d2BIwEbiA2t@YtQV6c##^O3JB4WUSTNbVhVXSMERWheA$_=XA#RrS_Hu#kH-pHsa5&1D6NHMlAOw<<(p# z%`+e0xmni+f_n0_0R$w{rQwfbatIo{m_6$b5ve}nA9k0AmpIAhCTfJ$SaXJh=Q|GG z4m>Z0A|V&s1UU_~Xk^9E;gZz-uIX+?pBCRiR~o(umRJn2sQ7#fLUF=RR0+OvK>JwnmZAwFR7@=9(BW0FJoV^6-K z5O6mHMM6whqj!Ys5O_tM7eiNn-uZxN6S&g&>)sFaZVU}!Ur{keer^31y?YAM5&I!l zfcd{;1%C@{41j6S&yoHwYw9dY~{gy8rLf+?N#)=!v<1DL+J z2eNq2j&jmJU}_SMFKW%Iz+TYw#C6x>o6qq`j}TaH^`D^RnCyHjO?N!fxip6S$V9x1 zn^itiGYa{M< zAi2bJbK^~($F5MF^zPy;h?CrGn3G(YZ@l!y_S-#3KGZNhypSgIrFGH25t0v^J7{oj zoWmJXZw-p46~I``DBymsTZQDqsgMy8nb#z9q~IAaYB*^@($*<6EGi%$Rxt38gAxc) z!{cZkHPs>`h?5*7`N4FpdYH|iRNlAss4F3+mkNN~on~X}*e zyQM}V$NXGdgm&P&9Tbv|HIUrhb0T&j#PtVfFu7fw3(QCp>cj?bVFcHDVu)?@%99mf zMj~;STnL5=wdn7B$Dee%&sD^8;bAZDa*{Gb(Og!n(C7R_BvtZaW}N4QL$=!pVWC{~ z>dH#t4O->2+kPX3ylJpxG=QlY^0Pfv)OQKqCrz8GN1UM#)%b%m`0M84kFHh9L7d_K zMto}Z>$AnhB}1MXtb|VB>5aNsTTG!G5lmO8e!XmjQafoA~4?EreuFsB`-p&_#d7&E<)M?w94{w!Dxs*9fWzIGZv%H6GP3$#`_y{-Y83b4}kHpn_2 z-*LL!0*T)w`oi!4BjS^uebA6aF)IPh8{FV#bUAYMd*56JVW>GK<|H@y;UcTPv~c|` z+tD)eVaQZO5S^f+Fh(OV}1OohhWIY z<4Bu{YM;{#12uYV78PXYuV98O92(TXim%1&3rB`>M)|>6Q6M$?k*T6pc0djV&^sXJ z%fD_Y+KPXMQun!BUcq#v>_ObvT#RmLN6VQxjA)eX&ZNO3B94e9>sX7RkQcDuFzpfN zcl(uelAQ(&9-*Wj@PaTDwkr$`T4QkGEPE>o_?#$Kb4%$FhvgVDL>rl;i@-tKqZ8IZ z20}a|e4ClL4^CicwMDVO`y`ACxB^YO4lxO~MMWViY*dEe;3P{Sklx+!ESxl7nrEq~ zX_H$wYt4dpQ0ZVgTZ5`TI?=JLKmH>(!3lbBXX1EtXR?JZN$8VU6TB%bkB?2rxs{}l z&gCm?Zyxwy&Bd7$#s|>b+s71BDyZAq^mXL_oQ96k)ocGan|HI5_1d4s@5rxU?cexy z?H>fNwfi}A|G7pJOkhA|)&iZ56Dz0u0b5@ET=lz%g>eYBFYp+=e!}+5XH6-wbdceD zaujzyKD{IMTx~5f8FtxFKTd$Ci(jF*VOrwU+zWZ(*HUo^m~@A3w+GSiD^pb6z07~P z`61*nCe5~xSP!Vo*V=SNH0&_W-8X|We6EB-fa}C zaLSkz-5XK+H??fL<^xSqsz?@1)D}9a^43K6?t%vhiGB>hZ?rv(xN5bJ=nSuYcx~`O z{Veje&8dr}Pn*Aei6xJCr~lyT#^(b(9#%7X6bAd=lCd2NeEBWjv@dw+fadypKg_j< zV=pcy2Y@~L6^WD=LigTi>g6{NPx^qksQ7jZ4su>_EW?zy0tBF0Uu?~y2zwLQLhELD z=F#*ks@RbtpSdUel_kclNzYhsv4qGlIb8SDlrCHd|NOx?Esi9u&N}=`e9x?ceaf&7 zqtrZF0iPpG*viNx*}*Qr0y*7EvpnqvCl*siw-TS}moi1);bP2$)A)cTdBCXY^t}p*$z)l0C8vWY=JO2#HL%;$dRU?5+>&LkXG+-0Y+Ti)@ z&*L%kRoM>($Q+j(4Cj;I&4QW?08-1LCWE4*k^?QiYSz~!_GK;`(nm<0i9hWnAvjTe z>qt$sg@QyF!wgn}ND>y@k?P_&r*}}WIl>DuBJK!O82_ygwajj`p35_;^o#{>y_p_>0m~3*JcWYCqrk241#z?& zxuYt(gUF&+RwzXUPv#?Od=s`H+;NF(^3+6y*1ot>kgUBm<8Mds&D}a$!?r%n4qFOJ z>ltT(`Nf&jdgD7*;X?8XWq<+&(2BHKuMR2nGT50Hay`B$-*pvXF)S&UNuG*@mX_P4?)-JniEAgcKU(V zU9m{?_gn07YU8Ohw& zUz?Js4aPDuz3O(6Y=oInOc{l4mKNN7Kiy1q=ss;hEt9^#+EZ-js1(648C6LJa?WFZ zIE>|1qc?OCs^&{-)-Kr16SEA1s`d638yBDu&z2|smDxL0zERivGW-M0mcq%&-nBz*r~;$XP+ z1+}awa8{~)4v4~S2qw_o7Iz-Dz!|F_U&tECW*o9WB*3)0WZu|$E2WwjYhPMt~EZVHH;U28kG_E zxU-u0{cq^k{KCz+;y?^^)TdtU z_!@}VV#h~Qr_*V}9IFK`m6*0d-@}G}Ic`s~;G>ZvAJHX1Mt5_v*yIBdi)NzWHNOXk z+E0$uY)Nu|V}y>#bk$LBh~Dk%&%&f0vB-TERxFICBj5sue^$fkhe42!c%>)Spt#ey zvG!(ZnqGd|x5m0#DGbV6;c^KF+eV0IrYyb*t9xu9*-4qWD=~!A{AsN1VO(9Oj(X=(z~# z{X`C%on?@zl&9^Pi@LxSG9Rrj(K8>TeSvTxR^Lc%A7?A6%|~0_z_o!#{DCiLtw|`TyO_tKZI0LlWzQN}=0+@Mz%O{W$K_NvrBI zNRvxPJS4h`#>zjg6ynp*?@9lZ1&%w9WYxsu!?*}-a>ZQr5x$W!$SZadEom*c&QE^c zdql=L8U*3zTwWKu?}Gow#w+H?``-oxA@43FSb;O5@c_#5a9@ZQ7%VeuNm6=b+muvk zR~UB@WO-`#<|{Hx`qG|@D+b^a8_#c94Ef>U5p9jjeETS{G1nc=LeZgpC6Tj5k0 zrtYpX)#a4oh~V~Tbh9W)&yP^LjQSBdl^Kq&%)JAPF3FLvTbbdV3(K6hS-diOBpbdW zI;Gx^QHK&mgt?JWmg(hA$5=>7E@FqfTif>M)MLafQK zY%N*aj;&|nZ}u9%MXHzp?`nANBHtK-WW9|{=H*vcMUtWvw?RR*EsJ8i?A6s0QygY= zPgxYF0yf;bZa0!!fTWzqu}+@f#S}+Hmq2dJuoVesmqnAxdA-_dt9>>jwb^X0Ley4` z9|i9E8Az1NJZEN|w)6qej}PNopzX5#gy`?bo&P1v!+9lkr^QICX{TRc*xBv5eoO$)jQ?t6;hJFPLH7%QbN$PiZpey;;H(wFrFG=H4W`Tc?`wKh9yeq? zPpq^C$|r!cG^BiL9Nl@Yb>!it>ofDe<}*5i^A}11g>vhzWE<$tv)YBAE&R%dRp=`2 zT|d9;nRf+lP|)3r!;*q{nR)YW4S;j_sgv?4^njgv5^@AcGn8Kg4Ow?-nv-tYy~bFb zOx;F8=S+rt7MU~8P$Rdl^|5GwwIO36V=`t~*kF<}zGK+rg_TmWH46;56cH-~w-0Rf z^idTMk6Ub^uG@B#zd86%yt0(oG!vlVD7l<`cbf*qj1T1>&*`8s z*m%NCv)Zz{7}jZPT*d-RX95H`*Epu*Xjfe6k7kPPvg_4%CW3^??i^ies8HdASRf=0 zCKdh9?_d%v!<5ZCTh72hBRe@Ki8V;dlkBz!rZgMR$E7jzg42v?9$kE$*-8@9gDOeR zc>C|-95NH`Py!(q5EgY&Y$0T}T|2}migvZc-VgjBr`NSd z$nH%0N1m^GwWVlX{?c*Xk#(#FI&%0qe_d$PvqedFKXDxWmdYum24c(eV)nP1>6(g^~Tl(oMGDF61S zm>a;C{O2@=;r!+>uorcC4JK9I|K*1L$^x2~DLm=ab zB$~R*O;>HlTKpfTL@9KD{P0i)Ro)F|d5=YxK!%rJTpeaWa>q0HdGG* zTMV6FmP&TNwy`x=X52dSMbax1|9;fYX|hZj4nu<1HvxRFl8Jhq>ysQT@NFaF$za6> zo+@j`U3^;}CURMx?rCzW2d5|OaUJcm9GH9#`pMZfyGKw#abB}wF@o8+q#p$9u0LY0 zNr(&+!)F*1R^LL;1yLA`f0O_-7f^+QUjRpjE4n#HMS&@5yEZ-1M|BL9+=J;d z)Fa15OUgH+A?gf7%1nql9~}p?Trx#FyeiYlH+roO6$R4NQ|%G$7aLcB<6v<{HsJg4 z(C~DF`~ZQU^BeVCX($24LJnu_+GKnB&@I}U0;{fYy48x(X{t#Io7LyT`Z!L;fEE=M z4&6{=SW@NM=xvn%`0Z>gcF!gD?9zT|0ZV`*D?B#E0K#W=9>mJ_^&hXy3}ugUqGUg= zEclt6PXLt--M?YeL>^W?ee8WR|4no8wVSuj!MEqj&y9Y63^+8bfLQ$jbHJzFl^Jf< zJD;~Nn|mhUNlqhMY3S1*!in+#hrYd-ahqZw!QwuRXWe+NjZX4jSxmt3o^IvX>*g3#`fd!APv@sA`I@*r zD=^OEoMA!X0_w*1mF0`4nR$@}F&D;YBO`4m%<(y0p`t+BjAYp*ARXox1pQI8B=Bb( zt(xkUX2<)imUiqrI+u5|6gyY+3$3k#%0PF=U$4tA0sy`L0ib`AIO+s-FsGEc&h~*`9+v6E zWLicfuTq@pIWUNf>CQc1^4_uNE3oRzONzasCQ9DVb<>c~ ztGBdbV{=hwL=%|oxXw1lIE`v=wFhG%UHuLlFOt3%-qDG!i+_B-@yir0vn=`<8EoLo z0c-JZrH}W%96lwDZG|Ovw?~NkS5XG@f0$30^0EFzFdb0t*Frx2hXgx_*~u(Tfg#$`w#yV3Ye3v-=8Lc~DTm#HtBhQR>>fVub#%VS-!v4D^ZV(dV8E*_>@2NT zpY<9V8{K)s(`aEd+~B@AMa{Fg&W#3In$^wAThU*H8a|DIcEhcwf7|&Xi%}tcsB+Wr zK$@xiN9PB$7JiohOIG`De@XxU_=7R{NT&Y9lqC*@YH=r5z?&L6YmP7R5Gdf zP9ywaSS+$+Ok)_!XQ5S&nd*TWb*`3FtW26%=d^XAIhH@)NGiv1wa9ZOb(#vh6aatr zhVgtvQ|^U@+=SoA7J=Wc+d-cfuo#0&utJk>P)xSgP2E^9G#>jrr4KyK*S8iu2G z^Ip!O$~M07?aGph9pu_e zX@9bN>_^nWZR^3Z%1y|Cfa+Kkr3+*SL2YYpiuQlhvHqB{MKslnJ`Q=0pE^1f|53-v zAPaQI$Nxxo{Qm>1HUO(H{`o+sCJzO5H#q>SbST<Tr%7y-d^c-gjN??{QPWKW^|e zWY>z4+U334Ygh;s=pEfcUdje~BdbDIUQ?dMu3Weev{?!g>t_gG4;aO0b*ZaB$wU+$ zdB=7ZYZoykeoPyKa4ff)1s7 zNNCPtHU>6=Qwsjw2!-e3ceY>7Pm3^YIo3U~BtB)XCjozA^s+p=vm+QqgYz($RJ%!f zyBC-F1okQj$tO?6#5XPYV;Bi)9jRP$$q}Zoc2auC}Kd{GKYZdp7Fw zlrh) zKA}b5Vxf6Q`Cx?2^;AQ_oUYidp*DfJW&Lb8cmi)OLbdbNT%-b(C3e&~?K{@dh84IR zB=zpKY_ZrC#tR7yFXny8M#FH_LsiZ$oKAGsS02VPOL2=}SJRE>vNWhE%zw-ddGH|1 z`;3Cg6BGfXe0{ai4lY}0MQwZ2ytK_t!yt|NCRC@9xIj8L)oehwBpHNEJtg|$fv4*xcLo zc)5hc13yUJs^Fg>g@GzlG0xs^FyFYcfm3-)7fEE=9{M2>i$=jvwX5jr7h#+qsl z`Dao1k8+@+3y_~h;gH)4>aKqD^+F*9D3K3cJ|7pYLa9j*QaJAGJ*v9`jV(ugy+@U8 z&_(HS(JHw2Zw9GJAcH_f;UHpj)Yt+wK7-UG6tRICpZn5}8e5>EaOm zRJ4jDkywVxfuN#r=t2(^t%9O(;Gu!OUZ^NM9(ZU_WgEEA1NZ*IP|>OwRCfjXdVwJT zRkne?-g!_I4(|P-#%EA>wUXm5s{$(9WTWo9iZizLj)l*S&*jSQ`|{c*TARMkmHm_h zl3)(K*$8|V6dl)N_r*D`l-pS*OUZXS8KzS17LD7b`4N52OP|IvUCwy8TECnbK`Bg)JL5+KmNh$)q=ap6U;>(MZL_$?hQ8@m`j{{iiy(5$ zFI@HED|_;}fe%wo^o6gyno)+oqW-#iQC{y2&(F>)gJLExbDIAb9xfE4cPalGY9h2#C7We3elNLC@OCv&BBVgF1izpTm`xc zN_Z$Zua_zXRslR#%(A4uy{-Kc1;=HUw^C?(l}tho+*W_P4x$h{kz|nD6*4Us)KbrN zq}ecQ^rfcyu*EjWttTdnhWFRqQY0|g!cc&!psRjj9Lg5G?j3NdN6hE)SOXcP_0^m7 zV|h*I{GIoV7P=K`syF=Iu63nd{j#rGNg!1vytqjpPQ&FKBN1*|t((fhggW2UjU`~?Ip1PabaojG%1JbEQVsdwE>>>uN#gEPwWE+rVG z0*-_#nr7{wvWw)KS}ubfqgN-j7WO5yFFs?PWR@DGE*gQa-7KtV;`YLxBci!SmE8#! z7`RePs)_+{i<+RUP=SUzMs+(=&V_I(3*D=rm@sBg&XsefRl%xs?0O(Acp~R4JnQ3Y zRVRJ#)5)qu9yo#c;zK0z6i9E@dExf!OdXaQl1xDc8YjiS(krs%y#UQ9H|AZrbqwm- zHf0W0WnxWcBCc%KH}ma1L5x&nhtsMtjVD&mSvTIOt;i!(Y@JU&iG@!m>#D%MULbmr z3NG#}Qd`qD-6z?AbePqg^$f$*5?hI>Nbe5mwUgj8Z1M2Ra$b1SiE@nHY}j~u@_qj9 z$laSyzbHCTb`fZVQ9k2;@47c2cNn(UPuNF!>2VqiYaEBxHVJm}hg^ zDwIwSbr==Qt2=EhJ}}JkJQ3%@bXzz#UmXV9M5K2)Uj+WLxh=KOIQVMH?lk9?s+gPw zamwf|&|Jp&EtJgD^|MXfeK|_P%;A`OI*!+Ofzed||97T9LECrx`3QNZ-&0 zCmgmY$MDnpQ{Txz((~O4f4G-TqC_#JU_XoUnfIqL$N14?`H?^5VfO-$fnV@JlLa%k z5ql4H%1vbw$WU6}MVy#TD0)?s!feTW2oK1)XV89f(KYyHKZE)M`VO|uc^ER$`~%WT ziAkGF>W#+ZkKINTioM%NSx$8|Raad1`6z+{M%2)jLY3Nm9m^;URm#Z3j?)s`A$pvI zG*3_}g128hvbgtdeAd33!KXMf;uV{dqAJmjTyd8>*e>$32RhZJf zv=UoYko&4w_5dEtBAtJk+jdhKi*37G)H!@vnP0lgk4-;{GMiTZLyyk3A)5X?%pNZ~ zSuK+)9wi@QX8@b#jI|F^^>{O8Sk#71cF&hj5z!@wjn(GaU>{pzf5SiwW0Y{1qN2ut zC_ogh`oRkf;uyM@FUWk>^9*peh!t2-(<#7?t9X?wyuqg@pz*30=9`(~vy8xU)hRwJ zQ8t^|;y~?-BU=%VSGqtgi?f;?rA;hKDza?UsIHsqYFn`&0M}xiy{uioY(#qks{rvO zOD0e~Ep6LSWq%D#^3?

~J^o?nx|IlSkTzdxO5+JmiL7eeqvbqik6#Nj;Sn@iyEa z*|ZQMdGF0$>xZjQj!E;-Q()8d!wF!^BIIt8?S$}M1TiaRnERG-7tB{l8ODnG{MuiI z-I!Hx1S8}FBO#Zf;J|Z9ne#RtXYhBOR17wo=eU?nt3G0*;`6bQ2YLDsr~YlCFC|?E z8mSV5{pq!2XC_KYB7kykjNk-pOETO7K`=@mEVL|v1KyORo*TMIZ8nYl2I>1;4Ykmc z2ZPb~C3doo-R5g>wt)pm8Ie!p%cbb~lW+*T&A1|;o)xx+(R;JZpzwvWgmKCu^6}0z zGUqzz6XZ2#(_S0HZA|eCHcyD{UdL{cxh`v!B%b7rT$nKlHmV&l+fG z;jeV6t>~^A5lqi&j#>75XQRczx`o%>iS(x#1d6)r#r|LW_3WuJIGQm!TV7NQ`Gi%? zX76=7EE=he=mtyr!%PEA%1*UJqC-;1e5mD~&qnlJJKF-k(}6=&$wm}>>Hp#Ay#J|u z{5O7|;VhhU?0p=2bI2Y!2U#h5RN@#RQG~M6S!TvDL(;KIqK+uiI`&9XA(iSFg;0kU zjkoXleE)&_r~AGiuh;duuIDvSm^KHo`k-ki+?u8ZCx+t2qbv4QG9ecQccgx@Cy1X( zMW=k~e(;$zg!K^Y1`nUVURY{-mrIlJaqSeEb+7?AJt>v-uu>2JS%LuX#Tb%G4nMvK zmMED2t<_Xs3E#yf5TJj$FRJHQ!>!`|A_bdPnv-#wXyW2WG_sW{f9`J_lYiF}Dd& z3p}=)o&IDv-R}(Sp=1i01tWVFG9}*z})-^ue>~ zz$AE-8{X-J>15hMODRkKCKB-ht5<#S1V*(=`aop5RIzF8u;q7x@IE%ZSSn-CI1^9A zi8*7x5mA%N2W%+l)P6ZUAhW_n*D;~$YVkjLiL-{7vuyAlys`Fz?oW!stl8etS8307 z&14=qn6GFcJ`ZPHhXP-v&N~p!;|P?0aq#VI(J1qbk7p%&&eESQpW}38?widVhR0_h za$YIrFe=4!2pI5l-Ip9Fb~*!Wcuw2P@)ZfwJTIB@iQXs82pPcI;T4;c6~1!MNi^yh z&jVFtg*xUr<9XD~McNPch412)*D3T_CA2#cOjHZG*OfLioc`|DIgX)JUx?6hoRtA9 zPLl+-64O}6V}21axlx!;_|(QO*)v4UI#DZsRe->;uX?kRCyBk&M1bgacRs zA2vLZ39&+e^V#Us(tRYNKq3d}hTX@{_+i+96cfJA!AQ|1a6H7?E*{f|MMS9z{i0yn znNZP?9II6U9{@4MLI1-eRakKVp+xOCM5C%iCpS}q@6qbQC~)-r4vFaT1PUly$E=du0bwfFurjk&OJT4)&)wWdS7s6B!taij0Gp5d~5_P|hCd zFUyhZY~c`QK;I^6ktk@2hrVHAo^S<%@Ivc6p%ci26Ii$%r8<;}+Gb)%$Vh!;sgX;m zZh}ZcmrxqHEX6~3I}TIKghr4mv+hCO?RsYBCT2z%0RV6rz+Vm$b1|S}*hF|F7XE-3 zKg@;9m5Flil`o{29`6uxfdaX#%fGOK3Y8$c1k4j2)S5#4c)dcN2!iqeJ1+WH972)+ z(jtH)*`PfhIZv6)TmsC8h?wT0|FRGsAix|6SRsKFZYfc#jL)Hjhl>QuRD`7*{kjhe zr&KJmDq>bE; z5ETmznnZr#VFrNAM+l%;OX!u00Hmd?mKlGcPHiZ+W^A;^*j08e4!uJVDkav3#v#gC zP2i-mjA0@s zPlz8c<}mGa2JGCGl5i~47lJT?0G4IC>y|-2PWfDF2f~?{H%6BwLcCt#F)!m<-&KRV z$te-U9JyC0IW}lr6*?D(=>lAhscmn@+TQm7+~{&~AZ8setUXE7>IKGb>#lK;2v%0a zD&Pm8*Rg_oxspQ9A*U>m#=NwI6utKz0>_xyx?s?sXw>QJ)_qhR)LYt7v(~}X*3sQ+ z(33Z7wIQJNu{({#~$g9nq+Zf@ju8Hly%lmSRCYR@X{m$NVJK3nj6fX9A-1l0WY zfME>*b_zOLO9akDt$PR`CPEcis!Mm!Hw5_5og=rVg|^7InFO61zH0Vz;{O?e3d4B(H7Wwd>

JJ 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«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

M)@%SdF(vg>@je22BylyxNn254F3 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 z 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ƁIAzNaJy}WGY=#M( zYzn}5R-m~>O(r|e*QEFpU4Re(74u}n6f{zZ{Hb6ccTrKDx~1dcSQsjUQb$^3Ofex7=P|D{jzBK4Z45*k3yY(Hs?1r2H0zSSABG&{J@(MFRB4{jY?J{4EkS$ z2E)e3>*aj953IxPKW{dupbImTt!*+AJmCbk#Ff#WC{9n_pO#O*_F7AGR|`b1`~lqc zGeVpggjmqmewPkoN@KTqIE4FQvMs9>bbfsZb>~(Q3&mrD{69*s4o^SmiPj5m*t-ru zQTiS%kdO)R(&>TC$VesVn~(YY*nYVPp!-w0R5&P1qx<4BB8p)ms2YAcT9AqIP6oN0 zV|ab4^k>oBOgaqD!0Bg#vE0i$gggiInnnQi={z*>NCiDv3CUdrmsKjv!)qQ&wLHA} z$g9ng6qNWI{zeqWjoPjdz}b&YV2ACx>+4RV|A8p z#osIqaHYTj@ZbjEfI`RdP!8ZJW!e-|0&1j48q$6L(ErhLc9OjzjOzVBbjx-b?@$n|dNV3|uv2_Y2Va1H>B z!hlS{?8fWm{Ld;9(khLg-SBxv41QLf^X#^TwD|<1<^c?4W`L0fxl(0Vi~fkSMeZ8# zx(GSt06AZE@l9aH+cwAOffw&q9WR3thyjFW;cmv+HJGH9z?E?NcVfoo-8(Kf>RfM> z*)^(v)WY@~AQPvO#b}HoY`;isdpSOHeIa9M2TcT!2j|71IM7Jxx+V>r<*Azw$WU9z zF5k8U@cp&x7Z@xn#v(}A?gQ(SqnJpUc=T`%owueB77L4}XDAedVr+)v$+S@Z0S4Au zM1l|yoUC*XX=uaJ2d_0gqr>Pf|4-OK#sV@TMxlrYgnp17tC^|)Qo?a%6eHlwc?JmH zv%8^BAFEBDaoKLtDRRwYD9gy zls?^%joxDeNpkHA+1X9Avy?P@;fB!w#lK7t+eM0un-zT#fG)Pp^B6|4EVPH{ zP++})zdPa9M;uS^nECcCDBJo}c*@IokarEBIZHN#j9t&_&Sg(Vje3Or@CX-Skg{A1 znQ3wCs&Fh^u^tdS1<2MsNqqlWf;%k(Ksy&%9~LrFA4*ucvX`gMjq+NBo+9uGX%Y)q zezutSlNB*RIw^sQxn~)B>2*Bo&^cd*vB_AJ&6v7yp;e=+@n1`hzB#a+B7V>L2;Zv( znO8TL7_N@5+)usQ;wh}iO3U*;c!8E0m08d_dhq;eW3tIq>Rm=@QE||Ql7?=6LgmtNH8`Fz=8(um3l|0IKv+kFJ!NriKPiXBrI9S?1<{RNVmbRQRhdxnhNBXOn$ugmcr) z*Qd8LMeB=SbQd-9{1wxTb9;Yt2vO{A|6bCvh!sIc$^kxtSRVzMSI1r*mg2lQ5$^8n z+{eFdlECy^zBk*Mrn>)*kH0MBd{jHas$fYwv#z9m!V*(U(9~_!ul%7{w6TD&OJ31!?#Zf(hVjfRuFNvZy8ShqS5pF z$}s;*=LsGDA_MaW0=@r*14uF;ZIha?o?*kB>Bb(_N~&A9dGXOc5!aIjicj=ZSqS4= zoJ%-&m^5Eta=1N_2gmVF*`|xerbRR(69&4TXp|rP2NxTvili~l2#=q*u`5!?rkj~s z3u}O~951n%miRUPM3k?X(%Yo9ThYHuDh5U4YEq@v7{-U?m2J}RY0I6IMjo=XTe=j$ zExi}Z1UZ)DHl}UitU&vJEy?<`!5rUR-oi^c`pbQNws88Ud=`d7cRFx%7GNAEEk?<` zve$SO!9=(pbN?-WWD742wRyJbZV`um?>tNeXvjXgxqq-$kinw%8AkKO-0_>>=WBck z8gj~%bj z-r2OSnv}hH3%qrC#IJC%rtH(z2Pf{{Vi zf6xMTx>3B`1+)ct_`v0)HP}0uEQQIXWKJM8VT=TMAHmKTJ(F<`8@8ZZKBm4m&StSP z_L$72nK4uA|9oU7@+=3ox0ueCnS6kTJTeQ?NXYFO@QiL|MHb@3z~!TqdQkdd1SfS* zGr(7`ycFT?;)}3VJ)n}yIECiv3_mq>`AhS?Q_WX*N&k%5@7MLth7F!fo{hOBviw8y z$?-5O{c9^4ac<4e4L)Z`#%qYKYG}>{Q09<|tU2`_jzXAl3^KFqRmzS9R|fvGhZj8N z@$bv9p?ib~lJ2zzlE}+QO3KvNx+H8`H1yiL=&{H>Sx_KSx)UjLTJH*rt~3A(E54AV z1eeNSD4`(gKR49BMdI;{+)>8r+jP;69Nj;HR(D+mUJBzl*Us6rU6*Ab2GpYmGLoCW z9n{fpy1k(~5;>vz=6hs7F6CK5_9L`AA4D2-o&+J+D!$^3Vs*7^7;bx8M5i_n z?EPY4`UM;xtxiQgKiCy;NH4!5E2XN@0eN{Pz6zv(i&fna)3 zAl&bhE7!`f7zb5Q+_ew8DM0jph&t=HCf^5aKkETw8_f{L=!TJwbflmlp&}sSC}{-= z0r}`QxIfx8T1?)3-}i_2f4Gn1dG71JuJf#;!U$BWs?UGb z)YOjI;1(~Hu`GSdR(SmPVxyx3Qlgsmsb&PV8*BI$hm9LXO*Rr?pHlt!A9$=;-n)|h zqoi8Ma6i!{dXTyo`Un;l-xRahvlliRb@4}3=#eYJqJX0C=b)(L>B0w;xVovjsn3vt z^PY7@wcq#ZN-X)T@4Csx1dqx%PVKJ$#7CK=T>tar!VkowGEmb}E|M&N6V1W)(s|kW zhlV$S7KHjHlG@+MHExy~?{hXZZT=MV8}8Q7a_wiJbt$v`^Y5a)tE?aV zwjM#4!e2il-~1W=D%$3C`#blYmqFkE{A5V}`T+9&l0b7GsQ9*gxL_M_zjSvzw3b*7 zblV5^y!2r{5i6g;?~thd2710-u?G$K+n52((Ae~ z)v@UGpOn;-Oau$I8bU9rM~5Q!B}Dg=vvF# zW`MK>5$egnnK&Co`*7yEuO5Xp$B|sLFP6$mqO||uYB2+75fbZfWwq>4bF2YqqZ{aY zNAfuWr?e#77xVK=%X*mp(7=u)L&TaVgyjcl25T1b%li%!ZBb?C>U5TYvBM5W zEUpf06gL8lZFP_K3z$az!zUc`Zu@^T08+KMxSpdA{pq|CkaTRQOtD>LMK8BX0ia>XjBU9WElh7EM()WO*q0gB>oa0+0vE zO0&7qWaX&IJ1Bi>%Eu@A=VG=m_J?~WAmO32GPSaE4gec`dvo2 zEx$m_21tH!jl=dd%o%lr13Pceo-p|GSQ7XLQe^YU)Kv@M*gH3R(dwUkB@8=YUvm&W zsi%c~^F8783#BpeV*je5n$v-I-`AY9k>YxMDyWG!zk|GQzR&l*jb0&uTc<&VTZJ5kca0-C_^ z&Nkj=%q4=w{6~Y6@hCD2Tz~gP>?4e8?g^7yK0K^)`n@lv604Ku*>XnFSR7o`e{R_1 zV*7>}^yH-75JshuSYItTsfk&<6R&QttYKbq;hz2i726R0?i^Y`1K79~)<4^*Jz@e; z(;2gp$z&EpOXP3`x)D>}R!78ctQy;P#7nV`YT={Lt+iOvryW{hFWfEZ<0U z|4F=I;bMCd$>B=-_PIu*93c8963U09YfN!Unu6WBKkg0+^6! z8K>~pFm1*1WCC=SCkJ_8bGUboE@nzN^rblgKgUefn`Eh;*e)_SR*ul^rU{=5?cjz} zQ^J|%lGQBpLv7Y+q%|rnEiCillvJi^9S!?3^yqvZ`-W?V4E_!^ULdV5HN25&jd1ux z`lHEvjM1ERatQRCUct|YV)5;>j;cDF%g5E33&s)V1S`CS01j%E)YdDv>4}MHbi&&! zAIDT~brI0bDMz7Xe$Rnc@yh_DP_)mT)qmF(XT_i5n1K+5=zcSO6~R(ED!bx>ia}<; z%|!u@?1bLkmU#S_%0#u7wsya@U51a2x6C}VR}VhIH^1MfgDgjor{=_aO*`M~Rhk`d zo#hErv@$uU(S|xr)11F5_7KJudrVI$f}29&a?{v;4Nms=QxqO)wug;umPtRmHYak1 z?T~V;HAU#TV&o%umXB>GT!%tKIs<&SL;b8YS6-VNk@cd<<;W9MQ*0U*D%#CHiox~h zqh)z-eo0WPZAa+uyCN?#A>y3&wMA5&Q~p!I8ZEp2TE)(`I;*fWT@HrzUuf3V6m!84 ze{=EueObU(&Svzcysn0)T`)RC=7Z7afT!JJ?K-T~PO;8G)<72u#TMLWz~>5o<_K<1 z){=#k9Vfy~Foe_fwwYm}MyLZ%TA9MUvu7c{BTaoyp|~ zV4#hqo7jU;P9Y{p@IP+TTPXLsROoKo!w*RMn`*5&W-mLP!G9W!=kC8O(yP}gu~pa< zVcJ38{#m2ZxZutSwNr8JY>$*tiAWGRJ7(026ZU>R(eNhY-vUH(!uN|>Fx!~h0YI?w z)+3fXB(rnnz-X+Q?vf`ab`tV@7YV}o7&~*P zN{I?m#uCUf(KILd#4gX`FAvF2e9~UGJTqthh{_7>qebu)){H+yuk5Qw{+-2(`8-VO zka<||Xq>yCCCv8;cFDN=Hw}X#zuL;twI700RWG?dy$fX(bd|pTbEkJG@)uQNWfo&| zviQ2c2~~*mI^r_Qj?o2^c>p3B;LPE(PY~~&XWdPnF?eT_V||KD1kPW7r`p+s3yg8v zh+7ha>d#UI$D0i|wi58A4&VOi|L{~PN z4Dubh6`ACc;>%1zTv&KuqnV*!DgbXJa$jQ3H@6bIcrLSwK|2(I0SAO3K<4#w`FeHq z!xzgb&5RQcUHFyIUa31d=Zf;!fI)Nuv2_+5>F_gWR)s9M)ohkTU+GPq$NIyO!{H&* zC!VBwH7b+p5gN^ng?({$T8GTF|7ZmO&N(pU=Z@)yJ}SOmd#kzaHowm~9n%ZU!o<~G zjBLE?y?QSBUGg?Dz2thAV0%tqR&5sCg9?!hKgfowqQ^=@3|x>|DZTn6n+QwdEsfh) zIB5n%Ee)4O322p_%K^rfBqsDFCSOzk&X)b#EIV-QH$O#nDg;{V#9oyr+KYCPWUc9c z;-yfa>U)XMcCZP`T$G5s%{jTqj?YgZ`mNxo=j2kpcMvN=>w?YY7*Y5XjaV9Qh`k*} ze)ar+)Hm}#rzQVKePd8afwT=zPF?(y-u|5&@F{%*0FeuvY+i{TR=w? z+Y&a3qp%AMIG&@HqBJJ3k@d@T(RSNxn{Z<& z5L%%?uTXqJy_gUFUP;Fs>|4UV=$kG{}tA|x<@qYmi&4G;*+{pH;&r4lh=GBT} z`k%Z{h%bQRyheJGRlrm&WpY3U`CMof=(%-svl#lzph}I`NCyJ80R@%9?7>vWxl{zn zcZFPK5nE*`&uQ_@{ikU&(#HAdbtE)a%Z+1cTp(pNa~$@p^R018<1jp0&Q71~(%|*_ zW~z!6)s^8J#I&^%t||>ii$97g&fq(al@Z_sDa6E(JTlnm6X$TX7+6+#33 zwjD?=Vz>JH-a1v@)9QAoL={}*pb=@dbsOE5J{BRZb~Qu&rg4a~r=YEkmRI@_76)~S z;d#q{urUFcb7kkL_EnU%Y-TIi_JTv~xzJrP$~MgW_H{ zM^2bqNXVF3qF?Jv{ZwKemwcAa3ePk%ZcWyedwc2YyMj{KEYj>wWS4;AY|$G=?mvGY z>F(#2@(Vd4MOFUIP$hRa$4l1Gpi>skkAT8Q2uvfqVnaUkj?#qca)tUz(ZScztUaY9 z=Z0#Jh8~|7wXZ_e;5XWrZoM(lT8iDzEY&KNY=3H*PamqQ3ueN+ImTf(*0E zm}D->^jhXsX&WD{Hd)QLTlHNEcu=Eqf3NQ8qt)ub6)Q%Ne2YpFS_Q%4V0ZJ{s;WZ`Mk|)z(JLwOPH3qeL;cZt@x0{dbE=cKypYElN>guqs{Tz+h2}Vn6b%}s2Y#RKF{k)|p;=1~)>Bp^2nP4(PZt+k zlHxP75WyGkYu&GoQrk{i-~E-@Zf!B*7HEbo+=^ZKuI^WKFnv+}D|bVo`tIA+{igfB zz1F^sUgWU-zI3L~k8AvExV!sR1Rf8Pp#L9@1Z)b>7IjE15&1F73H_w!DywD2!}jxZHRrGT%?C}es4$oJT= zq9S>+9yDga!-;S1G$Dv&5woE zOyF!>=qdgugXTjbtL9Z^#wqc< zjX?I;x;Ucf$W*h)7LG8wX~Z&p=D8Fk7jFb~$%Zw5k8NI@);j17J3wESlDsTk@JTRy zj(6U!sbwum{oR|Dn+dnJ$hm52eNNHP4&DgQXBSwCX9|t?yM%qV>f)5czJ)1IL3B@n zYF}K^u@A?TB*t$fA89j1Jh+DtHPwr7rH^$HBA8l!+TuD7?qBO!QW{fB536arqkBYb z(O>&;83taZrMK8+%<9($w>|8EmN3+v#k&A9+~^V(w0Xa`boi|D zwDnP|F^w}L@n_<9UBy`nvNlFlyJ*=5OSADx(WZharuagz;1G2(hJ5<`ZUkP+!xrhC2&#^Gkej94&Pv!k95RSptlpZj`5labvtwS+F2WC*df!!Z56 zc{f=S0^uzTRki6*pu~@L>fs$8l-hs{phaO5<{ELjvmP6#!nq|!%r!PzSJ9U*jhrFv zfbsh$YU=hv5NmIe$X8y4EFaA7l9*i{cO#ee0fNz?oHt#D;+^P8@^ySr_{&_ zCAR<^x%y4}$7n1Yk}Bc?l)}B3trvs%wK62;n02R)xjAy_;7UR z^y^Se7&(P$u2x4@wyIuGm%6rk_ z*^dtDA+4DbQbE!O(GZjUcs${4mKI4pd(hOW3MQCp;J?WZ-wRI<^HQ!=kz8d4rqaT%CpqOFUR`|oe zzO1WWW8c-G8&nq%MX;*=M+%&`v^mu!v(`a5L)T+=kt1g7!u6y=AvGYX!@fb-9$BwH zo+wTiaWIwZ|3GeQPQuanENCyjUwyP^UKjLZmhL%gkn`k0*OAFiW~+_dBWd9~U0SSX z?FHwLkaZ%w$WOeBjYK~s94_c7F}&{orwwCu&s*JgHWp*~n^X#ksz!q%K&1XIO>sP8 zS!c6iaQ)y~nl%CqV7Dz6)IW(ITUV!U6T?Vo@53vKK3x+Yhz6idUE3jsUY+21b?v{So{K1@~T^iS2}UKkAXFC69O1 z2bD0I+FxR2@gQ-4PaypB1~-lC!PJOx^~{&yTAvh460iTA6NAhXYoRbwcHVCX^HI=evNK}58wvFfmN-Uye$H1q2j6CkPYZG@fd+S|F$f6iG|j-5f) z^j8L~|5-dpZ8ASMm${wlVT}4$kwu)g1}**Wv&DpV#}p!tCd_ zt$t@6ocv8e-S4sB-_FRHspOywL{;4YRe3{b*mk85~SlGsy8V`CTvTY zaeAf*KKWBfLVP@lD(uh9A%MiL92k8m1W~~tFd&=&CHo#SJg4l@?$X9jMPOvLuu#n# z7wqy?j3;T%_wjlmKPa0FM+Z;4O8AjDrnGfO5;qTWL0>`R6emEHUaER`@{l17dg;>; zcgS7)`w+_nU!0U#5|oEOn9>ZkbbE-z00xJ%?DOboVx8ET^}aMAJUK2WkDJqb9k#gV zz{QX+IQ97}C|cy+TY^ZWXI14vxtZ+_Yyw1h<_gQ zwN$^zl&+PcR2Hof;o2ws{mR1^!E@hGBN;-v*@k|?4gGKEg2-yGqzwsRL`uLsGaQy$%;Tx(KnROf@QO~@;=lw>$Rye! zhlpsqQ0kqcD10{L$?l%YvrZU$KIGZo{DsiR3HR{V+o9Ssu6_Eo_rEKS`jkc$yL7;~ z70I#>R94HA%?8vzLGABg`4_qPZT+c-;z$Eh2&~w#o&$Vf1G|G}_~C(qWbBOSoKu1k zXP|p^!>DfQQbRvT%KB|{Ur3?}5>&uk&BaJP+hy275rm?n_yUmcTp*t)wfEvPfr>;J z;LM;rk6qwcVH7aMi&;V!fGPPKA)aEuv*j?Wuq12w`O@e|b)Ke);>cd(f^@xPt}>eN zH2x|@JNAkxM)~>o36S-SzTMT!xM8wS*Z z&aO_M557Vw7&E_OVs3rcL*&_ei7NRA4R7uZJGY$MBh%N9f^G1a%A%^{a;}S z;RVWd?Jygt6E@k#&P-;9RJ0gUD2X}u9N z73~Vg%wX}NLm=j$PE&KH+$-|mYgbL7;ua|JswWa5|5n>^AEDPc@+91Teq zF$m-Hnxv-V{Syoq95Zb)Xb0S0tVAQL{W^oobJ^PZoCt2SLW%-FL(97 zZ_W2&bA*ILGh|df>!^uWZo)L7`!tuBw3(O#D(;*Y=5G~P0$xr(Di>b#I_`qbfhkJ* z4!r)DZ^OxQTp_{Mld+~hVRGiSf^e#K zH%I%epM=S~)hBE#CGdfSP@_`sRK^jIMQpep$btJw7z>isx_JIP*KrXqUf$LHK0GP4 ztT>c6{cMp1#H#T&^rZ5#!MIDr6u%K4# zq+>-)5YH(pP?qEOUXkJ#l>*`B2^|CzJJ8>r0-Q`4p)jL+15^dBa$|rH(quj`04}sX zm14Zfg%Sc-U@2EJ%*hNS5gK2lHwy4f^V?l3?0{*e_$!?vQ%@~a3SDlFM_$L$6`9kx zrld%?PY8Tfl!0si#DbqtgI)yK!bWUqm?9lw0;j`NNe?+ed|}1g1hq>_yGKJivMvtc zU`HY()_fjguMW%$kLX3h7NqG0pIt>`K82SZWPG@+!Jgr={_*s~0WWoE!wZ72p*Det z#tcm_@lA(E|DIk&M+37ktrzLXPt9fp5GYWw98v4b?D`!V6+n-2sy9Tyea0Ji%-a6Z z+3s(X?0Rp6Kya?nA=sC}ArFy1aEV<6~GInjNi&vs7)wp@nFt%}?U)h1?8JZ91 z_Iu%tVi3y1Oxn#>sJth>sOz%tP2>^*w-_DPCqln>5MFA|SNjsZe#s1kT4M8ko;tPy z&jkx-u!(rX@HXJeC{ z{q9dq0qk${d%ZMLlOl)wj~LgRF0YugpJDG&*dvKHHI-Ht=IH56O#d%`jh!|P;^Gh= zhe1Hv2+pBpcM+M9n;=h@b;cP-Wf0|8Db-(Lqn|^BiIGe9Ynl*i8P_?}~P}DRW2`Naj)h zoeWR!C7z$o(n=9<{7qh`6m#w$vj15S)@zgnkPbX=9k}a9xtli>waDD(79R$7@__(; zKlV2Yoqw?()CPd%%F(xNp*P4<)-2vxY>+q>EH?@gD|g>)@bb zb+lE71P5h0WO^W2!6+6ZgY%VTEwzw^8Tx8mv5EiuHS&tM5(GuYO<7*Nz=R*+LtA6yc(7s>p4od`IUbLE8iVgW_IG^Y1+*l+8@zURL*guJg=jvF1LtonErh` za1h&T${z>79H@LF-?=#v_5UN(=}>d#|Hl*S zBn?JNNlef0wiD`D-(U+V?O-Qqg*W&Lh5s>P z13Hd}4ueeH?F*UCA0oyUIk9~%Q0o#_mlmp!VAboA zyKBtB*V!m?0D5u_e2?J-(GP0?c9zgZ75+WRoi}UuuS49rT;?fvf89}qB!!*~QJAqGBAXKYX1DeD? zPq9B)1pqrZ1tRY(PwKI^3lhGGrGx2gk3XK6e|7Tp!V0;9`75Us1ftxo1}OGP?Fke3 zW;!I=9yyp3D*kmyigz83?UGobiTX1fHI8wS-$I^hm5PR(vz1cSj#QOQdVNzx&0Glf zJ_0b%t5N@Pd0EOJh_lSy6SuG2l%Ou%Q97mFFqD-yl}>FS@XIs%EeDU z;g(A#9qdNA^oJ(UPH3wjgcQATEf-SUC7ulVs4g$+X9vl4AR`(?nqfVL#0tVS!EurFYSq1$do;@I$Ao38%@r8?N`@^37dfg>g~P7)hS9IDDHWy# z3BoJ6+$pd;`psHUo$b9_Wl_LCf%v0ikjodyl087nEZ!LuIdO~bawYY9gqr6M#ZOM6 zsQb5eGt@mmz`w`XXqo_t%Na6(Pw)gY?%m>j4R)fx=UCA!S!XbGfgrE=E22;$kQjDv zp86Ft1w!3^^Kp3g;fpJ%`hw*iNFDNac107=fmVEZx^2DdU8SWkVNbS9Teo=Su9bo2p-_oCE$O zO`Nlpxh^zd-)DM&S<)`F!@@SLov}0tRtGP@ey9S>*s|XC(%^kxlsHBFs~d=0B~NZ2 zn#l-0^9~E>@Bxe~r4ydDPHVM`Pn$9?$xjuz`cV+ksVEdrv#OlbV6fT4%^+jyL%!~Z z=g;Q7{Y`S5GXU7nZTwUA$TDdL8^}3`5f%Hp1G_@uP~N#csOc-DOsQ#z{MXx|9TMzW zt~e{3?^4+H{>npAwVKh_wZxu}DV%ItVn&g>vcXvjymmCrX(2^ z4t-azGdQpro5icsZe(4R7b89yF>MQYFB6r%>z*y#PEofaP$ms-DpCeFDeA|TGtGd+ zKONbq=YN8+9*-~E1?W$py&9-i2xX}qY9DTi4c247v8F(qFuy70zuPb&h40MxyqfCU zb^2d{E`~~gK{t#obyou(APQvQw+9cMyAgJ-q06^-g3GFL9|*BHjYh^}*-;(qjXPNO~DVgRxvz=AE5oX%n& z{EuaxL{0Z8zLV-Ab;o$R_G8`6Zcx*IPrt9T`ev_6`A+ATqg;-jggFks-oPh;Zr_>R zQTOS(tqN@+Dv5iF?}50SbGbom{$n?xK8LEb+p?l?vxr2jh6h)FySy1oF%G|!=#hNA z-8}Qy%eM^K@pCnDz;v}SqVD_ZZbXAuTXQ|}t29>)EhQ_oal@Gv~_H-9L1S0A9?g2GuH zf?oF}1(eqD;lR$5TP1w1;)Z|P_0_Z)owVBZTH(qukmM)#rq0d>N1(gsFYG?wdwcio z37K{*#&iYrLw;)Q!V6bK0|#`JL242$*$~1^GkE66f=et86v!NEyZBFEW-=+KF??-M zDr~m1Lo9R+a9Np?8`g;9^fIMD1X;M~yWZtz*2$+zL^MdPg}UqSF?`bGsdg>`xFURi zD7SN>hUd0jyi1(_W}v&OBwlMW_!!*XP*%ZfD(v01-)OmI0N6h%TL^>48KL@5X`-kl zc+{V~+N?>5^46!!#u)AU9w@cTx91m^d8mh+h@jDA9|XWB1tK4?--bJsl*hV66VIYP z-)oi))`L@oa}8rmXi=#$X~P*JGJegFKVRUUwrkjt&@ock69=zpf9U9D^Z3}r1)6tG zkqpi^|KkD`E!QzobxdXmArYY;3dC#7+g7HCoO7UO8Xc@hn?a7Fpz+)iA#qahqP-ai z%SGFXZ3^bX<^U2M``QD6jE+!Ktm#50TGMVO$Bb7a?kiQL@*~8SSKnu}5K>+eK?o_@W?chJ5LfUIB9AxKD`m1 zpGpRy4!Z*&ou93p3A~mr0KiSqeN$ni(d#1MuRt*q6MRdLHRls*BzF2Hh^5t4WEgPQ zS8X{2D%DuWZmgH5s!uOfx}s-X{>z!ImAp>iLy^OTHglnNf}tCIq|L(FP82!;i8k4v zg0vX#jCw8m!ZY&hP4Mw+A%;qG!XTN0`GiyU#-A?lSn%ViSbl`yc7*-w9r2c~e2pF* zfxCx6Kl==}qTMn5G77WdPRDg0O5+x7AJTasI^f}neG4@$HNJET;Nq1l*9r0u*d`!D z?l;?6dcV`gjOkCh$lM{hPq-KZ{Sb0U>Jye|Qc*@1dUDq#&%%{A*up1%gj1K5WY27e z^~)6e>G%x9i9dXt^qqRvdeP`d#8CtDWx!Vao}cUp>cI1O!G}QS*0Pq_H#vg>ZUdt?l=|=x zw*CMkl}MFYubX-D7;V~m4{?x{aYO6eJ`0*LTLOYfYY)F!yU_G(XhEl|XzRbPsu|(p z3tFK!w)wu}x3EQ@@ZCi9nEGhdXCewIKoh>I3onsTyy7(`TFb0f`WFU(Dk$+HLu|!? zx+3GLu{Oq-Ii}#)49KLT?P{SJm(e~7QrwYMJ2oG!d$&j~&HsiBV;-L@dOY*k8)`7H zDOoLgJdbPv12b7?pf}6Ik6Bi>PvEPBd(i@2X*NF4oc37J&i7F^ug) zEiMXnctF^7g9_6PD=}(!Ol4X(?^R|4_nzi2gd$#4lg3 zr&>J*$IqWL2|Ab4bNF)6DOVRWn7s8zUs-B;45|`kLi%D6VBvbf;KAK7mxgMc590;B zlcv_n%Qin7oMir^f^liRCP5u`&$Q%ipxdr^D?Z-qObziC(Ri2(^Dvh4*{Wl~H9;G^ zr=n-IA3ivDGR3!1s1dkv+Na#OR}UlY#S1ug_88P~1V)pr8~A9lUVCJ}^7wq3)(~0Z z?Pj*|5aHR;mI1!LB`*8|AS-Z|40aiJ`6RYsDor(&_%>@EGZ~z%?$UADnCkYX{D zA)TgW5dGL3ZI`Ro@3Z_V{qWD&mKQ%>f4_!so!{#u_5IykP~b^A^Bi0NmoB`N53NuT z-k|uwFH^ySOm++E2LN?pfdM8}_ut@69DxeqX9BQb&VKu34MGu1>y5(!VjMRb;|9o! zkMYWL?+v#}C>V?)H0tP&yJ_VtY73A-QuX0z6NfR=bfF+E0~Vmiq&0n01*bW)z^aT! zX|EF?VHOif3h`Xa4^)#SYM1>+QTeFf9~#{_VF#jK09+U&@Kek(|1b_`H2pcQ00L^hryLGl%;n0TMs>GexgSo`G zegL zG*ikH>Tg3G`7N7+vq~fGXv0>N96k%-&TjbhF=kNweIcag=TOF51-+}|J`^_ z^*zp{u)c0H(?j%6S^|)(d#$ae{Y;}bzdsANt@F%~G=r``In$g~0u7M8ZESvM`p(6e zImHc{@dLtyMfH7%Fmvgic?rTxVi-VE10=RGKLGn(=f{DG-1SCPT>f(7%V_^0TFh6E z-qu)wqx4%Ej4uT!+S@lC`@Bn|N3uW1zLVhsnCZ9I$_5U8-F@;RdPwpKMabB2K<;zd zhu8eCuRP&u)^Xr4j~UmykFlC{h`)s#bY^!=^5uJTZ7aq(orOBGwa@d-fzJ1PVk~1W zXU00xC~eUB;lN6&{i4B3!Y{GtUm08CAm3CL^tS82Z()+_o{lV+md7SA)tO)IlO~Y0 zGJ7U_e|qV9(qEa4V;z^rufDz_Clwa9Tz%EB_F`Mq)hCZNmJ(H)-(9cW5f>s*4=u(L z*(bUg;LCkyABW?*{I2$0mXl=?wJky2esN`Ce%BG;R|Np`2e_qxq{sK4uyb7VTc3A+ zs(pUJJoC6W@*JP&m9h@)Q0KVU2w>!Be7gu;urNX804XN&E}@q{{>M8}A!m^0lADIY z$!MobQXSV{no(CDt0PDWZ=lqn-x<2DT45-TauxC*T=z0g zf0NqR$^YhNs7MV+C+wKWV}Rzb%0me>6S*eF@Zi@ujwZtfauk&rm$G{364nWazT$Kq zru1C7CYLY!whxpp8Xs{57u%U4sF*t1clACgrRvNjjnI^TKU~nFDGy1p3D&B@dSI*~ z4dQ+5N`ERO-XCCFxzha$WA5mu#VM!S;{Ub*d%^%OFZpq91wBkwbOaBT~70Q@P*!a}ROl3E1RD%jZp{i1?2AAnP*~28c;| zS5PPOvU@TX>M}zUGWoEG*JKQbkLNk+rgS*3ves3q!^>4m{2l40x&DpgKhsC|b5AJU zD%iXl;vD5vl=U&?*4dvn?u8ld`gz;P{O?P^BO*p>8-11FD@V$A$K43wDhN|52)8MS z{F(0cb* zhx>f#ELai!HpANbafumH^xmJ|Nl&c4piw716l9453 zE)7aJ`4};h$#ug4I)9K{#ZzCVWKd-pTP0&qZ8caKo?7v;uF7_$>OiT=BCWb7Am=+0 z5=ce-UCetOReid+#FUB%V&1kEt2tF%ZO@(m?+fOxgU*m;jUTB(jmo>n0h4uAcQsPwfMuRA=#%^l*RoO@VM8C?1V$Y&&sks> zdR6bQtoFf%7r$%<(r!8qmYt!Zx$+_TH|xLDGvH>2=NU)~GWlgu-SK6h46yh^fvXT9 zeS^h$zieg>R_?JIs(S;9%3}rgpCUd_EAPb?R16aNa|w&ZP2OB`>%YV{4eq<*s&&B3 z&#?fVMN$gK91sz?-dW#%HDOn4WoG62N8P%oMTPF(zZ{?_@0`KQ(DUZIg>GmeaJ67m z?(h7rA}_dkd3v5w56(QhS+M!glk;9Z3U7udcD|>p?|V|^kAYwx%hPZ6!NjmGGN8v zeuw2Iheqdex4CLPpLck!9*V0aV;m#2_t}{8P?7KZz$3t7cNN1Rg0(46-{3%zRP-ll zy+0H#_M=3-u@~Q0an}rEov!+P_`v<~Sxt(;i!WDSET>0I{|e=wd+}-(Od$KdJN2aC zZ0@1p7fU7WdSg$@uGXPdJHPY1FipQs8ofu`xHsu1aQ~U!XTw`~!poiGq`mZ)ql3?W zAMjX=fLOnsb1}A^ddFX=WjsD#-*v$1I+=gZ^+S(_Ujdo{XEO-*cJF!wGh#epXIpz( z&N7QuZaTGSO8QGrGg+ z^`VJ<)s20&DoCXvf{;>Q(wWY~d|e91Usaa&y-a)PQPe{tcs3n+5bRxGH`aGuyg%N( zzw1}JB%?oLtv^R~z{*CZH{(_ROu0ByfrYAjrRv$5Q9pXflk~k!{q&ok+mWFAf5nUIVzf{@REWDGqSlo zOW)qZ5xxw$9Ze|l6iN6kuG?^h3_q6Em|&yrL1QM_REYb@XENuhf*k=tYQ6yEn0 zIt13lPFzI4x& z-~$mIkewUoZ2*{cI2%fKz!Q+Cbi6`0RM15+f=oCs42VicRJG9g$TLTDKMj)+x=hvj zm6;*R)Z{syx3?!UJv*+e(Pj@{?e>I53UDuUC88Y=Yee)FHsqz5>U9?SHvmi1d@GRx za=MIeWzsars?cVPU5=(s-e>B!YcDc+10vsBI;1b1n-R0bM1K6l;OL<2Fhdlj&|A~9 zY$);vkb^~SpF8X80PZ-ea$n*@iwlBR7ZddxR&~I37^Wh~BK!tTbAZF#883nN|5^WI zeN0W4Em3>-yv07hW?>NmM?#)}FB&>~Sh{@r*cm)I!Qdh3Vup!aAN`WzzP+=B ziiQ=wGb$euEJjgAYLo;|K+mykAx^pgOa_$%7oiQ|ecPI1HbjFGpUx#4_V-!#}d7SF6AM z%sKRVT~U04^Mf^FnbSV;3Oz#ZjG=)7a|n4G5NOo~>N6BQB8t`6#LfaYLs?Jw_zw?@ z9^K@TgKqo`#mupw1`q&)#S4wCtAEE}PYS!;&{7iMuv{UA*x?eQSlKLw^V0U}>3V_y ze~&rO=0&ic>Gt0bTR(EPb1NS-4s|Wwxs{4QE>fDegQv@A1#;QehbT&pwb)?tM0|UzrFt zhj&5?x`>9fZ7fO6e*43Q8yr9-gsyMmG{BNr@O>)l!@SxL7ABS{j1L9=1a0F5_D^Fk z;#k|plKg3#xWd+NAG0>Hon&H1cAugqNuIwKN4I}&Y@6C|T7A>}l&AHN!fVOA)Ny{@ zedIS1wXt`WdvYX$#G&j{xV@W&MakbeAYTj0Kd!t#1D`Pg4mtr4i<#kXhl2EOqopja z|JvhOx4~dX7n*M`xnw6RvxL2lWrDlaQGb=MIoBsGd*Y&%u=X(C+Kj05I=Y8(` zbpvRo@IDfdaI&&mS=tWZ&P>(}!k9Bxv`W(Zda;Mczr896LS-{?1!E5-)dz7x@(N-> zjuX`Gv;TI2x5=yX9LAUX8#9oi8ivNJ0mbW=?;O7@Z)TZ9P9OKDr0?u@8pO5`-whVX z`R)Y1)5eMGfpyP&C9^Zp!Uo?yt-RWEBTFcEzW=UA5Ypu_VZt=L+)WCv=Pwd)_lKL< z1!*a{Q91 zYF@w7UUwE5yGT||eAR>Fy!w4+bHOZ6X*YH;o$$P&#+_m>1n4WMd)Hm*AD>sT^cwhF zRr1=lCS}_txg(Z$PU)G$g;YcEPF%X>%tF|$8^m8+hU40;Fln1E7DM{%I)sY?ys20q zV2#AU*sN}a70UPn3)Y=3Rn?Dop>h)%`G9Dyey?ke1{CADTew)1uyrIOQ!&9syBda( z4y&xX+zY8ZFDOmS>LW*{%f~oF)1{qF*C1EUTQ1N>n9*_#yx?{cuIst4QUU(##K8iC zWE;7bz7$uNFQ9o!YhSInRXg;`S?n+kg))pCyz-Z-Tq`C!V)LP6?Z)k6<6{rhinqMABCjocn%kB@y(R7Oa@ zt26`hZn0saeucLx^g+(W*ng1B{M{sv6N)05ABg660|6DuAniN0qttn#1o_hI#$e?FwkPFhB2{n?Ba=9ONSnMZuD zo!Imi-1)}iviMA;0;YSSKHi%N9p!`+)P6$%fvH0T1}p^tuY?t|KRC4&cxhdXy$b0; zNNyXNsTSC|ODTAVvuKX!;*P9J!Fq{>t@fK_=*dqV_I!A%Iaf5XiBGBKxMC!kC$pk z$dITj`{ zVF{&6ru;VK7Rjgf#qY9UM9%9sc|iiRNcpze##it+caRl+;6psxsYub0 zBiQ?daI$X;jXcIK+E)+4@gz_%ee&^cBNdp49dtKjk9sxN$hbM#0jo%gGIm-hdFLz*_8sK{*m!^kH*Sbqv7~S@6AXfwB43N?EwQHN482@M zA>+D={Fznv7AirOAp-4t0If<}eAUbqRQM|29F?bS?o?v9p{SHU zL0IkZUHKUv6`BZEU#eF|I@zx~5(TMZ0Kt*BTqKDOUb?(*vkZBzQxN<@MGHOGwC-HL z-JD;Blmh$A#$!=ikI020;4{VW-mCX-v5qDGoRb!RchwjG5lIj-5-F?Bl%kIFkop@+x5|(YG^wE7Cy72^&K~e zPhvCf_9f`qTrf-f43D9a(Z0|qUkfO)7QVX zYWp8&9mZ^$IJf=OMgaQ2q-T)76r1h+2rUyQ&4{8O<3Rj8j_pD7st9#t#I8$oQRf2C znC1SV(HGZk9w?~LB?T2qn-WxJKY@vb`y-xR1Ra}U_ydJ2-k-Af*ZZ14l~jm%Jr+mB zreBz`?8;k5wq0>f5@o`}D;UH55JmE^Xm8JTX9$%Kn2@+%ZQrpH>c~Kjn}w*hxprkWX9(DlwZo#olCzh>AY`n;LggZWBAA}!_gc-4iNqma^W_G z&Id^~^pd>>6#0lrVYgSv&_x1Kr+S@^z8ckf+a8EI@(^^}kaAS!HTAVfXRyvg5PEh$ zGkybxXs`f>zn4%_7ZwjctMJ3f_Dry2DQg-b2=zb_tk}X%8of(4^hb|K7yQIm#cuDCFNft}gW=hMypu zdy4ls;;nwB1(%jC-_A(`&-?F~gP?>6&&Fl#;QHoEC>c!faQB&q%)y`Sm+IUt<9;m7#Fk ziV-DrR&Gwv_(907Yfp05P|dxP&U+O}HP2_|JA`$QpY3)eHpLEEiAe!P>Z(K%*!j$a zr|{+T?6*1;4$HY3Znzt7fyP0_(L6B66;>9G&QqdB5U z94R~c*Ff<28egiu5DpF`1EA)wD*A8Q-DDl7v&vd5EY29kW7q_MylkT;c?MdsL9~&9 zhV5jS1j!eUX1hpryoUi=6&L=XQ9O_C`If{U5hmQOlZmSp;-?1}X2m7ZPa0@ADFO0z z@M!n0m}Z2ZJI-h*|0&~E72iWmcPNwqFlb=HT9v{tHTd)uu80k>v=FDwR9U7O$*G#m z%kv0Q-tr~ptKOMHy$4ZvEvHQHTPRX4R3eEs{7O}}k0U;Vz6a`C{DPlFTgnh%F-ex~ z2K4!n!kIc0eF8P~ipH((+Kp|t1aj|*B|LE5PUGUJzf~MCQqY$9cujojrzrNTXD1 zCt1}*oJGuZ@AiW2Ubx+Ni}%fn zZTzXXG zAP(hEpeybGf^Z-;Cabv%)slc}Rp#6S0G8Ouzgwn~6Ouk(t0kCFiEVgLR1L8tr`)`` zfdjTj(>oeQcOQB=#mSDgDvzesAruIt^$1xtJ5qr@5hDd!a(T6P^E7k@F$v-uzn8ZG zniwt5WIf8tb?W-5^KrlJi3;9JK#=7!3OCn?hy1A-zHY~#J%OgI*QAB_^%>j}*e?V1 z0TImrzdPbgxLhB{)(Lx6OFFA~M_hOfBGs9GAeC9GEQb90=!Z;CtiDUH%UHjc6hK8x z8xQ3KA29w6Pu|QdX3C|ur@tM!P+2H$-0Z?yLwRs%oue{ZqI%uS7LSb_g5|of7ye%p zuX?`gqZXw{#`%F=^G4Sb$I6xoSryEdOG2sR>GX?dqouDs8-E+uvO8tl45@QuMr%%Y zWO>%LBZ`s4b>@bcli?TU!Swv+F3^cwj}_ToLpVsUEhYSAVq+8pS-_j^CsAEDxea!U z#;(g=<9!QEf!D5=;ttGoxs-l|&*cuEo2TcTeJuaYxWN5_3*Y`tg-u(rDo1G=AE*aGec@`4mF?l1T& zusAV9(Al;|YC1({+JBxu1D0>$G-bGO71P`{cSIep(F|wN%bp?r#qGh6?y4S}=6XB~ zgNbDv&8jZh>m=%B^8^BJgApMp|JR@!!aLyaWX^`S|7ChSQ&WblX>)~^7@xDc?^;ZM zrll~VccPm+oE|@P2rfI&{S`7Tg>=Oo3F&JV-GPd0BE*{k0Ur>)0~7w>a5THNA!5=~ zoQ$!0nQ+>tLaRJzU%CGhGknG1`lA=CF#OFEGsfADEElWjzl|mBN~tU!tP7Qh)(}o= zy94bupz$f3CU3V5G4BmAeYzX_eY#GJkUOBeXBykn4>fKC6iz}rd|dm^eKh*)bRN>jCb zF_g|+C=>rDZBU=fXRPnvki@4foE^_*u1b}jZFW6a`|6#P*$ZvasfFwDTW^m#vu4Gw z31b|NPF}!H4Bn2(US;vnQ-tMa#j4zaU7>K`>P%*Ez>$1HfT%-2eg%3-IxC2+%;pjw zo#n$`MF4fj1pn0+qOE>e1wM?W67r}#nql*Ors_~eJSj6RqbDd54|6w)o1iOFXC-xx zzm7Oq*-(RK140&huzqkU$yA~4tI#ey#w;}$-av;+k%tR)4&qk^ry)zz1u@vXict8p$MEJHH=3b<+> z1F!c=WvLdw`FX`(>VBEUi>ciwA1)ld0GflM=Sk_=(z;gClkXdg6coRe6LbQp2;#ALlhYFDFBJld?Y+@Cy9Z1IFIav1~CX;PcPRXaeZC zc1;zO?IXO2_t8s*1D_#4!6&4O6a-)bQb~w26Az^cZeQW1#xDJhKJUxN!HfA3desp# zzgA-$F2KV*1)v~-dSUSHeex~F=^>&0fNozQiIM|ouo0b9?y+agMqE^Drg0xj?|^#b z9+DnVL0`J1xjQk#3|&IUAVL0<+NjO72;lwsO!Yw-h(UDbmfZm+;@L?AHmG#O5M0Byi;c+vVNo)l`J}YvjVy-_|B_Z zqE41ZcBXkWXFZ$9!Ls!1;*iurRDlvk{2NICFwUdj2)2qqrb>$KD-q?2o5uauwbjwct zDu3HK6}Fr9Jq%2%<(L~xeWTscd_J$r?&GQ)mO>>qOC-W3VeKN4s`OtOcDphtVB$-J z^Sjh`4#gd2vx8`n6G32|t>62cp`yai+F&+(&Z#3T!(k>&m?x7V?*pkS4z~O>u&91f zNJc@Q?x_2h!Kv5-#fOxb~-bD z6d5PweSu0w*nkW@cZS1IrY{5`zH_q?gJJVfAxT;sNKN5 z`Zt|MP7+c3!x=VQr1k>LGUJ=VowxZzU#)httarcaNhXX}zB?rNtjh!lkz(ctspf%9 zbPOVlm2MgXb@-f>fvKq-9t?HWn+Uu-%>^L_ly@9pWhuisoT#!S-p;N#yz6%_x#>aJab?H;)!@8z~_ ze`?$D{Ap(RPv^(mGGzT{!CCc>f02fMwGPGct;CUqz8ZX9d3L4TA}^Nf5MN^n9$3ph z&qCbjY2jhoTYqWlZ!g&Vg3BrVedhL#Mn>Z{?jCK1q{tqy_3cY#A$4LNro;kvQXj6= zW+k&S#D}ogKmM^g_sq%>ZLeSdG_m=6GjeeFY)9;qcY|4L7faz72*#Lq2H5k5l|gKI zTVlFBbAlE;RCvWp;M4@HMkLHQ3Vz0^=O`Q@k%SvtK!Yq409u{BQ941O^^lEH8Jcj<`tu{L!$I9doV z*D-q0?XU=rm?U$;>kg|c4Sjw+HJRF_PwB<%d^7ei*cgHp2$+o(aw37?m|eEayP<>bj$fHSpj07yLP#sPKD=Sjcp_Q(UX z3qPg!1lMBbjNOAXSJJIm@lREZH=BJA!9v(KuYs!sbu_lc$VF{>rY7Gg%aZa8Geg^i zpu(f$-87gtW=jrRMHlCqZ`9ce7@S!yWSkw+xF~^+d#3R^Qkl$hu^zQ7N>7h$HRH|5 zgIkQIBtbhmq(>yG!8g}|3*z$ac!8^yrs`d^uqtz6R(r{EsiE2_mdz2bK-c7_tZN^{ zh-q)?4XF#e&rEYKzdqkN019%6)1-&++-flnCfLW}7bTn_ru7e*G9nauqzHC?3bF*_;MwX7nPGRuEF(stxy zoTGj_@7U`z!|mtzyJB9So%g&IYzQxd@%`1)RUiOBIGNFe4F>dLA&0`t)q=mIL&XRH z#MIq5`_KyPd<<$Yi)!WmljmYAR|zTIP|qBy5tnu6ErjwC$IWc#rxRD0Dyq52+0 z2tDq;`}GxrLcy)Mm42WaC0RvLWRh7#=SNuspiy^Uj-4${ODzdNVeRMz*-A1dY^Xp3 z>k=vThE6hgQ>9!O7>QOn3?AuI`s7r^yHK*2MDN>o15tjnGUTxwm6s(9ws4szo1SFtSLIjO+`6<6Ur$nAs40w+mEO)pS;@08pe7QAFlkYTH`>(?b%Q$M5 zw%8i^;;hTL*b>Kw#S8lzvJaf-?7O}%0=WsUCO20Yn)3RPuf(Wm-q@ntYwjy7wO#dU^r~|eocznw zmi}gA4W`e_;$FV|sAaSO>{L*6#z+U**=Kkz=R`Y4J7ka8shKDpG?WVAkN*(MI;=;NUA^CW-CX>(*Nav*yESGd3sfM zF8F8Hk}|6CCbxKuGuA2KNL5VvKIbPjzf8RDda`VA(>Uze@EWW#r{MP4k5SVLOYXLt zCM_49C>h9F%mQO=yK;r=u?@cPMsL%5w;ye6R{K70xNrL4tUz?Y8H@SaanrU3IwwO) zEas-HrN73Bf7o#j!0c&0Z8ZkTkO^1KZW`b2`28^|Eb8doKRk(Z?p!a75LjhVW7=?L z88|$nV*5vmAwu?!IsDK#x3`NlXf}STo#40d`BT!MR%r}bw{m%LJgL#9aVt1WZbj+* z&*~uStkT~8y~9Ub&8=c`unS1J9ImWQ$&={IlJl!1NAszN=WLPlzEW;n$ZkyDUodkB zdeyRrths7X5Hm!?>}^Pyvcl1iw+G3XHv3M!I=Nl&7{30!(ER!9wAhZRD;tS=_hu)X z67PS$GLv+z^UZ7PozBm7M#EH;f#8pmLbU|(HI^gETQRY1b8d!#?P?b~o;1!#yEiKg zsi=2)=qf2&p8eV&!*IyXdp&7Y@8W)y2)3JOy7iBj`R{$4PCZ3bzFFziyZ`yXd7A~H z-AS#s<&P!TdKO{3JC#{!o1#x?bF!t5(GAL>&z(=`S?ryizL>U?wU;xv)(qwM;h^iU z{KMq3{=WAMh8lwh9wXkU@i9RYEAaPL{F~K}PQMzj{ee(hg$cjqsZTHM7HRX1L-XyS zGK6>gxR>R`Egk{3yMCA4Nd@#d;g7Zdmb2M*uvHEay(?OI^UY5^o(^ z6#u8_rjB2dAK$fCO-S7aOiA`0kc?R;Bos* z?<=8#RVnS;Xr^X}+3H&||cp%(1m+njfII)q5`w#MNUyWpi0zu<5( z!!n!^EA#aFv22tb8Aq10p0*M689p02h)QQGjWJFX)@4_(?O!Vt-stg6>a&#VN&NK2 zMMULteZ@EDx=U8~8>kEvu-`X{n9=r+)F=`qwL2ggQsTpTL*KvILz&M)g`E2fM^fK)1C z`^oAF|E3X`<{#cLS;@!X3$4wz%5`i{I#pM-`t;8YRB;yHcIK!z0Dy$O^j-Fq@*%#t()k%2q&=c&d}SGVORm-NhFndy^mxRX{wP zVd=z(1T^lxr)HdlGhJeMvBZn~qXU74}*8Yg>%vvLw7ojCa}?Ng~Q zXSs?lpba9EiYfa}6#we`{mk}HzSm#8Sj_A9Ks(gB&{mpdf39bDf#n&V<@(wC^xAAn zJ#4>jA4W;B7HZnX2uZWmX`?Z&VwK^&Vb6Lk^ljC}XvZsZXP?t_sEn77Y>lUF#Foix zwHu{r^pHfR8`z9~$}mc|!S3Yc_0x2eSJ6hcI#@bC3rvs}J(5D^2V=|u_DhbwoMrVz z0nhk$9+yvPj%O`suzNQhyjkY&z8WuMw6bhkuzm5cc`zl4D5+fQ0!DVnLa#K*m4e%o}7e`a#UBkgr z!glL@URk+;U3f{JpwAFHr62n1PH?fl*ApYeSi|sEwl9RBvS~`@S{Ewlg zys_PM3Fg&jx;7T^LsG?DbRs8M_&63>uJ2O#3U-T1Aqs!DehO zJWDsyr_?&Z5olWQOr~QOOm351ow=L9d||5&U%QzEYR&YL;i#Cd*ta`_7h9;5q$KI2t)2$k+m9A>0ed!B@4f~KxgCBx|ianONzWo!uvaookQ#J=! zrhX+LpE0n93sXyqt*ND3x!a0IA5dsy9Nl}`OBR7(vl|Wg4m4Ej48kvj4(a}AjVeIK zTkI*x-ISg&1Y9_l)LvyV3ge^)J%K7y{{R(AHS`2dcZj?S{(3-71KGzh%Vj9h(#72eeGRV2im$1K{SxiqrP&#n&;27Xa^&|Kxp}re!8utpR4OOcyB){8vqrobQlo>oLQ^yMMw}Cv4BW))Jq9=r;FSKA0n+HI*zo zd5_Kn;Iz8;6Y^g4cq1=}o0kgeAY)AR!++kYBX&~Vh=z3d)bcxYkkEM48=uEp;XJF;Rf z<2KR;mqbx(@7;@o-8@T98L~COrc^D_E&WLFm|m+Gr~nq?CP&unS`pp0N6v68yHw=K zG+YAInn#uT@tT9b&DdjC4pQ)?&=ce2WDzzDO|zKqRm7gf;C>^c!`j@=4!va$UHrp% zr9@(*_D(?Mq=FE#KT|$g`;b;OW&EJ;cmW406;2*007iDy@%fkFb8%)wPtot z*wXlqKTlCs$FB{-w0SZB!~*n)!WW{b^b{;iJ_#b<4rNrBKRNjDUeH6eaEk|LE!rQh zw_p6-aWJevjx6tDp&*t~5GCWuW!ITHbnCpjGH@J5wzb}D@1Fbx(fLbaj$YZW(4VH8 zC0!vgZG;=Xx@G-ayZG<@P3sRy0I&B#+GI#azwz=Iy(81?OM0T3Ek-U%+4Bd$umIQw)S|stIk*X_4gS($C$SphEP=kpUd6TB$ZjbJ z3HV|34B$cmZQJTB#iwqJ1KD0sD)jTSRlnV*Wk9;-nJHZEL^ENRLr0kT7Xn{!i?)EU zlDWFEpkIZuvYk^UnrH)u9=qRip|;uv!7uL6l|*7ybRCs7Rrhlbfbk2fr_`4085_tf z6^dCn`z~`3JpNO2rLQl)0t01!@;GbQ2kU17?P=*6C8|IM>GWm&o)RRL{)u*rAL ze2=YqWr&*K2(*g->V4Q^4+4Jj2T5b$i=nthq;Gi41Sju`k*tJ|-O$9a{9Yp?Z_w-iWw7Sd_WESJsXF3X5=>XRVfL&)ciYz@UO{c}OWS+mr%M!BFk)9>sY{Uahq2CzHj~kGvLNC^-F3I*8dDeJ_yX zAiaZ7a9!*TmWxUwu>_OrCj-&)A5$k`u<4MOuRW}qd#@yyRWJ`LdBIiqPy}fdVDA+Z z;3H&Qw0Vb(TuMj&L^_StD_Z({1xr?pa$U{~4l8ECT#E)}tvgpVpIPji*uF+iN>sPt z`JtV5K+aWlMj@IRBz9)AV^GecnmWZmD!0=%T1N%xd@^=up>!cCJL9=d(s$8xn8;Kn zAIWQ3O+c!(Bdo0aca3*nvlNLPpPFHsrNt)234VWdv!&?Yz4XdhD@ zTo6Blu2e)R+?m-fw~BTmwjB;?~$_gsc)9} z;gI*+qB~Z-=MV0lk{sW4duem^FaDXF$uvzcmIYIsW7Eg1f|G0)AxVM&EU4L5#?I#` zZ^NERO%1|-WjmN?+gHiEj|FB0$R2h+T_3^h#Xl$6y82Tsn%vniArP+DQzR%H2vb;| zun`e#=09OYVO-udk_JYK41W*bGCK^Qtp9lMTXvCQf2#ho8!C}FIsEjzrHEw5n7yzN z8?NwS5i%A2ywam`$y0Ag7%fMoU_}Cs@6_3)$_eW$G`k+Q<<+H(*kE97(J@PrGSnOO ze8C}A6*v{(JI&ELyzI=sFIteT3YYrPJQkuKGzQT*jUo#tl3#6qtvlM5C z1N1jq@+o!X{n58Ylj9C$$R$AK24~1Hq$ug9J6RysouIfG(=R!J0s4XuK=Ut+g_z#W z#Kp?((jo~RS%q87%f`|prQZff<1P7;V^sW)A%?Z@QUQWLc-opylNbw>>vSRlRcjFN zv{H!t@HGgF(#0ops_^gBDy;qe0r3V_CZ5db8YmP69;xWYC%^u;TuQq#K6;a%cRfqL z+-wNpQ`lU9NG;ht{$*uw<8*7i%k7lCUy2fLC#NjhT2Igkv$pu}&5mZ)AyBl4GrjiL z8maROOp?V$PZSRNuh0roHx4N{&2X>@VKs6aV1z^D0%?m@kS0ty5myb06;lcx{WDR> z6Au(AEiMRA=iGW?cImhu4%U!p4_B5tW;hdDaK3^ecD$zEJNX-5vfUEjR#8Ozz^+Mt zoQkQ%dz)n$jV&6ki{7Mhmgz|GJ)E-@EB8#wN50LZukP=iV}i1}F|QKmW9OIfeMN%6 z3=ONWp{3B%o@0CYbgODgTnHV;85N5!JJ-UH|Be<-_?{xlhJ(%9xUgsz|zL{y!a8$TZ(WvOcQ1|ke*$Lg!HUqM*Gvw}k zhxx_h;vZ`g_`Hu%($Zn^&ohKxAYU{Yf2bWnyd`8v*0u)@jtOgg(VO8NuZiECf#rX2 zlnIR?2<3i~({i@?$Epjn{w)o7qm3`L%Uaesm!0%~r0K16KlCaE>*er< z$*pw#LqR{EoiQ*bk#B#f+)SUU$+3K>4_jkjNG6BjtKG*j{>pU3=UvZavBKbCH~)gt zJAV7b08kju$$R|0Ml6a>6F!McSBFF1d#I;~<*?}=j2%%1ltH{H`|gp+yf|JCR=OA` z;`@CWe=&Ua{)H;19C^J~dyYBUKt!HFnMNDE+iPbZ(-mFuVQ?n?Q@3opT8b(N;Z zTZYMXO4zdsj-{vFwD?E={7*`g(~_7T@aoykScQl#jC$Yk67PAs#Yeh9Si-Y<@5Bo!&Qx$>r#uR{PcOW`@Az9fQR zA`QPqlOJ0U;o)e$MDck@PT(lfa@}=!7qf;Ge%e`oqV1O}ti#P0`jkGf0Q-6ZzQ1`? z(4mk}?bQ?@N2V}LKmPDjhHX&gwyXG3-krH$51DuQYI+L92PR)09QR!XjJRm_f`VWG zx>{}X1~rHYApSLKlGL(!@v{VNI<}~M#Q%DEu z2|(C1ocwC>j<9|abDipei7{i|LY1k!>Oy3Rkd<`-o)XOG%|@_=p~oZScnyPp=>f!v z*Wc3}xjIE{?}f$#p7s>v@4g`0+dv9z3Q>X}5ZOFx8Y!K>mZF;sRwMwIdiws4k4DAsqr$HSnct`}Z|a3akKSn5GGFa2)8t$g;kW0ZiTSiK zPX-fNE1zl*BvMNU^+FfL7U> z(wSB@;SXwzICZ`|>II%lby{DF2g|(dggo_bRM_YIS`e%&jA&SQWKo<_403fvg#eZ! zSJ`kSKzP#J++V!8nR=`{khnJW0N?_Oi|C}t zlbeI`2i@gni=a;pZU?qdl27gQ6rI1UL?qVvQ&%8~5TzXuEytD)yO{{IN+6<8Z6EOI ztz#)CS_&6X`fLb3K<*b!Y8mZqtg^v$xVP%2w9fppQzgdbB5DBp?yfUrwI|dPL*G$;CV7yC==Ne;XNJ>6zl&ie+qLUAKavDM53;J zQik#TzWP3qB!ZUAfDEzTF2OkZ|PBU6-d~@Mp$KGuwxhk*+A6MZfaw6KvnI))Iibswm|nGoD`NKfQHQOZYstUv%ErS@;e;S zZZNu*s{wCyGn-PVq={^@`8PqFDMiSKUE|u{#f$(<6(2j(P&;>}0J6N@0(Qs&?Fj)A zRIZW8=yr%gy|Ve{g|aEx*zIyLVz0RHJOxkX|Nk*LD$lZwvH!|@ zV>C2HVw{#;2x|F7P{ufMj|hT0DxtjI(FW^|`{C2?siH`VnjIVB$B`ybPW_Y+Htipl z8VLAQAohvHzXnQllJ{TTlXCMgre0EEw=x&j4aheu3ZJCH#HcHRhFaVr&F94kYc5=$ zf**ola@feR8)!``!e=ValgIV2u#jhkgJB8+;^g! zy5qKaPj0HE9(!qjxfi%=*e1O>+ETg?|6Ksh%7R%^Y4W$7C)SG*#V~yUm0Q)aNpqgV ziOKYO4RE?%WWI6;2p0%wcF0Nx2wip`X9Kr#b6KMI1MUD+scM>hu`#q0s&KUqkxRSv zMndorMTl;H{p209w&$WTcCpt(a{-p>%d!1ep5?Yb5uT|kp3IR?pdjkpHA<)AZ}E$J zOdLpC-mi4#j67F}y@0Pg(zr&Gcu{MHrHUDjwshLySIc9xRIdHJeW#)NXl}bO^;YG# z3lhAA7Cb>V0W0_;QsEgGX1?2uh^m-R|=J7pHeNcjP;qeSj!mtBlAq7}Ng5UJ& z<7$&0f559gYz^bKYC%PKgg2-XPn<4#`LRge81#%OQfa#v^=c~8JK$2ESY{BuQc*a3 z5mC{*Ltu$iD9YKW%QaIZEIG*NC++%Ui3LX&sv+WBmVqyLkI6wbF)9cw8JP;F5Mxs1 zLi;X+&=Ig8lEZaTY<{()fzc&Hf`2|LwSU)6l!;4mwFF@eEYa!(`5Vge)ikk_Wbd0l z?`4N}Co1Z0a|2$w{?|d3cd-f1Q|4|gNHpX->y2SjII^n?@+lN-IMgIR4^L90@U|W| zD6*@DoSd0LZMoj}y*s&}XtUz{>Vj-TINym32oNCkhSTK%ksJ@`)@u+T>SJR=bW+F=U~BzVkoEt4^{+x8lurG%alk!i8`x_++oepI+Nkn1iL1vn55X z2jZF9Z-pfi$rzHT6i6QP@ZN_%TE4^)7*ZzM0mwM)$w`d)zqwHJzzP1p6EE{&0P87V zg8}SVZ;0ZhRhl%Kf@scO@v}q41jzH;Xx@@%L&&R#e_!=lwU_nrin2N&L>*$ z9hR6mXYe%Z&ixa=@AnUe{->zm%Yg>F>-k&7W`}x;06#?nA;IpZF2HjWH5i(O<8fkM z@%WX>|1sj>AfiGQ)_wvaMnzUOL7j?C+5;D(7;SvhiIyPLkO13tAt0sPs9wcdUQ58n zO*0}J!qQlg1QEs{oLCkTwEQ#$*wE%y|K_jm(c z9`a@SD~bqTeQozaEsc+_+r$>XA#P(@9@J;pz19&3`_+@Zb!)xk6#hcvp+<*A;Sz+H z2fW)_vAqYn=vT4fwUp;?iuCy+34W1(n`lV>I47FiR|K=+?u5E)OT6KEd@GXBFIS%L z-6_`5CZHi@V*W=`mePE z`cabnkzf750}hrxWfNeREwQ7(16`+|yLKGVroK_#wd>karNdnndZmT8-=!gG4>2eF zSK0o3$EmJqy*fVJ=e&U2;$vffd4fL(K&S+!kdA-H1(b@Tpa?*esdQ?o?xzVGNp#hH zAyV>WHR#y)!b(HM3M%DZ*>TImIofJ6|AR^SCHOVNr3?Zy9E9*hyE<~4x|=W&3B8U} zq<9EeI412B5;*)4cr2!|ncL4VB(3i5q%Q_cUeWRf#Lek&CM%ZRa^V{cfw`Du#ccF# z>tRYN&tFzHBQ24u=;I6j4WwuAi4YAvSu&ic%pro3JK?g#s>7qBr|*B`BO6U#MSjcw z_7EEAa^d=(yH{tvoS3-b=BV}P3ZZ8AM(hgM9#bUNcCg0su*>{ezwHZ5G4eZJ-3H7Q zSF&~$%xZ{kEta$asjr+^woQf!4*#L zuP45O^5t@0qGc&B|8scSfds;BvmK!4Zak4Figf+9>}!oi=L-Lt*+DfBc<&iD6@>L*>rrDqgSf=lfyW`rRZ?5??*&P8PaK(RB_fo!pVPjYLM*!^;(xEh?BD^_RmU(p>E%6Y0skLS z_u-Y~|HcjcW(g|Oy~UAx;LIJkH8q@>m7-aiX=0kAtUw&N5?hYc+_@@jn3WZ7Eh{xM z>uZIh9GPM6vUvDC=Q-#37dZF1Z$8)OdcWSX(2sLRJ<);Oqf7Kzkj@R{uU_dWe)uJ{ zHFt>AQy_bkebb%c?EGJS^f3XExiRn-CEiVMTC9NHeW4^={&-C1dZo~!W^gHZ`=F&O zQd6e7waK#Cx#)v?LsPNh%bSS4u*ZwEMcd}6&@P|7#Sawfip9uEJy#m@-ky(|cP&TP zb{ov(iRX$K4q**$<19D>7Jof_g+x{78@0)RtFS(T@j@=bHQM>RPs{i-s2GgUV2`mY z+hO(Gn~>Af?~NTTVRN#hTEzONgFEKRTX-DCUDc33HwQjM^^inA%=*3=TAw)b#yV?Q zkQ&zBL^eR+Hem&O3W5365m(K8Q}Xi%YGtDOy87#5I(IzQ-|^A%x8DWwPb`rXSI4@A zMRh8PA4kG)_%%T{HD|S6w)@eklEa1y{Z`9Y?t(-u$9_C~aRF{%HmFgP8aJuepHC9K z&>+}Y-DMh4sf7ko!h?8-PE;k1sj{+FZfVzD0 zuBlNph1IXNuPnKJ{M7zji*XqW&s9}#i%S>2qxtmA>afc!4I-k)>59LFDTo`8JBI~> z#=IX2mN_RALf77>eFZ>r(G>IFygz~!3}`e}Rpeto=Ip=UC;p`JOCfZKAd`ZkWJL{4 z9lX&7x9J%aKJC6&9&~b={t$!>pL{}D#EooaW=bH9Sj#i3nnrhi* zP&53_svxH{x@GINR9&^F#!kTi!84HAb+42LEdm7|7|tBFuNEsB=+UrR$tLGjOWbtr z)d^b32^^}HdN|N)aAqZ!f}Fwd;eE&)oZpVl^pDqpPL(n%%#j)t^xh_^wxlrsKzEIj zL;oJb&v6AgQJvD$WN70SmbEvUB+bJ@1{zp-31w;s{(!T)>aR9UWKG!373DW=;_YUU>hC~CMRCSW1&8Eje@kt2GAsy2O9&zEnMuRN(+*sL*drND#B=% zND6sI*dee+QjsT|$Yv-X3+zM!rN(OE-HJ=BtX!U;+kJ>4g#Dmt_j~(IW8ua9&${Yu zoDgqpg|AfFh*Mnl$c+}>&V%@nof{8b!KAYD5uc_TTu3^jEv~L&>6MBzoMl6vrz4F^41}a#V&WV!8&CuZ46Y(EQj8 zxgd)X+v~-kMlng3+}@XP3#v%UaJK~iFf&bNo+zq$|GR$7xf9N3n_hh~{c+st)A3H% z@0T9EuDNYyQGA3Xa-hh9Be_A%((b4{U{zU-)Li96zXA?K9er>TU7V)ZWmJ%~R*ic9 zcAqn?i{>{}BfbAo9d0z##J@>Q#)dY8jrlJlVXRx$9S(Z?ql zO@fn^D#Thr#5-GRgDoS;6G>^;7F4H7zDK~Yqhbe&D0sws8Mu*OB}j^yVM1QzFw|^9 zo5yjCwhvbqd_)IlnijicKl7>kLEJEZfY|48N*Fq-f(aO=2}vTZ_&*z+knT_JgZ?0> zU%p1S^2kx#1~|4mp~C2!vk;O+FOyPrZ(*AI3W-XvtC)gFsy?(;AwEnhT^QaQk%3Z1ao!1g|F=<9<&*sy*p>&)LwpU-uN;;QhTz{kL%-xc4&C#`>dtabo|+ zu?Gkbkit5_MU~${WJYm5qJmeFpue!_q=6YFwoKa3Gs%FOjEV>z{s^lBvUEG-ep2}5 zQR5|*1?T32{(dhY=8J_s?llM?cQtvShPUD}{1UtJEU>-*>Gxeq0CvU#uAE8)c^@Dd z^t-01U4Qrp?QD|ELz`cE^|UeF>b_9gVU^IL@@WGpqmcdZtB~8aXg60|Tjv&hwcdwi z^`es&_x~w=D(}$7g&#f=vHAAJ-GAmZn3A{6(H|pdZcco3H%bR_1$&zwx2qimoTfP! zHB{wa;HV1Us2Hx)VFA#uvv0NuFqB5-sb*WQ^e-+<$77vwW^XR|w5yQqtT!rVw)yAmu96vIt4ywlIS zWr7d8_U`^h8jl4=AG*^J@3SoBznW!IEP-Z!)meUH7+ul1=-mpB_8MjQ0T#NGVo&B(kA+U zP#8^8l^n8O>4P|iX}s?qL$ypJ?G~VBot#5!thCupY00=~dashN7&L`Ob3_1B92pHR z_>&8L+U5M#FEx9a3@K*1@)SVB2K*@!>0n``&7dS#%o+ho?cFqd|j9tT72>>!4ZBfDoEDn0C zCfXDj@VqWngPEbDg;ibw^j*_YTQn0Q$cGYQ!NgcunEV@N034?24D+}%b~G}i?h?aV z3++M9m}KVP3O_&G3G!osE|A<4=1jymhZ}ehQzBT20Nh|<7Rf?x!o$K}CN0A2-& zMP~Ivby!C$#d2z7XpnZIEG~zJO)R{ z+)PtDKnGptqBl5bfQ9)*!EE8t`^d3a4r-GltYLzc$Ov=5o|^$81VosCkpwLm>H}xJ z8hu1hW4;ZXK@)}NfvW%w0|*o^F4U51dxt`?Z1?*g%0+-eM~W`UUS%98E|SjrMWKj( z^}AmQRi%K7t{pGEhWX19vgVp&W5WuExd>4QL`T_w;LAoWRf_sVV5Ji=71V1` zusnv0+^#H(GmjX1NK__>ypX-RNk9cv1~gwH)1AYt$+(#V70KJz{;?{Qh9UD@@6trf zH=1|!!ZoTuYker+m0g4|ziJ7F6xNq)Rr)LlnWau6*4bq5B)!xKtZ!wC&S}a&faU$Q zh?b4nCKhLwNFY{3%~!8@)D?NKpjF!CbRnQFrF3nOym4Ht%CdBO82xk_Z2OqJ(TJ1b z!RBeG%VbzloYm=g*moZ0EX5dR1jJF%G5gPL?ddN=1JnpH*tq5!@@MP(gZR=pzD}^H4LKh}qHrR5B)WtRO(w#;iLkSHhP*0bpJkIb05ou$ID%a; zEaVOqeV+pHt3+*JQNdi;2p-czgetT1-?}&XQEzRqZXJ6IyuxF;i0}v^ES-pIhF&ma zH*$2Kb5u+g1td-eNn@#Y^Pyhd1>#h2nCbWtzTC`PcZ>yBN>KY{SPQDM?46b#kd8 zt@MTujyQr4Z9jLc8@5@v+U|2w>NTA#ad_Ead^cA*G z{=oxBESv*C@j|CU5%N@!C;=qS#Xb{h>2hyzqt;h7-M#6KX)J|UrwN;xAQM>k?$UfL zzJe8IK{b`+Z9J+dtRDK%YZ8xHCm^%&g6>eEEVA&;M@^$TO~7yqPv?#<&v>AzWoWTw zI0qy_1Tc6u^aLBx%+{p>q1J5!0c{WvTbjmy0z1n-ZxsXKJ?WC`2+fM89Ko=iMMH*< zs1lXmn&xc6LZ(jdBd)-gIT$h#oX$aB!RHrCiN-&&vz5x)CL14pth82&>EJ;#`Ys-D zkSC5nCV4?28}dm}XWytw307f^unmkwF#!y}L_x{3Lv+50owaT|Z!NYKb!V&T&dws{ zpIql@@hio0vNCv>Wxc2!1*}0XSjHngd61&cg2EXgH$vBYDtdYtBnTY+^S5eaHkVa4 z<2lXR*67hnuv#UEKAK?D39_Q1mIx?MeB4EW9!U`bIJXw3A^&p# zheb>|;6$>O5f=6yi}R%N#qC>r58FU=iN+!IvbMw&b|th;LQ0kjm8lQK#91Hzr5&cC zmH!o(NV*xVqjvxJ_5TWQ2u>pusbe^*glc7%-cncjs<6=^-z+_?xAzAA%K`(Xn1^hT z$4%{V7A2y#aZ>yS?Qu0zmxaV|{|C$5Ib@ zso%y3O9%4@yv+y1RbGvy-q4upm(w4hk9ZQny2`h3VIWWe8MR}IVvwQ7ovrL2lhf;& z7GvrMTQIJ8*aEj8h78-4s;woVB?O>;9<=xyjZGwA0-}rqBpsEfY-_mafg&kjDe~oh zhCYp>b^Krkr!I#FvG^N`BfWOnNt6riH>LHT8S3x&wmUineWntuf`u`$=p`;H{;^FW zQSfyT(!&M|c(Dm#5kDc}uvZ2lt=$VkfE^O>ec7DtPjepxQG7X%I|oO)UPFXdD(9@pu0m>qD%H;914Y zDhA6^KQH_M^6^(rD=K+D)OA{vlOO;AWZ?wf(bGw|hKN2>>PTjiU6t*}&@}a@=Md=D z59Q?&H~uozS*HmjBzYzKom-P1FMZOnmGURS?_$l@vFK_pRBD(nhoV4n@^h!o3vRX` zTYEKqy>Iep(D-+Lq!{E36> z9DI0OcBFMf$0*4_f3{;fsvO7BpX@2mycPtH$;R9c(%Iln`Di@i(4mHA*bq@*rc%_A zle|=k3SyU^sS59&>P}R`+1ms~YM-k$kdbZuu!q`8m=cK&13pkO^(=@PPXxe<+EIbO z1EQ&AWXCfHm&vGoyoW-eKPGOQq{ka)eDdZ5`$ATd4kl?R4TJ65&-aHTm)UdHz$2lR zfsap@pVKf8DaLNm@-^h|_w(WjzwPRTS7H4%5x) z|Ji{8D5tKK-+#6Q+D}aR3n0&6A#2_^!f?ha3q3(YZ4-XR9oC2P#R1;0P3)>k$f^Ws z`tW0(oYA5lS_1V(7xVL;*ghyg{4sxfSu!E$z3DE&t>{{)me$nt@-QZeFmYD%*ZbRN zY=9r5%ebK1N>IN2#%m1{U;Gm|4@!aR->N?J1Y*bn;aDJTGDw@am1(G@l(+eOm7CnAeQtadA)78N$gR;Zn_s=J^Z{&5FZ)st&dDUr1jm8u++k7FGx6mKKuDn$-*K) zG+BHTVZ+)6rv7gT|GxSP06-B6^Z#Jeg%FNoj<|I2p+FqbUTt{kL$gakux;Y6HI)yo z-Q7;cb6YWP*|>BjsF(L?x|5MUgi#32f0A|QGr4+cLS=QT)1kjW#pRmKf@)un;4-2G zO9~_E0RL-|Dimb!6PLHJmcYVf8^JB{1vJ#V9^M+j{%}3=qTdzNeiL^$jY~?jGrwl1 z)RG8Q_WAjecN2v9@%_E|r+=c~y?p=E34W+8|MIMqK`$h2qWrqrnb0>kNZC@hi;Pag zl&%Uqw94;o`zhj~cI?UoBm*hw%EaRKt4%)2d%e!Mq}Kl;PcDC2-ffI$8)%wLjWjwj zc~5zuBqVx^pcl>sCZ|CQ8dF3i8clVFla-S)pa z?gNE!US0T1m=wN>d7^J512L-;^}p@WL2U*%+=_cSt(Zr6w7A^u+UPPVD+EFXYN5pw zAA8d?q+N+qo$$_=M-^)A#^xCqLY#}T{HbC(ROO~#jKbLD=m6~)Po*#m2~`yUm-XuR zJo3>E{O%Vf=6F0VX;S!=Bkw$zqnJARsNc)x6Dg`K^_n-hWzufq)^2Hm_$+9xUop6S zYhuNHIHRfK)Xf~ubr|q#=<;y@n2?=&ZR2$M=8d38wxQI0yVfk}U6GNEit5MWHOFkf z554tMP9DDWQq0K$Kh!o`ZCL$xqIsSn6&yOJ`-P*3JQ|kx3p#xdVA8s;=GtDpiwhL751p@(PQ?axDe< zXVZ7n*BeX$omUN$)^9%DdlT{x>F55b?|A=1hc~{meXBCEnicbYT_vhy`s)YR4jU=n zv5|hGYYqKdG|r#Os%wuC$Z1AGee;!SARo* z7~dBFfUIvnrmC7&JHQBjV!G0rE2bESkn@Oqton^(BGhn}dAGme>~cz0wj|o@vZ`wS z8fb8D=mbkf^8ATUt)pIhJzwN#@XaRDGG9I2`rD-7f{|2ZawHR990$`RZMG;^;;xZ6 zX`+UHTzk1d8P0YTI>=SqBN@UaL+*A)NdD9~b4Bi)r7eKf^*vGg-SfEtAJ`9I`F%p> z?5E56M4B44Q&;esRkor-(w-ffu0L4f%j@vI^)K7sgo?D;7D04Qtd_eHI_| zPNE-1Evu2x5zLFEShPI?B2ugK+Mw#?yE5<84_QsQt=}$s`a{2xW?D-@nBdCkt; z-J=Mcw1BkG@aIER=x_oJr1+plIQwzG$|(Z0{(zT;1dnq8L8Ut$a+WX+qzh9Cn6rLi z5WNNt7%|MmX-qjC9SuFtt(GvmJCaYGRX|v+mJH{K8mvFLp?tMQ{d?%Xv+{>Hn_au@ z`#fsN?teZ~bK({L8F^~R3K-Pig_&3KnpNS&f`;e;Tl7f|9AzGLSt%JiFLt>D&^Q>%j1R(MYNcL+b zDhpf%Nmm;DNCp&6OjG2#qT-&V`-{g&1a?_19HFxK7YX0OjkI^v0DO*@8M&V)b8xLB`e=JJfb-n&q zOwHXE?(01;QT*DJWCjzgTjR5vy?P)|+~l4b*wf8eV2nm!r?RJ;tO9LD`99emz2$=2 z=egb#aI_gw@j{zDvW`tueC0@c@?z|tQS`+}1GJ3XuIzcd_yhrIU5`V6#yMeM6kY60 zJ3`TWYMgpaoMwG`&}{(6M+Dbt<+9eC&Zl#5a}zG&$rGk^Eh^#+cA%;yHjOW_Vn0^e z2W4r2TcUd)=6$UQ54Lh<-|H&NKRp(0aaf^)5|2k;jb78*9G~iampp4`cqZOOkaP$K z3fNgzFW8nCSDO4*u`@1^kj5U7Jb4ypUUHptgnIPK{a>}Ia z>(auX=>roz*UW&6`3^aHHGHJM)1p^E7(hj-N&aGGiUboF>#utu+O9-9@!13Jy;u*;4x=>?%aNI3yHK!)MLAk51%c64TR!eqR%V)$T7mPW{+(N@0<=Os+#8F?`q4&Mt+AE8msQU0tfMBtnSxi6`e5L$l z;6l?kkTT8U79jo;I3U4U(B+iG=}t}EY8UAUp}_x#Jr&yp&4Z=49=v;@i==^8nDBix zh^7F|8cvUIuL^%sw%a7jbr=GUWtda$=(xB~$YY1*73 zq+Ur+iC7*D*ieD*9q9CoWXK`9jr6)rJRHbAwWU+-t3=Ya!}H%yp0^Hn&E-B@(6!$? zL)#N+7l(xbm3vkYcZyeO-WG7w<;>Z5R#|fsgi;pA%Q{|}?xvoe&Bj<&3OnG?Lv-HL0)iKVsjiuBZ2C_X^N_J&15oipJE-(1zOk4_}r0KNN#n}o-J|Yb@0yC^N z;>%`%K$%--MEfgqU-`=6;xp(wS!qLb9R?j=>>46dprMt9x1jG@H9$;QI~z5<_buDH zSLLh@`*V;knyx$JE#j^214e4xQWz){`CAa8mc$K<)A3tH}f{5^7?NBz+q)XkSX$)M> z?JMtrB@V#1j~5yq%9nD@yr7zw&4S00E54AOVq`o7(qG2_{8U4l3RA&24%Zq9O=7{j z0AVr(bacTpS_e7Rp*a4*LeH{3gG1Xp>z=da{&d>yhTq=NG7vy`;Yo$(6Y}=08DOZ; zq+!Bgi$-75x*R;{8!qkh4x%3-3?N`i08r%s?T65wAcfm((Df#D9Gk2ey`k>=G6~nc zQe<+zhl5@ik9_pscg7_CN!BqeiN~j*_H1}$l2tFfhJ465uF6H)Loj2*dXTU6CbGp8IiZLjvKZU3&9Htud~0FdGlr{RbY%ymM8CrZkZr zPR>Ht3Wc>p7F-qJ6q-#j>@+}&CBTANS)Z9@AR;5H6AqBGB54^8WUvxT_!br#Y5_m( z>SvNnSEwYnBLt&EunRLYo&)zk40FPRZ=HDwQ_!tWpdpIi1wHkT8u0h^8#JgvV0k*a zGO$<*yr~uzP>vQa8!a25yI_T4sPNOnnMd1U`viJikO7>{2u~J2Vk`RMqvabUTVR?x z`1?B@^}|@uqCbtF!zV`GM#4GRxIz&~~ioyy#CW9reZD3^yRBAq2(+NmW+xDIhtEI#B!P zcL!tu0nHpp%Lceu|2NAkh1smnFbX}YoSCuE3Z1X8mIK+Ckf28@w%3hB1xpWGHhEl1 zyNRkq->uDDKv^>Ibg!r$1Ay{)?)8s3iJQIu#Jg&2s3wkJp}QYu4N={qkH4uyb&;5fviC2qQlgJ0MUu* z7lWb5t%A)?-R&PCX3xId{}imZ5vx+<3V3Q!(Y~;rc}XGVtJybiBo2o=5R|IWPS>D^!gO9AfS(u z-TtB^(9o^IyCzx@L;i2wKkT5K?D|*@cslf8lj@yPrt|Shg?bvF3|gu?l0R@u>Qhlp z(D3nR!I(u2^cGEN)d)tWW&OF7&-}WX@p*b==J$_W=?OOxsaet2lsLYrxJ%}&<h`%I_z^tx8n{HpbL4UgZCnWgU~rjk-=(cen%IVJU`pe z)HL0f@vX5*#6_kGT{l0MULv;hSO?c`fcq{l&!P~AB>zg!xi(--_3h%*n{prA>~H3 zvC7g}$a;4By+cfYKs%szxu$jB2ZIX3CH2X+2L9}iFG9~N-WyP^cO zj+=P$TmFx^Ys(AuCy6>W1&d!7$CoDumw#+5{}hTnQ9e8VxAsfr_qp*`yow)P0Y5i1 zE{mS(=$sW0vHly0KmYXo+&LNh<-F~`@t;4QE%T*#pnXfP8)GmQ8S&Vx4CK$X@z`Ds z-cBOTuQ)3O0YAXamAm*2F~>u1@@}=o&It1`n3D+274cXeHuf;oD^!~6${YUyx)~#} zd9tPBD~dRUeH!|zenn|BZoOh<3iV5Qzptd`FSVi{Dx38R{6w1k3Qd~7d}fAs+v(Th zw=Ym;)z4kgN_T!4Y@RCg`}OZL&v0(pNORTX%gLs`xxY%Wrb(;g^d-%iU%PLvT0LB~ z?q9WeziKUL$F)+3#L+a9MNQzqWAgk!Nwb99Lrp9lvX{1$1)aF z0EiGCU{5-W-&}USu;v;Pd&f4;J1gO$`Re5BWw-ZC_vZ;geY(EVmpp&2iCu~Do74E# z*&#CUYatGK@D8oHGF%1=F=E+3_*RGapFYZusT-zSa2VKEYr7*7XK;yOhQIt>;)dh0 zju6$|<~A12)1oW0{8<;H-v7LqEa2$rn`NgXZk&vTZ(8uJr1t-$p1~xoNc{>>-ptY3 zjNiBEb7K`Anv|54^kIC{LM;766Z`^=f%W>pxUkum3>2_36dLFm=HD~sT*-4WJlD)K z_{>+{Nv500GgVvZ((x$;yj5C5yhYYCdt3AV&AGO;)4VKOR^?^sl?yk-R&ll#)YmJ} z?S+fmC9#EPM?X(nn4u~kr|qx*#{^Kk_4Hrc1GsMp!UM0jnwE2UOrPJSd(N1Q#HhVz zmVMc-&`b`BJ?tU#ySnH{?adV20ApzjabY4Yr~ep+_NQO%Og@$lpAb8M;Fbi(K8`Ky zfu2#Rq6v;;cq-T+QH#ferQn5>$#xMxPuB3&>iPQsYXwllKEuZM%%e@eoB6+20(MF_ zzskHqJumnJ{GoYWOMSslDAMGu$`~0n8q2u+nd^HKZ;_qy=iKD8l-RB}pQdj zAD?gD%}3CWiDZdj;FL(ltH{;Ak#u{CP(o$aQY_=oA1#rsG(Xp@lw|mi-4|{a{;SYG z`+fXXpYp$H&6&yfe@73VPX(A~<1YbPkvx1?x(FsU?55{lF)<|}Vmnn0V}1T$;*#rp zC!;2A3o7O~Q7LN|V3Qn<1%cD;0mBgE1Vmxa-V&3fzNKtd+LeT5)fHDJDDzI-Kq`|u zxXOLqK#+8QCCqVPTC{b&x-N|lye_F*@tbcmQH?c8SbNr%Vw4!wRf%I^j7f=`=?4^QtM~tGd-~s+eQO{cd^dFHwjk#I^vPzC_Jw0V&K(OKDz!YTq-SP){B48(6Y~#wafuk5s$U>cBcvl=5m&#b+^Pzs)!1{% zmr61dPb~24Esd0+f?ksy{gQ^g-SppGIs9d1t^D-;4*@J&U@X2Y)+h{3B>-(Nlb!x8V_b>P%343&Bd7tpJDN=ja4x=-70T{2pK(>4O7~P^ z&P2#saA{zvA%ep`kDvomh0eGASdbHbs{=~jOz&*-rKKa82mPhKaWt0ld|yiKW~v~q zS0-2L;7o5quh~*@JVG+vPwl4s*9BAG5*HD3wQB;eNU1)2eJ%Woueqdne%A59x+04C zfrS!yA+gU=F0OXC@$mVSFq-zQF`pCrpY<%(UH-RK0y&iKE}h}3-Rnn}k7}<>QfwO3 z0Al+rBg)6z{g+yeZ(my|KH~nhQ}|+gO##Ymh(-74 zn%?q;N~p60v*t*EBdWG!`i0+V82pt4#&vMg;9lN%YNuo#FYSpEnFTrrgH(1R)H@`p zo$@~u;?C)I;NO8#g2jcdYMt2m<)LTDH4gseL>)$`C7g*95@sI4_G?5Y#X+4TY|@0Z zTBvb7f*a4HXhVzj%Wq(pqkl#I@+Q;Ys=+-KlcgaPGeFhl@3dFSr|UnTsXB5wVBtVk z5;(H`ZNVz$w8phToPS=gQ$FyTl zPu&xFQFe@d&wmhf;vVPY?~R8Xl-EHK%R|#r@7w#GPM(5S?cbiyw5rc0ABn9Yf@7th zHxP#DSb-xHklA`AF4}tJ%*6MBZx4h;Ug1YYgNK^}Wg4lKFt@2Z(L+Fm=6NXgHq+Tk zkV%gnt48Uk3aic=6_5am5Me>pe8~tU=nsM#mUIcS3bZ7GnuL?!-@6u(=|^Dbt|e!g z2u-Cuw4w3k*Qm}Y>V_C5qg$Bapon0bK+F7oT`HLr*0f!qBU6bYjU4Cw0A6JJofd+& z<)}8N(ogkZ2y0^101A*zsU6WB0h}d{vC|Mhm-(9#xWXyGogs+aw{bJ~pP|DarlYWV z3F_+bst31V@x{lXM2m|h9__Dcb3^<{GQOKQaS1Jm7|?HP(+P&5baiBT*Z1^QLhUY5 zfD(#el*UT8w-tqoVMTOOS?Nd*sQ8xaynW5ImuO$S#;w$&`^$`8N++ydUzG`0?;ixo z1fG(!B+`BDF6EplW(bF_5k-d{y^I_Kqv4LqX`kN~dj}U_-MZ+h7jY}R}*F9$M)t#jR>z|KcEgaomW)A(?u+6IuI|CL2os)PXb zTFkuw0hZ9NCgBFq5ekA?!T{t+QMf%Cz=MT|YK|&a2z}O(M`tQ)kfsfX_sX&IQwPEj zHUDKJF4E9yb@gGoCs%U!YlCIqPV`AT^tkPttPWOe*qnUR@cI^yMiJhU+z{>X*Vu_K+$g`alVz-0l44 ze_!~|YPFRg$;iDPDX?a9^Q%hUEB_P9Q1Dm=PRPKm)s4Kj*PWpIsr`F4hUe1`lqzB- zO?B3-(f@vL?sBoyKI}5Kx2QMewa>|W^LAXiZ@ZcjnRhS5n6HL8KFryTK{%7{B4535 z-qml7b}S%qX_V9eM<1y|+qSa7f_BxH4@=fXI*`YVE`K--Q!%2)9>MO;#SAwcdmxM~+-N22sjm}YYT|E;Sa4&8W83Bs--`$R0A)U{P1oR${ zSZU|MRX-KDJsch_9ybM}#OD1mr8Ho8HC}1(EA_&GS3Bl74_8Wh0v0~2s`+Rzu6pWp z&l$(pKr2&TZjQcZl_Pw9g4$tw;!mcw4%}kiybFut1J7&IUbaIdJ6O#APij(zuZc8( zou`TD1Eo>=Ew|W7*24_JQZ+;(eONekU`A#SfiCQ&iV1~w39t{S*~AFOEsr7uZ(vmD zwI(4$s$4S%K$vQKuygwnWkoK+D_Hr@hqE6y+6#y(gr|8#Xs2j7U}m&jMi-J`D86g& zQR=|LbcRE*Z%z}{@Ub~2lUyOc0S9dsH%(T6QAy)DuwPW~XWZT5b29zE9vS96Pq7ba z@O)t${$(2%tbVBYe#RHeypZkkkl(jLZcZv%&wg5Rf_Zt8G@>EEFc{lHQ#|T=?*qNM zj)Y$72g$s&7^q0J5e0TgEjw~51PFiEeVT-0c1Eb8C%61_sNyee$c8_&%c6_Z^`RAs}R{Bp~WC}#><=-s?9m)lsOIm8iFa5Bhqu-u`EZWY2OI<3|i zh((qE!Chq#Ynd*gLo}EN5zGySWp}GE>C&?#vpgvPdlfRF{12A)Z{-GGG5{!5GM1ZC z4)W%U26D~I7(%D;VN3uqI*k}j7p}(JtB0Wz5n!Fl?W!BUTb0!}rqtyqUdbGg4F^W< zv@C-d{#GSSD@~CrYz_qrxW&11N;lUtzJMyYxQZ$536}vC#ovR98xBgw`#=3~ga`!8 z$u8`K8qFUYaUTVOg4*XDWQheNQpN0p9*~5i835qOG&B`rZNWfA0;0)pR#zCZTD~+w z-}L=_tbhoc1Y_n^fI|?#hJkUMa-o2M;x|Z&A}kqa?aB}Vu0!T&zV>x~X8`}8IvoBY zfdB$3v7pp0r>pV^B+)2!cADx%iYBI22|~hYHrzCkXs>g69HBrOKTrY-0@5mwJ*rAx zc1Q+lav#hFFyMAuw}ViuaOeRdSb%A<8G(ym4FFomNi;xxP07jFNtkuXR1f`%yMC*C z*Uqjeb3Y*kki|~-t`wFb$FReb$m|c&5}jsw3`*&DaBvvdnkodsciED=#gU{cEDaI~d_e*RlikJw4NgWQ>>?vfwTGNn6}EL22dMY3`I5&QaZ zpZcR=^+_j>MVvoI;^N|lA<-}DDJ3~E)Ac8FfY{#})KYnX7~!ha6TI;?q^;q&*tao+ z2e?ct!wU~`0ze*}76L@tQ+v&k4v5PcpdfYGv#=rQ-F3&M+sMXkVjaAJM|m z`E+@Y0=TX`{WjZC2+1+vLg>E$KAghQ!bXUvkHEt-LnWCE$Lyt0gh%8F|HNj|)bGhQ zMT)di;`&RF4Cx9m=P$!CoMrgvAe`29?JCl2k{Po`?_FB@KsKK(wZ3_UbCe|pWja(4 z;T%w);MQ9v$zX3U1%OANumngliU3C>+IjG;FZspAr%}sJPOz^Ic9RSXWS1ijO_L=W z9rDvkCn2DnaNAH8$2lKQMaui1|8XFM0i9#0FX?$^wLWFDGBTX|JG&QJ6B* z5X}~-Mjpd#hr|Cq=wKGvspaqSTu0F31ap$?>9h~d0Ed|X99lT%e!%w!A1N^vdM)M$ z)fVCYHYdA|9U%?BamN?kx#*x5UFsEmySXcBK?H#r2Bwglx_k%JB>+9CapxORTKh+Q z9r}su;L>0;EH1{E0thv9StKy}ONq5GK~_hv_b#JX=cP~hQs3R`e*66wwM1V&)*CW6 z2pevBHQn<1m)_^;#h|w?I83R>WktX4EZuB9Fp~m2H|k@*bckbibT0Yt4YZH z6@d`o#TWbrH37i1cDHSDmwc%~tCyq05DcD5tk$l2W`c zjs1k4PnX2RT+TUsEP59%dMraQEhiIQkw4Jw#M0UoxrZzA@ukqskF^J=)^Pv`2}r7^ znNKkGFva@;nb;_XjYNNZanQe01KkLHF$<1nL${6u38$t1_QhN1?o)e*S0p2h!cVnI z@1E=3SW$)>iy`mwY_V5UgBtX|I;KJF6n=@akk%@yV!Ew+mtq9(Dc3*-2D!{XM5e)Q z0Ck?dg{h=D1!Bj7II`|2T$c}CaA%>2Xa~p1WRC8B-r+jT)BO4KJ+Ln4+oa;#X%>Q| z%1l#owuhcE?7iobv#!Utl|8#Nw$YIEFpdO`aRu9oI}7})*Am(dgHt(Q&@nRkX{5>4 z`<;T3xRJ8SOM@pdhJVmNc!K)AQ@cWp*SL-QqEBhw8Hk}7-?bUC7GI05Y?Zs$Dz7|j zKe_sO#bxnZtkqq%XoLsy4NqRo%dD5AFbq=RcA7us=)gji&khMCvHK%UcAqt|$c-QR z-Q$%?6m6L{N$4y5rHD9me=k1x6&f;Qw4#h{lx_L)WVyTc2LQ=a;ajsyJRy^|?JAgg z6DNHG>$3oq3YqPg5;^!;yizWW2(g~*GLAZVWKWw&2%2u-hv?|C$P0MYim*P!gmZOg zTcA`0M<|6RDZ{W;xM#_-mt_K{qx(BAcF%`>f~P00CdPhwz|k}PiMevW>XAvDYA3QC zfID&|Wd#3E+G1wfb}AnP-Fq<9W-{OiKxMl3Fd^c8C#Rd0UYzx`_ylAJ7_f+SG1@LwP6~~Aa7sENe&2vg!e)|yUcDX{ zR+e<;PSV-u53PD0l3X7p%J-b;--!O>5K{z_`A-;FG6%GlvhytMcOEnfZ^UEULJbdP ze`TDsaKP2-9Xc{>Z=#g1vO;WzVQ86NlWphKq_f<=qkqor_Z&h`rUPeYd_ zwJwliWxeIFf1uD{q+8DS z=1L@=(fX#y;E{tZwmTO@leyEDrry&_HB#iIMI0^CV$*t5RK0JU7G;`WSC+a~Kt=XE zO4Hr#@{`kHO?>+0kIn3#XKx%^4tBL{_Ev##s$7OO57ZWqz~TT96+MULob_c$xenY* zg^GUb7i}kY?!ZuDAdkVGo;SZEfrpQj|Fkw+Kbia0i8@EKc4{S>_U`rcACf$-GD#*U5q6An6ZwiiR}i?#9oBn_hh z1Gzh3R>y;i)bv+Jddp7)aO0e0*o%dPM39l!gf7$U*Q z!DgBGfqL~UH;naf^TBrWRv+FoKGZygHQ4@lXAxE5Aa*nIR??nKCP(PI?umWhwF6H` z`gNZ2N%dvv6WIcNq#MkD?+#2}>H2@|PXPCS?N9gBK~qzlD={;~U9B?)N>>ytiM1YX zX*jpbmNpHO6Dvms3U~4Mo#7FpChrSNp@oi;x*anAw|Sc53WfqV_krfuxSURgl zs^1Z3A)Gb_A(wRWqVrX&lr9H>S?Y@<Z{({?yK>CH;^AX$2v>n zX4FCWmHX942A-6k-{QR09Ig})qU_xLh9S>suQZ-6g0)$>+zqcb*dGPbfUdp{m?^aEKb^1bl1S`{G+u zssX#r&o>+Tl8~$CD5NRsX*%lR@IyBzZ1%NDBl3w(^R35XosGDc?%AEYt|y3-_CrEeSW)&xt zw)^B7ja!T#IPvuKgDb{NDO$YUH6--s`0&*X$pEr;4?=*HmM6Crt7I)->N~Pf?|+FV z4|sTonPAadP+EV*Iro5|n3xyZbYXLusS}bLS3Pt=MEh?T8v;=>_1Yu4?Aai<>W*a_ zS3DT3mk6)W44|s)N?CZYnUVTIp8M2Y)rv-|;$0_X>yAIt#BRF=UVfMNQT{%R76tIM@PSXuj_Z+uK!@WZMWCh`y)mfVFBh_Dci`JcO7uh zk=kAGfKwwc)%1FNxjgE#Kj1`u(cc$;)FDPe05#TUzbL?*HNHn`j1nF4f0V|(Jd66` zy>jE+9$ra1)<5p(!g57Ap4bWtdYYr0=XB?#U8i}IrR_Tx;ir`e@}7{MdAX=LG>Yr5(oH) zeftnj&_i`Dd~Z3d3unp(G@R$0{;_;aQ7q2Cih%f$qr}D zKZR`uh zESC!rnweo`2=X$5X=e>oXZOhkh0Bhni7QU|tNm`Aj;of<_9SXJdrTj?(K4(M8Q*$M zJ!tz3>&m$PJcvqOjN50MRmM6N@WGX+`P?fxqG{2#6059pBo;;2DB*qgoGl1~S62AR z8r91O0&UFpm_)AL(9g+flg(2Seami-0qj7)2eW$uys(;F)K+$jp;n2-Sc9`Hm;VT{ z4n^vwiDF4tc)n`sgKUuZPAK2%#X8ib`dW)>#ZVhjWrf{*JnF+GoA&GWdXiW@8mf>2 z+h1v^q}(3kenS`zg@~o_(trSwFMh5**WSyG>Yst3R2xH%))V;)Ik|Ro+5baeGoy)M zQAyO;H>^R){Bt3fE4D+6EQIwWJ3E7SFr7*J8l&DLwEN^<&$BzaS%(?kl`vk?Jx0pB zI=)8=`VrDffvfUoQk)YzWUMJJ&SU27-#foCtG_GGe+##TB>KtK5r$Alada>4(Ahn5 zx&U3(6~V7Ne7|`3=-7BrfMK$l8kP&U8rRP^w)4dZ{MHYe6AEo6S2j(IjT&qvp4C~M zlb3HIrF*T0d6)id?vFy~3D&}Gp!M>*elQfPn`5T(RPG0Z&L2e0Zi=@vy(NjTcAh$G zJPZ;`9HUjwegsQ{*;0p=Sb2HCvd5bVU6m69g>jkT`m1wKE)m?KYmcv}==MB5WOcXf zu=Wnbl}^)D z$b8YLaD;i7G32r2d(1i`FYVJ(#3@eLdaZ#xo#>oWq+zlz1OGBYUhhWe96$9v{a7a@ z`J`Pq7sJICm%cbCpmd&#|NHltvphF09oK*7+uW$gC0Wj&B|VEq~tM`cbYr30`v^t#-EKxJ$ZYs-rMry|MI2`~*%57Q_@O6m{kL$;Xt41o=V<;#ijr|S zbQA<^4rr{>9Ih;_W6AP!wW4YJ$RUis-x|~CiGRFw*V>{kwq*aeMUyrNYvM)WZc=2h z2UD5^}dpq+{7aWeD7w=lI{xH4-v$oF2Qhrst%3uHT zE6x6I+9AF#D;i3=3Tn?j9sP2SIFevo3?&`fChHLbas=K#d;DohK=nM4y|huy_%~Oy z9?f@}>}auqSwBizXR1O>w&cw?kGDY3`A=?~BSk0ZaUOd&is8|cPl&p*8#+w`qWvI% zXLG5MK*xz64#ol@d2)>6m@>Qb#){G(mJkm~;-aJvN*IL*8lvTVya7qRua>``pG{#( zuY^jM6;)DiA?T_?TLt^=m_Zj6$6OJ?HkJ{gwV9^e_m z#$=k5c&DO*fl}y5HgQ>8BM0;e5MzZZ{uL7IW2^X59At_AKP=_}0b~K;4~lY?Ah9jL zJfY0>1WnIHs9bXPU=Q242@3=vkHC#m{(>IMm` z{VWdcB*}{l3c^$c{ulG^RC}%{?YIOlx}ci#MebdRWmFrlxeW(u`=9h?2!~w!CRD8` zo3Ag+0*UL?BKtpSXns@rsHkjm9DcV$=3$4@aEWYOhgudDT37I*Wm(hbyYv$KAz37d zCzn|$YegtZ#Tv-^@C-RBEQA7$O;%63T`9c`$}N%qFd!vN!|9AhXRXU_)`}j42<)5Y zj~I}V{3f%YogIKv^_@2TaZ#JV*03^Asj(3RD3F7lmS4VE27Xh8y#r+#;5$4m&wD66 zFD5N6xi#%|YTh!~XF}Qc+CiN}Q?GH*6!K7%npRZwP&!Oi$`w)G>oA(&3mO-(Tq9YY z@$5tsrCX<@JKUu->c12rbF;t7u%1hnxPKscA}mA2uTEqvw2-@+l*1(rnX`TMQJz% zBupHi9zK8s06z*Ohz(U68ZjF-ct3UUdnr7KZeT?PTO7dqQJ_U0nsRJhEZ5ewUYU>W zAvg%OFf@7+6NaP$;#>_$BTf7ZoFH79#6E~%nkq&CXezEh-$Q#uLoZcv@*PmLCo0>Y z;$cd4Mb$aqDsxwG$?AWXyzO~h^QbEy8@$++&a_c8zUBGd@Ho0f1OGy!t~?I@-X}TL z0Yn88sDS*Arv%s6mka4P^7dy(`@QfM>2huvbd6)beDer0+{JrAuKq+w!#Md*iU1(S zmiJZ!tEw)ifDB=VqRk%F%dU4C?^!5A2roQGQ{8>J!LMibEtfgF5Ay0R?@s2tAmH33 zh#*58q7$QOfTIK4gQQeg-%to9JE-Q7kNI7E!{}@P$zRvry7;02nP1jyr3)?+X>Jfy zZY1@7lL&(7b2&D{6eigF(vJsdw#NP818F-Ux5`NbAkSuxt~uuAFQHTvk*(CV zg;^nj7`z}>2tRyGwS~j%chle(fw;SGx6ZfAGb$d~^=A-QF&GZmuJ9nh$ z2~~uNi@O=ILtkmCN^*I(Es|MGJF}bs9-9JCpdrl8*lnHsC4|+G2GOKc4Gbk}DEQD2 zb@2(kADNsWS%z^2@WI%863QSQZX|U6sR!_~pgJ|ZaRe{5< zUAo_(OjqJ&44upr;HPOxB&Q;D){G#+>|_un&~Xn4%qjH>8Gxl z{BEJsR(CY+Mna7xsk$b~XVf&S|D(P=NwXwoiBPj{M1%>#GrA4H1a5$h5#g|SZUW)A z%Dc2uiQo7k^LR-KOK#-7*?l3#V2l4wUurd1o68X=fKx7=EItd){Lj|jkJ?jiL}Z?_ zbbMG{=^^Y#3pP$Fn>!^j7o&NSKCv97uQxlo^-i%1XK63w`81Xde7ReU^JNarG^JDcyZ#!J8R&ngmn#Q-bs zvXM)f3hS9aB@0B#64rL8f73Fb{-<$#?gVM?q>;|9#At1b2o7>WQlNBBqcW|0Zxpha zuVPgrVls=MA{Xqsh_M^X&`DewMbK zb|;UUzuP~a(^)56HE~&d)Rds`(n3T>*pU_hUCJ2J#N({^=f4^Hzv47|Gp5)tp1p(rg(m( z+^@=|9%ti#t35k)_9qkk7b;JWUr@}(Tm4A5YKnY`lblACUn*G1p%jbF8~aK5(N z*AH2;#fZ9}IZJ2@(YCKzixrdS+L&;R>b!CUv0YSq6nF`=l4&dGddK1 zyP*N$g6p>~m~|@mcFZosVr6c>a=xt)*qpFJjt`Z`ev$h@g;Ag1_V2wT1?@6@btm$- z8|T~|YaD#sE!~#_XB*eQ4Y+1Q6zL|*L=PPH&A9vO`f*rTJEOO!=C_*_4thNBa+*w= z*zX>xmAlOu_cCO9n*(}sX+00jZ`Eh?-pJ^)wC$bBz2DnQdZS}6xdI#vm6;rn^$8W= z=whZa9_}^w%~tjPe04kS)$M&3fuK7sY@Qis#q^XZbx6$y;B41dULJQ(^))L6jkG<0 zWDZHm1PKNm5~{v&E90TSAGYZqrmn1M(5K<4g(0`{6L+T)EISWba?Z$2>Yl!C z$%OUe&;=Cen;_OZuD}(-9OeqRAHdjDJGe_Pgj&8Z?VGRaexY7J>z`pH2}pk;iSNFA zDThN(FUf6FJo%^S3KS7mtw{|@w2m^)c~y}S^w!@zwXf>!d)cQKn38X3yjFqNwogGG zweqZ5q*}rCJ90~Ss=zczZi@4<90VdMBDcy!H|W-$v6e#{0Pyzn5uSpR8Hkb*0U<1i%%tQ7_MbczozIS)Z6^8DnjGXH3`&k;HjAFQ00vCjIbIM#Y< zmol}xIjt6mMZDZAtZyS^-BZB30%BhS0z_fLp8ztiCLX@0vdw znAH3Au6%q_YhLN$#Dp=$L!X2qMLl9t9mCFH-M47U+kb8&1Pm(yrVD|Y^GuOaYxEMS zT)8WH*5Y`}8@lL^2#JtWswFR+UHMu|PdOyo7VFW|NcO5{zrK5v>he=`K$JTZeo!d{ z>)~ekr91Rxpg5QdfcWuxw&;=1D+8cb_xfBX{LkGPqR>iGk#*w=uG#hMhlc0sAFGq| z_+w7|FH!1~9$9fDonveEEp5LlZmHW=7*NTl*ctzDbZRXBL1|S5g#P?&jbsUidgMAc zjfTj54BCU_q9hg*2VjTdfp--tQ51XQYHlc9vb-S&W16@+|Nc^Fkv|GJ(vKCgQzC2~ zVdgx!JWY2~S`fYVK6W>}cP-0r#@$J3{pbTLcif24J5Jr8;J)pVD&+ouB1nuWCr-Cy zRc%A`hz3} zX)7QuiaX$>eC6zw*tQtLSILM$DeBt;( zi*ODb%sU%@2nwlHCKBcH(#FBvepS^FyHw)4BJ-K(?-(s7=DnL7Jvm&y#f#{vfB<>+ z-dq_3?METO06{$ibEZnI*OPts{v01?rLB8R9k}<>gd)|M(ebtx^H^_4o{R(7R{!2DG(*|Q%y20>@O= zK-5!~19lxW(@Kh8sC-ryEPDe{Ud7V9ws4qn<~CuK#3VHw42KZ4@)L!_%P~-JDBYa* z^jDgoQ7k^E4Ewb^O7tKiW(kOg zLvuOEbfhhxQ)#|Pj+#VeUo2D_$pICzP$%e0d{~XW2A;hL5l*9&T*y?JG)ty-biBJX zAb9aU<@-VNtLXZ=-%pQ*7ZV3HJdMPr~K% zwqy4y9mH7w(ZmZ!8-B7!Er;Fdip+z03RIBJr=^RTZTxQgC8J!VvAXgM2Pe_TE}8vT zicjDMU^>W8x*Jm^!&(k!ppnnj7L#zmcAmIV+5p04i~k?D{(OE9!g`xIQ)DyT7Hr4} zD1Jh3H=_!#t|G0zO?j%%j6)RXpq997NubTBRgy~U$2+@XqQhk017LqxHgZKJ%Ir18 zh7N2|!?5}0g-ek400)wSMYh>L$dli*gS`q{3AfJM$xBEwhNa{yr>_hh`B9xAQjWJ* zlA;18o1q2YEnK0#eu(q=-@6Ib?;O8W+n7}ZLchI-CcdMNh5ge9*k zQwU-;R<;08leJ9DP1;uGDJ~({=Jn8xSQ7|pEC*%G2BKNXAySct)K&%rRJSOMfVGYk zThkExv3tF5CtTA;doNw4PzDJp@W8cC3j z%|*q}PGis1$!}H;!~H0GkIuCzqP@BYP{X+MKSAvHx4-NpYLbweX^QAUj&5A#@&5al z2L-a4z>3c9b~|@fu0i(sMfnYa__17&4Pn$09ZKW#;)1p2*!)4nC4ZK(VH(p$w1tH* zn_(*}qz(VA&{s9%ogF*a5zIksj_<}(xEJTFW!(}?*Unac7?*+sVZHpHFTCu2xuXN? zsEOt*y=-CTSyFkXss&UykIz%41qTmWgdDP1-8ga%Cqyf}E7z1tgYXM&CS}x$Jh(CP z*n)%nR$2GVgb9{&bf^zq>LQ~@j(oX(49FUyp^R(vFtvIUllUqT;Hr$HY4OJ(H+Z-lF7%ui&U=xPp5 z7*3@_#^+$t<;LfeT!cVS;$^GX@=Z|KM3Ua=xXnPOhS8LHS zCGb6pg49z#(PsV=ce!JVjRCXHVZ0DdsxfUvA6f+g?`3Rn@rDm;ma=yasiU4?>J zr@CtU=;MsU4^YuiTRb9-D)JJ1TMs?W2$j|o7iECVz}B;D^m72J^AW&M1>P|+QCx7c zgn*SE&`ia&1I8za0ZrvHoE_ngA2dZmwkiQEOLWtigZhYocu3oCfHy&n0*EMAMyN7X zI`+u1cjTO(Y5|sxK8KVJ@mM_P4#!<4`X~d+a~7{BqMtLtspTMm0YrYq)}~5`w4&yT>Sro%;o7aLm*5D4|Myh|3A=8Pf6&+arD+e;NBitz?u!wUy@;mqKI2y zZzIJkOUMo8|BSc$&1jzS_Nz{SP1i3N%P&HnJ9WUd6pw@nAI>QY{Fx{q!-epqk!E6U zTT-@0H_so))|JfJ-x6<>mSftTL)p#2se)!Bk?Ob8;z5KB7Almg;tYv>D3s46KoDDe zJn7Aw49D-De5o2Wx<8vf}2R!{UxB;UCg|s2^w;Gbx`H#fV#qqaN<;CNR*k!2h|OtAW{$F zb4l4;3EZ6wnIvM?ScsF4z^0|g+C)HNxAa13Ti zAbB!K40jIW>H3jZtb08f6rcaehjv)0PTsAOY4t)WMTrhz*>pa@RCYdMQnPS%H~R5ol#uOmcCgj z=-!$Il$-}EaazLhyEBEz4G(S| zAj1-gGJlx}Ok!}Kda-gqo%({6bT}}0r#SnLuponffQVXSIQ_%%8?j2|V?>ky2#4+a z1BcEa$|`VcxEfb?iB}~Yc#@i~Xl$)y!NuGd?`#HXaVLP&!A&mTCK#89zi15<>Bwa z!11O!=j#=xt}95_2`@D^u_3m4{O^FPw0kWlhNSD(AR&Z+Mth&p0JI~^LwL$x{6_&e z2{uc`l$=8F;EDTA`dS0+`Xa47RSx5>Lny66Q=o--xqn1{TdFu8B}0q>{&oG96uDeq zNd6WX^9k3uV_0w)i6OFqYfSVF7Q~x;)rwOUOGG9Sk!eI^0^^1(jS4OS6^Pt=p?7O1 zptXAp{j>FYZED*e@iZ0A{(lD`53gKz$}XPgT)!oKqtNcgUFljE#kRc>DrWeJiFAS4 zRSiLFXPa% zosEwvh`cB4VK!C!j%lU#LBdW*?gyD4N#vD3VI8;)!!ONuSPIRng;)5Ycb`k>R;jyw z)%0Nqe)q&I5&3tVA{NiJwz&A@-4MPOP?7f&^7*l_;1=(kuG_h>3jr+ z#?uS*$MGL)kVIxJ2*9}@_(yY z_II!Gc4&^=LFaJsrp!~t`>;hojw2PM&jJL9V0%i5dZ>>a&H6nXjD0CJ`Hqbp4~Pl} ztDWx@`wo(2##ddxuk*CUme}`5rVYpFd-|&HSzPqA%Y&EuYWE3s+f;S$U%EU6)DcQ8 zLs}pMILxXZ@?-_^#^oZd>rhM|NQNzTrXjd?XC&0(kru`IzWe%DAwC`*=n6RC zI+r=n>s2DjLLgCW8HpkIjf_6TGd_uf&1r*s8hwM>i;cv%k+@j>+#8RB|3pUKch6n# zzR(+Kso%r9A^5W@Y&U=&B%(Grm@YDuZ$^l;!@rS;spi5&5<%`9z9xc?K9FB^zgNa{ z*p=3gp~CwB^!X`F9UD@<@Hk)~S!MiK@A_jLx0l)UVBl%7z>YwwW`tqy@KZ8m@+osw z@`1D7gL|j?nemlJ)+Y4zfj9enH+ghw-ZLJQc!vmi?=r4~6KWY~vt{MJ`gC)OAF8i+ za+mq+=LY9z;X`#2NLCL>XOBM*y`;l+qlKnvWQf$Bn38gnt0hC{285+3&?;VedJ@`b ztic@%HE?^r-}1R0HW|m2>9l9NY~o&2oj^QBFAzrSd; zUiYi9+BM{r&pq<}B?9Z5=cf$LU0|c%Z8-wU;LBmP$2MlE4-i(UncbG+&!Up&;|_t{ z!3tX$z!q=aCNl*jiCh&Dr62$fCW;kzhB)JJVa9o4=AflW3Xe|uE2-qv6qh}aFYx4S zRhNo}*;I3rMG}y^)#PmKcw5xBM=M~bmn4-LojY4x{(Pk>*7Vg5q9Tp)Q`B; zw#c+qIg)BcqpE;C2?lbGjByBn?8gqC=rXeybEDl0UC5-tAlJY4J$P#Y+{E4)jXTu# z>H7P?oIPW~YOMN<%&g~lx7q87pxB$unu2lFg91!Iqwi5vQrqKSx*K2lu3c82=i!OJ z`e$V!qxS`o6p+}_C5=pF0i{?>;hRsv@qvG5;=fJVy|lperSiy_I*OQR{1B(Kx;zm= z(NA6qe7Fq=>aT!Md5_|3k2s^NB$c6B*S`0k~b3rnEu&dt|RIBBQ-F}ERCFTsnrrcAD5;sYB+@Kz=AfqL3u zd(Vn^I5DF`}gL^MSd{0OQmhIWKBM}~&>W6rhG*{RDiW6Ck zT?pNga6JU)#DZol3=TpS_>8=T?!-#ltm5PKKmwf zYlF+q*n-q-;n%ao3a_qBVqz#WkQ)B+SlOr;l+TGUem9>rbS@165JbM2Cx;=p*?VJV zV}FO#JQ)%d3@Dze^Pu&+u3yq$OvjLB(uFzI2;=gixA`i)cG>@}<~_Fuk=WY@F*|1I)Xg&Ei_Hj)eb}{s zU;5r?w-R&Hj{^!1w}hv*FbZD<&Ay85fhBZjHItxk%Heb+*M{fvPU3Czd9A^FJJxQ& zXri0MBZQQvDeXPa5*G^JT1J51j>= zepAc#fT)L8i(VKM#t+CZDN95-!i8{NHzQg*!{Erp&CARB!w_VlW)kzaME-%I3LK%U z(r9xYBcuUhrBGI+dyhI>I8eVnd2NN?AJiu;@f6`$B>%WNE-xaN_oI|^S2kcfdb&dC zidD@IyP^CpQG+(gB$2%F7$ZLh`|=YxBW))_BF9iC>#2l%riDgUSYP%y%4{+se-6{dZbSUtlQTM*te0Hw(#mS1r%vDczP$)VyY9X-ItM zn0KrEqRLFbKKwg|XOZbgW@%9)WM=NH966KdWGHIK5xf@pWJ@atI-{gvXf8sY+?jvR>}6}7yi3{^(c#U( z?~aYg?6LQ#f$a*$0G zWsJ%nh-~%rIAoNnUEq;=$Ez?bc;|&zfWym_*-}U0yc`1{#}l`XbjLE)g)Pb9mtjR+E!fRgc!!b ziqZ{t+ZjpA?4sm<`pspe1+sFH8$6u^MeCO!G+kzJ!{w>Cy8I8ylRXEjow%z?MgEf- z2)=PRaYgpTwgwDy=^akBNY00=Ef$5JQr<(xE6zt%AJs`#R22;17F_dKh*m~>EmVfC z-+YM9*yz+B0#!$=b&z11LlH597n2t5bwMop)C$$I@k&U^YN{e!*^^93bQJU zUOKB#l(t-;JK25X0^+~4r*u>5KqZc*2a51QK&cQxJt>6zoKN)QZ(fuBeP2hFuUWVX zr98-!by>jEWlpe{!o!7xeXk{rk`5j(8#;%eBtj%txqj^w8?mE_*(T`}(T`&XtQzzi zcD6o<+{M|+^fTd(5jk=jtV)5I!M!RzpRH^)KMW9n74*V_(F*Z&BnaRatHh?%-G&0r zC+{0J=$x?W3HfnXJv;Nxu+p1ArS`Lq*VU&B4t)A_RW#1t{*54;e}>md{&{M|)J@6Y zk&QTpXaMj+5eg+t5D!X(9-Vu4UbOZ=PyRdbCrL%IFRMzHblQbvOOn1KGt8a>piF;E zonMh0I<#eEe?Ed6NInlk5zh|G@r|n!^=0iH&a#+XeqOnUvSnX1#uHD2E2LfZ9qzg+ z=vtg{^Os6c0I#{7@YymMtZW&rPuKf9CRS>o3T!B1@{z)pkhEd_41b-clt&<53c8w2 zXin#Z!II-h2K{Lhr}oB%WKNCM3V03DutBv)c6UEmsD+ju&H8?2Sw%gH*i8M976o(o zBqX9eNR2AQD*S6fN@|xt)M#9wN^;3MdH`(R4uuHu2EvTz_Po9+EVW9iUBwiZ8B4sj zTc8BTZy`>$bQFhW4j5KB37L98l>%7L5pbe&My0T6i$v}BmsaX+;tvUT_%mBP|aFwHV&~mjw;3(!yvq;LJXRpRkl=*qEhh z_?}9%*()!siMC%Kc=0S&G;ysp-?`LZ zNuqo}?S)j9t=tqdSH_P4F}T_4rb3{iV-cABee6K9G`e0FNhm?E z-75i51g$uF@y1^ze?kbq0{W0;8)5o25;*mgZfdbrybeVkRfk76VFX)iI) z;zJ-mp4g=-+nKF(QxS8ra!53jEQqMHc&~Zb^r;1&TjQg5nLfyWPhO9TJmX8U@Z|_Q zF{USS8Ic(@}N!$1aZGq@AP1SJ>8t+3E)+sDKCN70?pFfT6% zut`3yEeHahO-zE&|LcNsRTT*LJ7wGW#`zQ*mHtOP*v(BW&r9*Jx;> zd(npr&xednfawRD@^=7KD-%v2#~18ROi{hGIZ!JSEC3i@aRuK`-Ma~j7;)aGzwA46 z%leqWV;eJ}<=jQ>G(HBffv12L2fi5EPi9MO#TfB1X-CM3SBiC+N&>vcI%6)liDx|U z0YAZTMpGz&hpfYhPyqXVBR><8qkkLtDcAUF{sJ!Y)( za-awnd-D(`lf6zU-k*mg9vAVkz>E54%pq22HQz1F#mNB1k0JU-w&r8X0eb`5Wg*_c z*-Wwd=QJ#{6zPWm4Bk${x1P#??X1=e?*Zk@g4r=ja^_j1eXI6IPdvK>2Lw8I7xfJ$ zt{#p6oo*g*+bv52w=m6hnO!l1F4V_?Omi(FX86nA@H5CQ)on|OfA3H4B^7W*fSN<; z4oVNxZr=tz$L`(F((_-v7x<tM#TZR?k0y0!SiI!09Y! z0%$Dpb2l4B1bq)Jek;Q|PX&FqwN_tODY&g2Qs1t5k#kD zs$`!QLQOgHDa+pXU68=wQ6{xW4*A?ZVqOLpD$NC598}uI+e}3dZm$l^EgMOQ(BH0| zRo5HPZa_w^532X&*XHbRWZdTD%P9x#4XOkUG6x%^hWY$x`?oo^dS!BIS|WrLz8AkQ z^MbEfCxQ9Pf}^p6>f2?eviD70hfaqMKE{gR1xx8y7$$8)>RPC6E@~)7)S|kVm||Jz zIA}6F>?x@ECUG$Ll|-cH-51|QT~>z9o9ltn`IMowE=S3!%Ap5J_I_(4B)ZKMZur0u zpMRkooRym_iE!!G-TO`o*;e6~6v%4@AM`lyxNM`JZcoVIBSwsv(`|MB^l{Q2xp>K0 z72bA_xTq>^76l!hj!6}mn?zb$$xEH5MRtR4|>>E(2# z&8e!-Nz>VGxW%k+__0Zh?X^Cqe3kpEf=^`2hOQbqH+G3(nN-{y>?8}ZFGx#tY_M>g z+8m~qF_ssD%=x#k;fSpBg~fd)>E(?UPpeX#TgseS;aWG^v^(rvdd3|WFFx&7xqsj5 z9DEF(4rmvG5l(tzJ#-ho6>SGL;$%Ku1$Z(L?>bs0R^xT6H`A5ZP7u%e$ zGXM%Fd_Qxdo34cQc6M|H{uDeDgK;FhoxU1AL61Co8egs-b1^AmTt;qM#>mE1OIGPU zN7l_lEp_5R!)Rl*;7RD@mo9gi1dqDX>AJSZawF3qh^_8}#~P^TjVs98aiWT?t0-$^^5D|cq4?G#C@-wIOEKy&!Y_u)_{5%POc~QIlS$)@`#-Qo4h!?~WSKrg# z#ur`?v}fkZ%K5uNrWA-VgLdG~@K-ykEdUAA_R&HD=>Ac{KulV@qdLKji5*od$y^LLIyi&yg6bm@G<0kQbK)yXcs5~cl#~a2n z`#uhY-kA+n_0hrt{CM|z!(OM)0EjbtRBraR9mcgK??}u2UtTY~M%thIy}Z?zk06Nq zjqQQV=Y100>Hs4z`4lryX|MEE-?ED6+5XQZB zPL-^A;VJ5W!#dp?t~$m}0k%f71)l>hx!KR9v{&45{U^H6{rPceqyOa^@9uUd=qlA@ z3u2lWkZ~G9Z>L(=yA;d>rcMFD4}3GFJ=eRaGOJWHo@$@JKudMaYJ`N8Ln2PkK4|o7 zoUsP4(vtuNa+>PAZlsc2!`{HV2d{ck zz2}@mmj4DSoerrIq)tXctkZI={GcHd0RnR~TWua*DuIDh)Vjt+6v2Coeh|7Eq=%ei zB)VdVRN`DnyV2{OM%Vvgw`^FV-rc2uTvI=jg&N-r!(+-s#2F;C`19*<_nQq9mwx|! z!@l4cZ0I8JlJI`wC0Cof)ku1o9isHU*E!hNsm2S{!uxXh!ic~&TRqjDYLK*)TH^)f zBFh+|soJ5L(jcs#kCtAL7R$>;JIEMMsXTxOv?O92$%zjFJD?j6M56E&@Hg)xUjSXv zk6zin?;X2UFxQS8qw?M)&@JHPDfaF)p(N7(+$;O|tL=S_j_MOpg^Ls{+6RUQq}cOe zul<$pQWeyE?BSrFsy^170Dwp})H_l$kqut;7r=@@soBT-7cz9H&M*|L8x-<62VhD~ ztpcAXvdt|+LAWCsFa4$bvYmIbkE{7)R_xJCIP;nEG=4uz&?+EBffR_Zy11R&mHT+c z>WGx%kw}@Cj7R=g?*O9OZ!=!5W*YYnE%{#Dj4rS|2p%a6WoVrIrM=2`cH z%0XIV^VF+eBCDaocxp>UZ1u#)6A5J|z^5=&oZi?%1J}H5(mw?ah>q|<+0pe5YmV{G zcQVYy{b<)y_>Kh^&TJsUqH{EyJ%zEH(3J8DydQ&**nz|DV;eu>I4l#KcO;OP2^W2SguX{cG@-_dm| zpKGX1djE}Au_x`=PIaE#)A}l@Dj#xL|Jn^U*tQYjF=`D&FhOONEB>#FNs+M=x z_AKF?5E4ART6p>S=;R0Kw%2dv zp9vm$Ya{>q_uZJYaK8v6nm;0ES4RXIz0iDTw#A+gdn;-E@2rwlSZE|9??jlE-WqRF z7?q#Bp0)D@4mlrkxYRfx)FfcXfvTUjGZg$aXIj5HoW(e694OvP&QTndeo&b{`#^ zZ$U+{9#sSj;1v)_KkJUS4l3Zl`fDJ~20ksX7EWj$nJlPLnVil-l*cxkqAwFKXn z3I?isYH#wS-r%N6wYcdVJ&!h|=cn4|reW zaJWHfk3zIob2dKn&M;c|=mNk+_9Jr8)KCnIs_&OQp&DbYx7L_RF^1-AtGb zDOX>PK|oyY0MY83CUZFti@(Z9E>4boRPEk08T<2C;_pDsX=^sv{zV!+p=|i!8>`*l z?0Zxz`8}TyZD1le+t81W=1>J0K?%NIT9mg>BtRg_VQcCi)%>im*MA?K`7?${e}bVp zIPq!qd%6UN&IRk4g?w$2Ctw^QV?2Zak(fL*3{zuxZ10kCQ$LgM?P*Oqa*$E%?v+934`L|8>{ zjST{UB`K2ON6=5;;>sZmKcVL;)FzYuf^#V+%Z1<^sZ;$Xa(u8$%0kjd|lbfTv zwa@Zz+Slb{{gFA7WPPnKhnXWv%({c^()8!et${;Duea}Pyu5MjTH#-5ll6r=>A%sN zS4d{U(3 z$R6(#VxI*oQQtU_k%`%enXeK=J{{Mtsnq#|+1DqLuG7m<{)kH?PkFDzp*(m9ovlb= z35CIw#~AXGayY#~J`wV;J0Q=3U(4K{pT%Y=R~j;b@QbY+8dhA~=QUYdAv-v#(U&;vV&p43gn4V6bd-~{ z*fFY*BP+)T^E&xDcL~f@1~6!Us*Qhx`VgF-fg7am$%oQ%1^o;Ifas#L z-c}^%%MnbOU~CqC2n^&?qn^N`^tpM8(*7T1(2*CY2-TF&k#J>(R(+$-jW)Jo))O*t zSsc$;s!4y;%$5`@HyM;UMlIo?R!BX}C;@P~+K&!Ig#R;}&4sfB(ixFR1d(p>s5W0E z0`H#OGpagyhnSKM0KL&qL>99<=u*w0<0XEH2OX>CiQ~qaL1=#8)j^3tMy}#3MNG!3 z?JFkLV|IY^%R?Ltv>vfiI6i}9iBW+Bl>&%HahBoW*?-lM(O}v%r|2a@CHO!ZI{OOU z=3d$4z@}{$wq&#GuGxXBysr`D2_% z(8{LPww=RKI!*v6MYwj2{R_%ZjuR$Uh1CHv5lbly`bGFw*ZuPh3baC&T!$s*IRvkr zz>QG>i&3Z22ueA$^Zg!T#xC#o_U4H-Ga6r-n6<2z?&XCWSD~VbwOAxrW`{BA)6|hG z%ORTFO1j1xhEd@W;S^^ssQ+rT;_HoyRl%z<&V$?68B`hPj!UBUkQY z&gMQtB_TBTnWp5fHus&Qm|P=DqNYO>eK$9$oJFWPDyf82I{o(h{r=w{du)%#=dr!t zulMsMXke%&weD^>l*B-V%}(UL!WxM_l1HnKUXp9jZ&GWU9d?QzGBbH=<< z7cVyKLW+ZfSV`^BLE-S~R`$5vVY$5FHWT-jCNd0qBWu_)QVJn{MVH;c$_y^_OF0Zz zyiXU{-x7Apsp_o%`oZh$2%@|z#Y;FXWjGiEMGm2?9ARlhXQOUE=XB@HMS zN@SNS)!(aAKYci!)hHE18cz#e?nt(mApg+D(GhX-qH8?+^hG^F6rk`a*Qglj>E8cunfG3eOom=R*oO3a z67rm1=f0r;wAAk7(-|rmKK-Z`RGfPpsqI-#*hHfa#}>u1uOfk2%QX8L-`HHru4ZKn>5DwMl2_u@AqMp|5Ec$=K zXEtqxWNHe|;~E9$!yWs2+KUGEHUkxBLNio9Z6ti5P6x{pT?{^TWDgSrz+J9a1b;s{;JY<0;QX2)!q>Tix%F zLotn5s7<)}iOlCRZwWiyemt~|Df^uMfDTI9XyYee*;4$Bc@K}(OHQ=HxTcP>0END9kloNXW+6fzwch-W75ixy7y+75%d%K-8a}xO4 zG&kZk3~oSPNjyO$AYWE5#51$W1tSPl^`WSq6Q)FagV4*r~Q!sLmK)5Z2E_ z@qW1>YJQ!xk@LzsLLo!FI0_5&V>zQ5N~7RVz;(w4>&cD`2Bc_x2V{EVE>GW-of1m6 z65OppP-s$nYtIRv=;n#m66|9!8OKZ(`sAyfqrHwNM_6~r0*d5f@0b>tBJmg0GKi{wVBq<^P@7NdBWnzcBbAZ>6{R1^S zCCOthOfQ-QDtC;J4BCA9d{%f%VnOroh(xp?A-A;9)*;CY@bK{Ut;xKyhHg}{vh6=u zL4xAKU10^jS)66*{)3h{-XPM(YN7DS2RULc8SY{=4H8~i6;w`p%8hP#W*JC)hpm5F zLI(~%>xcKoLVulXP$?-@<$I=;wvZ7{gBR1lQg-mmd3$je#0*M3t-qp5X4Q40T&n?>i2scBPWqrUQ4K_wwY#Y1{r1LZE z!HsN{Rmg!(dMG2~h+BY?q5M;6m3!+}_#>dEpg%6(d!`mo)ixH z?!3WOPRv0q<#Y~zZS#ukniUfq*2U)tvO;k6%j=A6$g{~G?WLXUz#0tzk2`@I0f~7? z0^M&EV0A~2+8+-EWqMVH%C4-ibNR5!ILAY?1#F+lYdECLiCXE5h#_%YD0h#NA?OP( zB_FQSS&Xoo$nMHQ#D#|F9L}jeDCIF?hk%x9yg<@`Ch|MpuiMYzuSu-_{RLBR?k|q0 zD2|c<6rxWBnkM4Q=992gN=!GqXD!0ug~Nw#vsUF3E%BRR3vQoIoXC47$b{ARx@!vE z0ZS=_kf^;9?jTu4uVjC~TLarWa{&$dY1a{uq<3^}W|)SVf9qv&h`h93%$AbEMfcJD6^9>Hc7f~qX(@=c5;8_=Mp zm7E3$NwvqZ=7hU*o0Hf>zdZO<*i641K1HjGb2L5g;ZbnpuqLSb5?jU!G;FA$1sf@A zuN>60T+48V-2|%S3#m2RmAyTmuqCiNW4YK3 zAE$r@13CWHW1p#HEVR#zWGz_?@b4`=drZuR_XC7kE7F+t-EC{5;xv&?^3&iD4>sGw z3$mYghn2H&|L{TnBpSK)N?K7U0z{MgWJQ{Wn5SCrXLAs(0E%pFzLOT3;S3G7GHXMHJIZLEcGOSj;TrvdCjoX(Ypqid5Rhz!g_w&RDzD3g0WAto3l3+q3+h;_u zvUn2_Y+r5W#~d!jD`{7IJk5-TpR;MqT>CWQ*Z*=5_dI~wV~~kBUn6+IbF~qLH1qT2 zAo+tb_@7Uj{9`?@q+Z!uiv}NOy%naSK{WXM=CJ`0Km!o_v0zKJeE zNB)|7rq-A=ORcxMvB`WPeO+OcVe{wDi+Fu0mQFVOkLPYcuQArzM1CNFFm@YtXH;WE zfNiHNNE2;NH(_(q)VyGSwuFMXh#a;H8woSy+o#3m*S>S)k0*E)?)sSQLIvO&?9$B- zF4T6F{7aAdshJ(vkCI;h{rlJqXnWq74}W%Nul6_~P1U*Xkrfy7V_-S}REk2_cpMr| z(7&TEKAuU*G3wbo^O)KJDEI!I7<*a=G*b=2if>wBAdjiM12%lk(FTth{ve0<{6iy` zS_1BWHMnrnWUpfVSLompiSy32pbTstFw+NFWgOER-Ik_>dA9(n3fXd~jb!|gR62jlp&SF)averFjx zfsN)UYqnwDXN;%Moz8i!WyhzXldqDF)b3+$40*KM{nd4lKI8Gj-9$^Wx^)Kr%M$KI zPCyKm(t+03XwwV#!Q-52AJ=EW-#pcaoV4cfdGBma#BGk)L7d_g?&=vo|7QEKeUCy9RJF~5fK2H@EJ?5tf(*n#87+Im7yJ z(H)PQ9!K`Fr`_|vM;!PT-tay0_9Ym}(%*7MjKEtR7##Yoi@XFhIZ66lTM37M+xT|Y zD=)Md@S&y`1dZm*^;9AHIm+1H2WHtJeRh8~eJob{%s11CGKx`GaS;{q$4)0CPTff? z`++`6#*Tf);{e|Phjee3BPwh`muHlp9&+IZ2G^%gRs6tMX8H!S#Y_B%bz>{;%vSLw zVv+#9M7F@6uV+%p0*dLuQ{t*_USrAx|EbNUZD35N&`r=LB4xu40d5<``{H8%BE^Y~cPVyjqo$Tu`Xc zrL%WDsLVQvs`5SPYwf7b&&xqci(Bt>uTR^>&g~?==3>5Xq@v`(W}9XhDG(lT4@3#`v#uq ztw9E>kj2%>=){kSM!Y^9cAFL(Tiwj=S{Ju`EE)VMBY(XexzcaGEa;r(0gQ3sI9tCGq3?I-Ne05d(YQO zk}Pmr%N|zDG4^_J_G_QmC*bB!ScmxUG)t2&_p8ny|J|pR4WV)jqWfZ##QXcY;5#;~ zGu^DKx^Xfz$O26;jub6ZmHF6ccnk_sB)7dW$xQt9NUnQu$^-=c4fCR1{~ft*Ox~SK z6~Br(Om%twV4npe9ly%%yVDGBHhuIc2}`G5nL`(4W&jmO({+}p*5x?mNHx?4KXbq_+WJ!?+XNzZVuw^kjE z^O{gWG~iUYo$;qCg{6oR!hBp#9}Qnq+I1$ZXhyb9PdSt{zNc{6FyVD%VLeAd#k0+~ zCr$MC-A{A(qUIk9Mv89QbRBQSwSFCE^@Umb%GKTh{_^@B*4_4|hM;1^NEK*NQ9`160V(T69>!cILjOZsMY zL!zD9uq%_uE{|<4bHyhsZ++nVc?nF>*JpFGO;WbKhe`$g0d0#sm0bWFvZ*s9DApXP zqS~r2d0mF!OQoCdf_KQ^m`(3Yn3MxTEnU0ZMyM8sy3#xqbs5%8SRZFILx z@kcD6yUy8X@}aRT6Zy&0{h88Lf8i;mu8d7PeDfuVKy$VQVyWb;M&os>3!08v&4_)i zo4qKbRJ~`$AG@b?%vBq2x$$Za&Jf9O$Fg15KlO`Pp%l%gtx%$EqiXzSIRp@Ru6|6{ zRla~mg9kf`l*@-pXli$@1MvSoeA;@Cbpj1@@26}|oHhxI^zwkhr#qG9VxxyGo$PAP ziM{`x=upIvt+-5_8&pN`&`5m?Ejq#Bhc0>Y>i)>^ZI!%1!7n7ZtwU*@>F90)Hnj6T zEay~{(%eYHaP$X=RAD>(NwW;30HWF%J0zJqKMbvT{f>}U|Nm*vl`aw--LPx&No!D3 zy87-^yhLEGYKPZ}@JH8H9V5LdV<)Bte!AV9CHq(HQFH@DhHNeUcOydd z-Vp2bI{u6X-5UEk)w)U^qd0vXxi2kTK8Hxr=0NkI-tY0Q;SS&z*E8j66C0Xk-%HAw zVd-gDtnvH0iZdh%P0)~!4n`yP2n2hS%B(-)HRKQ_olgv)q>K8iXw`WR8@&Mwcu@k9 zvKg=Nz*kXRR!GaMEkk3@4&C88WvtR$b5FiAbuLzYL8^o%j}Sqid{LQw#7yg zc;z^oR!H{oIl#39b9RjmQ{qj<$CrvcGgxT`5E|rv@6ToW;EKD4Z8z)zuqHuN!>Tu* zyr~LTq|gLd?0;SqMRe*#-bQg~cQoPgjZQ!vN@8OwhSS80$xxYb{15-5{jFFE?`SNDbewg6?&a0dzD(61l)xUa5|iB@~xK%TTrnKmu$l@vLHq z9HB||&t& zJbo4bCUN#H$rgMnO+@-N8?Nz3w-mBV1!-_WJWT*}kQF2sL*NL=5HhocAf|e3eo0ru ze%We3eP0Vg&2OSg`%+7y(B*KOixp-qGy(+6W~xq3m0b8FZ;s~$>L}d&Scet31f$n* zP)9mxb*1U<2Yadb;`D9a{HM?Ty3sYE9GP4;6dg;0v}*I8s)iUORC1EhgdA6d_5MBM z%0c|;U`6NN47)d58D_R>a@F5f(8jZ%PINIcTR9*A**anFQlc%)cqVzydni9=w^;F9aF}+khO?iOcjcr$oFh;+=>J3!$l(HyB!&!n zX&v?^WCVjbXpA#O62{0*7-QanBrFWk`W3Si=W+L z@iuO<3{UY}`W&D67VXZ_8OVi71njkG(QX6fvGm!G=Qu)HiuXQvf126T0(J#X{G3c+ z!*inO7++EN8d>x`!%ie}y!9rDiQRF?R>>>Qk1Z}E#xt^wZR#Q6OlNb2C%n96eNh0e zf+%jdAAKWD)P?KZYV^C0^l%FTi10xUQzA5IWsh<#BuAgMgx|;ur$tx8ja~<+W3tFE zF5l5b`dQnX@1$QmF*7Q6GLgeSDk7a?6M5hs#Xa;_=Ec9WE%<8`kf0|y4W@5>K=h7% zwWN(+t0Lfm98Nd=6PsO^p$@s=Wq)AXz!OWN2(CzEE2>qKF}_POe`ovn-6!=$d zvqirFVdqzM1f|Ij?p^;zw|0s5HdGra#OTCVKG&$xzir%Rp1%~YHaTDH0G-mf4;8Z5 zq=N{7_-#gxIY2-udxi3WaJ@!!gPNpE^{@}$Z@Ccfq0f=%7C*^azP&TTaD8sTLxx|vu_;PkL(w{xcX_FG<4|S*5&Mlx78+WWzU}&pA7r| za5Rv-CN~YokQfja0-=CIPysXUz*??Oi7pqBunLje@~gE$W8nwSB&YB|0@1atiA~Bt z&Ha}h};m9el#;Q+p(|E9L-JZmg6}psGkZFD*f8Rhca|oxGSP? z0L`Abc&Xq%k#}*UJh+94YJQCF;J&zZBJRsK43Yl?JA>dY)LUhHe*5x&sRD*JjSm9Vl{YVLqd42zZeL$~w%o}fE*w;pK*6{l;r+vC zfGal|fUTwpSb%_MAZBL_e@lSOpMX6n<$A$aT!Mo<>|USwYY3!l87N@hCCVew1ku$1 z399vy<_+TE+~XPJklHUn9pqol&wsI=UtYL@zJg6;YX7=+``4{gGECJ5MzL&lu|U(f zz)fw`?P5hVTQqq?tdty}vfS3&%vX$VuVDpIpLgF70=DCl*a9?bkH*wStaQCgTSCw$V82Sj8fHsTa4v#o=4OIM`4MY&1`H z(DIZEErSQE-eW$|=7*jijNL8zI+iZ#0rvG;vztuM!e5iFC1+=Bh%U(Ew?kmh_{_tZ zNf{-gSzNJ~nZ~T8rd7*5S>gKjJCMm%Kz6%c*pS92mIFLS;jUmT#$#l5K*$1u>?9PO z$L6^A-=v1hk;eFNF&(p@rti6`8z1gOu9h)qa2w`JaiHo+tZ%1CVSY8CUiLFa;fZM}k4jJ47SKuNq0vwr9 zfX9-P6(`@zIunPojdxcDud0MtX~xsrPSf~u-0|Zdr3~DOb`WqWNbXua%(E9_2E)HC z!GE6k&nuhQDy)9LRJ}(R|9%UkX|Tz# zY%wP=VGHX;LBu)ZPUwB%K`>YfNR!5&s3|wPguDZRlxv|1$Dq#!^b*OcWM;_Ybl-jj zWu}fFnb6s=jm+W#So#*OekvR+OVlxE95JsxBR)%)YS2S2r9&tL$!J@AO8_R7!WRlm zN-!mo`$VD%AWbsLgd@8eAUkwK^#H||3qo8Y$Zm6FcbNPI0Wygwy2da>qMqp^po|8D zq%m6_`L>4#(Svlk@D@ii!pQ2$nIb)>(&dZ7KrMnP96li?M4i{Tbf40{cmFgDJY;QC zc4V>O^ipybL}~e;2YvWF7a%OjJmZ+?5r|$0;B?6E$5)T$oQb>!Q=PX~?$1GW)XQ99 z^9f%^Ohl<=L7l?ZKpu3SO^ZrfLGFnlp_j;lI7?Ceq24%`Cmy6fXJokY2jTa~7=26l z5g(Y1%gD6LhiTUteYbgB1FIMEf+7N=S8_{@H?bRQ<3Qe$_Vo?o>rC7-fuxd#n6s2_ z0npLSaywj*Ho`uU3kl?kFhJ6ipaZK*GG-k3rWNLPfjdRynDtg76JoisBF&|!G2XAu z)=Lkj{r1p-t09RccYVvJ#D$LZu3AdpBOqaH(aAC&IjcQrD@raVz_iX_@YleR8%KM# zb!g3ia3>xACjg`GkhK=UKYez5Gu8p8fNI zaf(UrR4x&NF6$|Y$JqPb;Y+mI5K_K}VD$H>xi_8ste) z_~s2(Iob6hN*o(qLXQ3`8uPS6&5H=p<$jhi*wZd6((d|-;j`Acu&OVz@0P_`gds?l z766eVNK*>+AmQ`^ns6rvujs%lAv?Uq!Fdpmx&7FPH*n@jyf$>?wzD5Vo(x^*J58_- z2;-wnlg=Je#u}-QMf#L6LFWS^OE%?ETygzU7*@QKR^fYlz0Ho9&dbNlJ|)K6zzspt z?*j0>9I-Tz+%z3yGdv};B*WEFWU0(ANBN}|45P(}Fk0f(WwC?TYy$}}|A5PC`4>ha z5-N`xEAZOG)_DXNQP3%dnXru zzC05tZ!dFC((z8{W1RhiAV7+Kmigv7J%mQ6bt?=Xp?C)6}x(YkUJxg>(0I=xXYWpj^=!^Jpb^>&3XibeNO|_c>h~i97fr0E-9N;e{X41EcCe6%j33^zLhO)ZpH#b z9Fr-2b#S=#dFQ>z&_HuW+Hc?#0z6v)q{!1&r$*6@p5RXRLRr#D%Qt-xlR!BW?jrVk zTg}}0Bkuz8@0$yW9tsPs3Rq@2%lqjvGo6i*4*Zs9m*B~t=qEhVDuTlnk{r*tHHI2S zz>h0Oeg||<%8dDh31YTfs(NM>AUWUBUSGpAA1PkNSx|ubC|i?t(YdjD{sldUPz0=B zACC*jKn=)Zl`6lei2U=y;;-w$_l zAX^O?jFA$huDs)mQLd54rCABafM0%29vqC7xvI-;H~d~aKBRB0>Py zp_D#BfO~-dIF%>(c3;Ju>Hj?YguYPp@I;3ng9s9Hn7eAI))WZ!B-!3s7D4C>$2IQ7 z-XvzMue0LovA>Q?0lHoNEZY+t-O5fBilci?Bz{h&$qDLIN zs{cmFX!=3CDCA^@i&4gq>Y{Tr;B~TA8%SFluya+j_pBLAq5&LNHUVlBL`taVULJkd6vP51PHjw+>HG$ z*8jaaL8R#ke@1|GktOfhc|+4Qol_`U^|)fM9#?w#3y316OyhmGJ>cPdb|xsza!M?C z4I=Kr+lakXnh=q_oQJ*S)%NnybCKW^+za`i7ybEcn5M328)rWL+T)0L#r~#05q=G&|tn638guVz2Xl`{VEAtgX5G~ z%BW%d^SHbmY<+KRk)hd}jK}vM+>>PLMXq~$oKGov)q@!*A0To26 zHrViX6e4V2`IZw}YnC7$Hby8hx($bMW@}ca2L)t({GoT_kVpFIE}!mYI&LpnUrpX_ z5Rxj}cf~xVA+?pD^Hb>}3J;^asBUDP%<1?VN-j_<5?2cp4tVnZ`Bc7m;#Yo|p^Z8N zG2`GgD$s|xY}2tech$bd4&B?qcPA*}OVUoS#5HDFm}ZH%)y(Ra=@CfM#_ukWjKf)1 z>9SJw@ELD~joGhHmHbFq`DUMirCxqC8SF!<9tX+DHlR-L$s`iEv}XtCo5j{KL~WqZ z{G;#kfS?hA&Tp|At^-Bjy_Sv{l>NyXN)vp@wFtv(|-lA=|SD$MuH+*ty~T~C)~b1GjROS2mxSRdR_dDw^zfn zg?e-Gx9g|hGBaM4bIxxdu0lOC#RfreMu9aNCq7H%2#R||a!^{05ByWULS3$)mL?897dBr)8d=b+y>FvC43XsWd^iT=u_mL$E5o<@L?_A}6^vY_5H6 zQupai4g|weL7B4SsOf?R;ZWdgrA0ByqHUJ4w*kY1z6J4JUAS^l--gL9gCA+MR+RTg zWIs1e9%q$7>V`{)PH~PNd48a&ySUHJ$C$7|8oCs0`nIf zq3$VJ_fI#U#8a4qhAW8;J~W?@;`^o>S|aiJCi9Qat80oU~|Ik+~y*P7z;vUkPFQRd@P8eC?7!Frt;kFBZxa648?7x`)7EYt6)51K83TdG zsP%P!DOvwPw=dFxRKjZ_0_baNJ9#Qd0?-}@pD3_SiGKu_D=ii+&-r|Qd(B?zGz(Ic z!xs8Ro70IOQtz9wJl***Tgj7r6CT`$KPxS3(RmHJc{v2g;rWC+*aL-0Tlo}Jkgvsf zT3~lRpQ1yNKS{XOq&i);eUpydb7v2BXVAcYv$iB&OUtS0Wt4jWV7NAszcQ@~u4E0F zHovE%+-cw_mMv**tH_^A=Tq?;)zFfinKTxJ zeLD8^VO%jX)Zq+%DaTIhp&kUw&_i<^;Bs%;pE7r?|<8d~9m!%wzcy4byD2z|l;s+p@)(#vBuqq`N!qm7- zB}U7sQ$h{{W(|krvNs9~U^lZpAG91zc3CDNVgdao$AeyJ7)9^5>z+OQFT(83Tf;)$R#vGs&hJn~eI;{%2E7$~@p$luyMbeEF$q=e z|B_aNLPnl~T3P6`Z27RW)6Ou)HQ_P_TR~^ycwBu|HOhkk8CV!b*nKF8whHc2YTP(i zdYm!6XD(jLswdaTT(JOlE<*qQ)+m&6bVV1w?AcTrE4Rs$K6^v4@ND4KKN~kig-M07 z)8T2Z({bg2X%%3#0fA^;p!O}XpCL&Tr2iMSIL+4y#VZRSxTbGRY-cOi1lsu@+!OjF z1v3*HcvvUa9&$9#|4L+;7b~~_*fTTRvGtJEZg+8&QwR7 z@Wr)GXO_?%PtEG5jMgU##GF$lZ75wWd!w_KusVh#;uQ$HhWDM`_8E>A)2#dXB+^jt zHaFj5v-E9mXeE^a@)a{Vqu96cR6FLQzJ1xf*+$gv^U^DQ^)79u+x<^o%@?hF_bYmTkh^*@gBl7A+T z37ch~&fmzXUf{9J{fc!@@zBf!MuVw zwpXy9EfCLEKvnMCYmNB4S(HDaP{g#i$ZD4iPia5&X#ezpa%sVtKS5F7Hrp)SfP-IKSq8@t40DH!s=Uvm||w2|~KF zzg+rqaGi2dVAu2djKi>Rfy&Far#j_yL_Zz>fxsuC8?k-=<)0VF22*B#JQLe%Taj&4 z0ZY|A`_Vg;35jK7n>Lrn_L)9jlS5dljnmyJHcPzwi?i4N`?ve-ITTx^(kt+O!u5%#0KtuhTy#Jr5&)vu*C#7&xEiq8JDlc+<0)q`rR5gK*s%p7<*J z#O}sn3ZDY0=hMvVrq`hZky7^N&nmwpUSwDN=I+af|FU1=X7BwG4>J02;AFziqXXZk zo_{t>c)k^W_xIo3=l}itaUgX%{T1&OG(4OJ_M*WOX$S_5zmtZVrJ;9e*gXllFhgwM z7)UHJRfpib0g%?ixk3ycoj8kBt^#gc_X?mDgEz{H2t+$ zybb_m0cM?mGz+Aq4N*RpETck4Yeyo-(*?+oHLJt`8=9{!0B2?#=#04h4&Y}2X%puq zMbeFSGbx=3h7wr{YeFsV7?{2H4uSt+qbObiBt=biZ>Nef04XL&HN*uU?suAzO5JjB z5z0;^foHFu3HAhqO~eb|IjR{Xm@pCPpO`RXbSB9XoJ7X>oR#`ZfoT>8Ex!kuyQ9|G zNGFzJ5aL3aL++=FyoH3k+xt?!9!vWsp1(bm=Xx}wIVazBFH^@iJh{Um3soUrQy=#i zi}_NF{=&{0>lLzh0FcF*(iERRb|5)2AjD4Rr+_rHk9EXmAbI6xZ17s(`6x@!Vn_N? zCrBz>=PC^FUb9{26B3|`NdU+X)QewuO|RUXOqG0AMgGIYd^`cc*frZ?@tKZW*GZ`E zQZZ+W^+35%C5)IkBVMXMGr}_eA0oFSykwtvI=)NHeJwAv{hYLT3A;1ztO5TD8KqVX zQlMs!he@P4xsPUaBy!p|39y^s-dKZVHJYk&+hB8SWk~H9$}meD3$-o zARVhLsw~ZyOmYenKN@drJd1$s=y|@^O}Z?K)(+xs>K)sM;h~|bIOz+;<`Ll-O%VZ` zX|ZWe=?^N#M+x%@;8&yQQaO4%Tw56$D4ZpDpik&M1qomYU9ceP$i<$}WWX`yQnR#( z9qc_DgSb(AArz{w#IH$_d+nGJ??^ilTv=05c~?B7q)UJMXNgKh9dRU2Dyi}@BYx*Y zr5gf#wkb|AK={WJfacM!do;{DZR80oUmy#)1is0d@ilZ>FG6YU`tZ zAr6G08^&QCgoY)+TP-*NvWeUeLB&uZiSDRvtg`pyS=2GyO8|IBLHdyqOc6}jW|Ys8 z(A>|Qe~A|sa3G$<7@LzcH5-Ve(i2H>t%j9KinVZWh$+i%{TuzrLx5i!Ql;no=5iCC zT~VY^j$|j;%og-!%`t1PQn)KscBJM$gK;IPE^V~VkJKz(o(K9>cW1ZpCx=0EV)`dA z6_y|$m3*V9I7|3BqB~fn7_7unmZL(sRE)N`Y(yNGmmb{K^*x1)Q(&J}rhxZjA$}Ek zcfVm+dt59JEEX;n{K*z@8n=y(Wr*tm*NZX7@0kKzePEm)po!KYDo#6A6#R;Oy<6}~ z!dYgC?l_x1(R_Jk)IUkScD1rN3I{?HE{3-N4=zhD@B?2FLh`oPsXV`TGhKb$eQWw8 zQX7}la$R(#N!q(kC6{sWS521GEwFSQ|HtO2isq8=Gg&P$fWQrkVu1{esRRmvZSn(L z!5A_`vsi}zimoa%?l%QSIqE-~<2 zTWb~Y+DUy$nh;azvuJLXA3*Ro0T->yzEf%MWV%q%3Z00^B@Q0Wc9t#Hl1 zhp3RKf_q#;Dfwn1IS4*towNi*xeJvtkD=kVPgKEBGW3EvXpoIX2Xt0S*D(aT&ac-(q?#YZcIMq+m+e)t(J9UCjIL+ptOR6T zojSYzqYk+g6wEd>c?4;@DU-&O$Rk_tPB@$>y=#W+b-N6T2b3e&V5tB}Ux4&}CF9|J z%?sLSxFaZ28&$yq9|DBxv04*S6=#0l_Dur`ZNl$-K&6kvlGrG-732Y`j0O+s)kcJo z`7(GCDM0*e^4K80BWPVk9spD~0UAXKGxyNDd%*9{06-W#I3OlL;A83u8oGm&xcp*6 zPy?o8MkMQ!Gh3|tI=p}-JycTtRM(1e;OcKse0{Ku4_WGO z`x{r7HEwSKJ1P%86?9{rC60q{1333$B|B>g*D_2S6B==&-_PptySzZScJKSm!LIVB z1a|8)CtghD@pagV^$>@pwH3)9?>Xn+=*bBYhkI< zX6lF)>a)jBgq&oh4+;WqSaISWl?1SnU$Bpc4M+NY#{Z;_h9m&);E zqujq^v7*1nK~c;qjfbCL74n7RgnIr#roaIz;B-@v1Yw)Ws;2*C-|YjP08H|ZSd>y9 zJX*M?Ckv@_chngNzhqAR%^92GfA&KjKh5MbW1kvK=aI_O`1Y!av$mW0q`No{?i0TXUd%1#m)z|7 zKG*qg>?I&IF$g{V9y=N?04B%_#|O;M)AVF|r*1Al^?=?|zw0KOM-T%7k7$^6Hk{Nv z%6KtqO7YtdK(6|YHSH})xNEgdt5jZ z(!O*zK<6S6G{31^$^=&vPfYqXPsomp%d$TzSE3e&FL|Fc`S(1#>m{pzHMLl~EI4tY zjpGvl*L+}I)u$7`1Y}Z_QpwP*o<^rz*52D5N^9jA^n;L1{vWJYZ)EQ24`N=n7LTDw zH!GutTWk2A0NBSU&ZxF}?9%CH5T}!pciSa@994Pb7o+g6ICKI9kmr-pLIG@{L8hp3 zu^389Rr3hiuvkeQHm-~IjqYLi{Cjcu+S{)WKA38@L(i>j!B=rV^A}`SY|$4aQ^oLU zm})X)cHUTiPv?dNn~w|F4~^6^n}m6y{ZH)2yG5_u25|UZgYhN5g%;2?+tg!R^d1W? zSuYdQkM5D~x>nPV^B$%73LY$m7Ig@Z0`u0i_jmpDWS-4pRijj+2iuNY@x*}tYGy>w zZ!9TE1LTF^Sd-d+OVAY+=j;?0{7J>{8vi zXY{jv>#yu7%zt@%;U8|EPgwmMh5-aun389@z^)sR<|_i9XllfU6FvS`%B7M4tZis2 zfT2dH3fyvu=DSFRFFB_Q7o&gD_-$CG?OVuUA6QSW?#X{S>nlJZ6}`el@JxTraY_3< zD$i^`Y+U@_!CJZ`7e;x$+Wf@d?4#X^wzZPQ{F_YSN_Vj?0C)jFsr*3A)$cpMJt3sq^YS$01%^qutL9bt$#_efTj*0T-CX-x9v?hv{#!^UtAuQ z^g9MO=ygZ?QHbO%E}Bb)sj+`s(a=BK1-zHT^hdgvUKt&x3T|i%icqtWR8S`yeP9o) z{CY|HJ?I$rc{a9CpcpV_-hZ%Xv_e6uQRqN`WnaEH?8;KmK)O8)1KHDUhhVqT;V#=m z|Ng`Y4kTdv;T%;6Qek@99oXE&3iUgc@AnRjo6}txtJFF9y1(*>^1)j3bN=^!id=JT zuq}KCO+FGnc=ccz?C9LI3ef1$B;0l*?t|wozn=4a((xZhF)|+iH-OD4Ae!})-WK`Y zcMNLCnHb!t^btb)wg-i6luBsD5%!xlZdw-{`ZgQ!NI#3e#;I51hC#qI2&G^pyya7I z`@{{Ro-V5=kv&6-{}H3QME7ZRLm#=tXJMms$RPgrLbsRBbUOUtO5cFMQUPd=qsHNG( zti`HT#iPCdhs{ESwPaXhyIuRRuE74sp;8-kkG1xF4oR!X!%|WU%RrXgelW9E{=


hU7JX*R1w{chMUAEyUfv@0X)e;4BrXmm?m}K2+Y~CVG~3E2I_RF z{5q;$$S%DxtW?sUiIa2InVFUbT>bbnL|Pf}x;@9pVR|=23dELmF7mx;+vYVkV~hGQ z7TMok-6S@E&TRSKWZm@C^Pt$x%&jKzdZh=xXZm`#TJM!MjX*?RI4D&ottAaf9)6Wb zZ$mjS$%P)Q$_M_3@(^)NOWePqwMpwu{kh^Dm&IrZLghZ$&~Q#4@BeguNjf2|a;Q?* z!Qq)NR+q`m_n7pSU>J_0JV?ufs&S*&sSk59P%l`SZxfO^3h+4zHq0r_HJ?zHJb9x5 zHpjXXNwQ&qD7B{|=|NeI?wU}k%-dP%8KM;0wOaooG5HToRpn3jVSF4yYa>n*ETMNO zDn2sGE>w7Af)r_lJ7b% zfp)p+2;w*yBC?+KJbfAD#f%5^*M8r;9C+d1u8_VLJ-IU9^wuiZXh;RjujW8VPSakd zrGK)QSo-}#+-qs6w`*YWt1$V|i_2eZuFu!NJcrEB_nbQW^U2~r-fpWNwGWI;q{A*5 zRWBBv+CMtsxIAdEKQz}}xl*q(mvxyaa;5m3JW8DF>18Z&%Pn?M>R7+x(Br)=R#qJ( z5PK45BHOO+dtGO?TDKRgJc`}}?nE88aqY8tprWHD`l^1FO*GZK)tGmvT2SJn{#`4{ zl6?x*BN5C_8&an&+onyiu1^t}P9K0wMcm z583HVBFhx-D5#&*ckqijoYm7Rq(wJ&312K_4E>Q2npqM&Rjhz7b05Z(7(Z>30fb(5 z!t@qPF7C`sma8>h)6A4~JzYMP_0DGBLw2QW{Af7oR2MwAM&i~_;~?}jvvN;k&GKoITc%;0U1pq$LH3l`QCM85knMu4&cj25f2CJHPp{eA znj9`IpKjb|8{u^H;o_XQkVpg3UDB z+qQJMWdGM__-$X`mg@#G$ag+^O9jg zba)eKEibHEk`=&ehhCxnN12kJ z*uGp*t)!><|3lK5215D%Z~LBoFc|yT$G-29-Hd&2NK%xs%a(mlvtT4yB7`)SN|C0r zRjL_;A}JC@jjeq?+@YJBHW#q-ZlUjh zSJ%{gIxtz@r;kTl4_I*V|8GvrjMyEQqti{1nI9YER*s{x;sI%MdGTdq#Gx1uZdH!1 z>ss_J2pgQwsdINKM5RH~MvdD3&V#u$#h- znN7XCPB;T45cA9Lo2g8#evNDT^f1f+#79pm*9D3VnIJN)WmefV@x)aT-t7Su|EFZ$ zuZM*MVjsUbFXKRWGtc?0F3%+w`ioD0#sxD}*>9?Gi0Jt=;*BYG;vpZ;je*%nVvy;z z>d(LLT1l7K>U@;Bl$F@XPh5`EtbV2RBKcO_-AG0(6C&tne~y}XBMlV@Gr%O9@y7Ed zkAL{`@7aKUTWq6IV2t{e-g0DmF_AA5B=yPhr}N~>=cM#L{e}#>=UclFe<@Rv zjWlHN)SUJ1>5|6L<7~rYVst4L-z*(2_!JZ-mTps-Y7SweFU=DF1p3WOZ5t1c87EaA ze{?PI>`w26H4#)SQFwldru`8OJA?*{cvME)h!YC*0=RUyy9O*@ct|Ktn8XLYBtg60 z@~gJtxcT|{rBq_VtE6tkC>NjoD0gkLCKZ5~cEPD)GDUo=!0KrF_JYRw-RNMMilWlp zTvcoiG22F16N}%D%|icMk^-vj9p0oBQ%Tk9@ABu~_3YIr2U&ZA1%H2^Ihz4wT5ih9K21pbnZf2c-}vkL)1?fn z>&8#V6>`-i3k3#AKO>uj!aDC_+SBya0$FiWgACe~(lwdi8XwSo(Ur{Qbd4 z_1yP`@QdGh8xrSUeZW!Bhz?lTXw_Y*Gacs2>*$d^pW7-OEu9db~$V8@OI zEL9|<9^k`iNmS+?cLolOgFs*OF#LG{!ja_a2k;R7cOn&HRG;|;IFk{Qd1O&$ZbTEf zY!E<&gSNqNk-=6^RO=SV&O_1esIA=_LFn5RO+>7c2ULlNK^l5+Ynu&pmDtH}8sBId z7qa_PhT;a%?s)c#Gv=1-zxxQ84+*BFA`H5}Uw>#{i;4tiy!gT`6Lih@dJQjEinuU5^L~-yVdiZEO=*tDty;qiWNFY^UiyiWN62a20cwz`u`}n z?0l5c)T@ePQMulkFMMiVYRhA)}y#;XZy8(mIn$q9gCqYVhn7q=D-iIOnIVHWS{-PC+>Q`SDu^F zpkKDl*#;&JJ*KPur8V})PU`Qkv``WqC-UXjcVDhP)=J#8O@cZHB=YbVYmoY!AGr26 zZwj&BO8YnihpU~(u}-D?{bh#FuI{LV>EKu*!e-QN@lLapBNwA!;C|vjkNJ?;`Y<14 z_)v8-H*f=rzL6eL&W|M9`q>H%iklfD&a3veeCnPz2Jzvj9(nMy#fTJo?y*>iNGj-V z+yH2a?B0}{M4*LKX3Nq!!k5+;zW~G}EUXEHK;;sfKr+Q$TM~!}4E!wiLI4JOuoyKk z8|%JQ=DytKzA9B=0=N#6Gsv7weCw~hd5i8+r$i;@qk+uC1 zQRJIn!ct@6B=hhbora=tdX9c?XD)-{-37l)%IUB!-{TsY)f}039a%KDoE~?}88!dC zdh?|<)g29wCLq!Xh-gNxa@S#fW7>INy$_$b5V0f;c1}brB6B@A#0Ta?07)3+J#svv zdMy_>=^&sBI@7F^Hi*!>d+*mr(3=9nPw0_f3*>}fB#7Inln=+|bUn`)fa9p%P4L(* zn(Cn(eZX4ky@$*n53I;L@yfiNf|2hnBP&oDrPtIG1jM`_>~t~WKqnC-|F<)B68yne z=rYfk-k-w;uR%{G09z((&I=Lm13!t?{hE0c$}yF}o@se`YG7bzjS=z29*c&&0^u@9 z9K>t#Z4wiaq)YQfLSWzX4X=%IM~@Yx4vCh@yZz}@NYX1{5_lI0@#_S1&YN$3UVDjN zA}_L~&w0kPbGEYGxOYe(1|)#+=2-Om>jZ@69Br3^KOlR`0qnLcf)>N&hk zWdAGIv8Xs~HxSURhZ7%?7ID|?G?HaG|d8Qa7@Z_zWlecetd?|eK(cMo^qEGT# zU-~9M2~M5SyiZG0rAi>n#@uEYr)HkUk?$RwIcRYEC{@{qz~ty1I++2Wf)YRksk_|n+x_CSdp!xX1I^4+X}B_dUF$l3IQazA z56ilosY{awd|H=2eS`UR8u~_DLhk3x{FQECX-)S&y^QskrYDi=PJOwr^?vK!RG-1e zyT`!6a_m%7Hq^fKtI7McCU%+-T$#Yr7j^P^&Sz%MJ*pc`&&0e#S}36jynXHi*XcP8 zJs3(E#QT-Kyv|Ms0yvXp-mIJiCM~1#uzWc!iA`0vYe}rT`mq}+Km@{xh=5e^FDx0P z+MfXE*4)6^?NE$x*-=DV+&WYiS9)-Cu`?c%t-1q-;E_t~Uhxg!vXfnB_=VSz2p1+* zM>RW&1C&$%d$k28GlSi}279jucUO6vD)RsE$u%QUwMo#BVp>KQRD$TOmS5F>v2jGQ zXklI6^r#SAFL${z*D0K8M4(!ubA)|BLKu<*P!NO3Ho|86@4RurP!uP-V~D{Hxxr31 z7esdEaWcVZ)dd^4ZbmvOaF7;(hS@EF-3lSrgJPZGWMN0p^z;|ce!u}kJ6{R6-dQxR zL4P5k!{8XTXQy_mS`4q55ST0&7&mkAZ(h*>PS$wJ*dEk=T97uoaakOB_#rb zIN$U&a?Q*$4|Kqu`j++Y8|fc~ti9w@yXbb4=I$MaVrJ7ia^qSdzFiCAHUm`mrG(ho z0@d%O?%%J(d>2kVqZA2cj>3$QU^iu`rz1!V6Dd=2x>onDRqE22;)qZTEn)D!NM8R5 z3?dbogWmzGsYY1GN;A-ld6j3Xm`4hT$QJJ<_r))>OXM^Cv}^sL(O*N)+Go3r1m6ga zXug4S3J=B;7vqYvk8c&(8@E4nU(xYd>98m7-KWy}gH_m+BkNs|@%w$Xm)oLxI#Yo| z#`hdkDe|h{g?)IQ)<@<&Tj~D1^6cLVQ)acta`i@DKi7DUG8-H-NDCoBjCFJ4uy9$l zr22T!L3z8|9l`?|PDg(I9mp7#Nr!7;z;@ba8@VWc4B9yo<<%AQOrKnJI_Q~`QEVk- zhwsp}$?gqNvPd4F)^%y)b0r|V4nE>PV;>9a921@hL5CljdJDpB0Q^0f}N0vZ7u67aCr5;|w__UO(g09|4g{9=tqE%5N}Cmf$2Z zd?C-DXR3x7v;OSk#Lg^}R47X;@^A2iH(eQggo-5{!XN-3N7m=(K|(y^wTW>B<9jp_ z5sU>Jb?42}BeNW-Q!hw|)^}tH3;ESM`4#cmR`+srY-vTx{NW^jCe4?S7uLrmzc?-` zRC9m}{uBRrM#*xG@ZeNxp^9-Rz(~y80Hgrgc~XvC-bC{59z*s&(@o&Y*}Y3=(~7pq z0l$m^1sDBo%PHOeh><-{Dkh$H<%)?ovzEIO*4s_wKp=(C7kS%ZxI(QOUf)|6UaCA8 zr=MtWNPl3MxjmoyLM5$phx8Dg`kqJ|K0fmL$fc2k%nqMN8IA?dZwVnBcM^VTMs9S? z-m`l99QtlMa_so^?g%p1_;%bw#Ay<*d^D}GZM#V|)v|;8fZLJmN2JB9AA9dA&ukb93+7P#1+!d=A zQPai6t*Pl#%(iZi19M53WAkPnnK(I0`GwQPExpZCgVCV37*d!OflgS84d`j)Dw;4~ z9{*0Zp6^$yI-xsD8^BO{EK*t*b+qG!TvRuWQUQWOfvfd|Dia z|DSt`@5Y0$vDWB}j%x{j*A@orOmEXzIcW!@wmamWfno)hT30pB0W9skw&b*V>r9v! zl4GIT_qmOnXbn)gM2BDNPHXS;VK8Q2T%7Ct)>&X_@eNQoz}rq;nLy@WOS9g`32&HCXo0WQem%WCmUF$T(!i3 zlqR@ioTSo6OXm|yXRPTT_iRuCdV3Vqj+kylBLbHflgCf4u<>`FNvsS3Q1jS2>AjP;5r1M9D9^;gy6+oFpO2y-KNc#i zH%fjv>QZRf8$~Fxf`1QrIddSGLU^^)GW~#L@r6^pB{)0XxMCRlflp9lnDMg$n{5($ zHSDGu-gGCn$C{TjloaPq1{2hP5S^n`K?0cl#{Bo_(cQ)0fDIK9G1ReaeNloN{50N@ zd(o=Qw=iw7IweMpVnC*=-D=p~yxtTl`hNU&=M8RPsd?Gl9b;>lHj0qLr8UpUkl1ph zhW_>0rRqDGizi7u?p?EaRJ2sUzCgut8?U{jpYAI1H#Cdepyt$%+K#H27NkcFb;5T= z$M^g8R_->Qxvev=dRFRo(9E)-10?Kr(Yg00CX*frcO2jU}%tg&U#bhxrx^y60Y?ftNPdmh~$hy}rPA zhqh*-$mPAxa@`htu60NTwL|kzkpgdK4uT>E8++SS8ND&&)60)YcIW8 zS;!LkE>=#bPKf739=hBt`d!JKuL~A&V$kN*TE;&?|F%l~yIJgYT`hqHqd<;uK7R=I z%iserdZYDVpHP4R7UWHTunUde6OrG>hYfgx?jOnZEUS<5csv+>E%y;;U-@<@%=foM z!mC`UAsM7tHp`dk7l`CCs6(vZ=G_u;u-Zn;qI52}OSBTyrt7{2C8}QW&Bs>oH-4L0 z-8JPGc!;gB?LlpZpsDKmbv)5a==Iw@&goc)khO|+_s*eg=zyKj>oPmND*K8T&EB5* zIJuhp7o-cYF1{PiGTZ$Q&u_m1MF0cFa6BTTNdYxaMFRbJ6rqp=7GSbW|IJ>I7-sXY zts{gZm|(#IQlj`ElUv!)?8{rvQh$>`!BfQJ-OE?*Wx-k~QUu!Vbr!;6SA*L-wltG* zV0{$9?lGAZ;Mtd2R$IIPfRGF_Zwr>umKkl64)s3C&VgC}UGe97aPxct8DdW2br$NNH$3$?9D5RPX^bC4zaXbB`WY$MaMQ<-ws1@yCa^l^|v z1bkwlNUNK8Pl2HmEDc;pAlShaQt@4isl}`Rf}Q{)0QHOHm)(uNXIF0kFm(dxXU`62 z2uL$&1N5~cc8;a2vuFxvvO<=+uCgCveJ`;DI!B`mY3CSbSh$LtXzMt1DXuxP(Kv z`c6Z)L$?Y?MMW+5FI4uTb8k=lx|#m|ZdN;w>EG{!FM;DD)d#1{L1?#IschsDDWy;l z4ce)}%C8X+Ds&=9fnY7Us)}&vc4~cFqjAdq9SZu6Rd{Ta_~mlPcHx8gY`>i#5vwIt zF*_!S=o%vE+fM|0FOVPL4b;SSjdY@z6R186Lx)WgMyVC@Es$WTS=W2-1jQBn#?5Qo zaUTvl{rkCR2JDV9SEjZ;$zh>a@_zcQZbr=D82}IA$i6Qv2E%uP6W=_DBR%9-ixzCN zAO#(((l&nw|(GFV~(<*Ds3Q< zcNDRL;?n&A6AsGBmhuZD1FxZ*j~`IE^T{%TV3j5EEu_Pkk}Z7w`rcczm@0Pv#SFrb zVm8@(*w0#wAg4WOb9fOUT-z_~E%z zAuxrHHiqaP&H|)iRGsP$jwn()s{{j`hL~aL;Ad4Gg6G-0Zi&#B#`9H4WO^=?{GY7U~RNPg5eMuipI5gY9z zlwE5pAyE{w@PbBWov}GSa?#<`=S8nJUw#Y|1;Q zGJ4b8_@I&V7*4%~>TJn-ylr%Ic6JvW5q+&3^fB~5N2OyY7mtN1Mfus2CGq;V62Q4{78K5_=Nz>-$@Rxe zTJOt^*ZtNUN&70r!WF_#XSV3}fyVLSP8Yc7OdY2_!_l6@qY%KjS1}wHDQ$nmjwBof zHuB*EICx1mej0|ksl>g$bee~7V?}C0VVr8Bi+3 zCAUUT=vG=^7=h%s0zBxxNPR(gd3{smf5ZKU*?@|wlbgl@AJb|{w zb1O0()`cKMh{Yy2bJG?YOtI*u3hmf)dEk(VEbVL?i_zY)^y3@S;g!T5QzUoX;+ubd z>Tt&G>eKFqbnuOcT!^ZAgJ^?iaDPdE)8z@(Oj{*bB3>QZT((7V&r-EEk7#s0qeX}~ zCvJ;$U1{!LZs~Y0K?fV`D_L|y3^M|_EA?0KM6b4Lgdz$C8~ zRask?x!-P;lLca%8?!V>YQt3>->du2OoMO_TSqPno-Uf`EqXvG<~um!uyFJ7gXSka z&E3w;0!-EZ303|jg<;~9DF;T!F7h02zV^)KSt0XTI_~+uNG6}=^K3wS6moPg2tH0O z{z&2(jx5|eHdxST4gFx+1d&n%*-U=1-Dj3~AquUPlejbsM+V^X*%ha?@Y$|MH-(Xe z3m(u(G!bPU7=CCu_gI2czKop!P=cKM|$%KEcn+syt49U0Z!zsiaJ{=yNiT zD-YL|8$OYKyQi$!#!>72$sb*(pg=Zrl{sN_j#(%VjluV6GJ0=LX)Qb!UN{Xc-16#* z$bB>(L53m}K0~@@uW`+Ii(g<~-3bcKCPiLS` zG?!Fgw%0v`pU&sEUPn%4JJppQEVnksojsEF6Hhw3_1S)xDY^SpsH96c$OzVwoV;J=Hm(uy`EZZ_h;B!U`u^@OYV z^*D)pagvfUpNQ5fm_Xq?mO?7TvJWD~0aYbTm>dAw{aQb$oSvu08~CGQ`gq<@%pL)3&>r{f-KRXjAgZeV)r zq3PI{ql!n=>AmLJ5M5gq&yu(`Q-5H2(9}f*h3l;^T;^(EgfdAI!XW7R`zG@Sx=RV3 zT?Xbu1{R+l&h9!WK&kB<5d#xndinRi-~#|J#xMPtNrA?L%yBuzRwT&4Yd2c zIdtkn`>8L7PJe4Z{qvCjcDw&UJJJF7R6NXGXw8FJ*?)%VnIY!B{ou^Yi#V}7;^EVu z%{z|yCX>ye-=TEap&&`g!Gm}=-yyW z5;&ZhF=%Mk(1Cim72Ta2^#+h`PWGZ5bZB0x{s(Nw8yv<^w_Kc9{lOn2< zLyvTtlwvXdw*117!Ba1ztdwk!TaYMgL&s%ZuO1m4@f82|(4$O5<%cQIz}SVuD#hDp zB)8)fQtqjB2GMjY13OV~FRR+5B>JaRwkBtuPfn6Frt+j7vr0W*v}Ku*BIXZOE`V50 zQ(eopZ}*i86uhutQw@$MC}#Vfb?KTcG=dQUj+IM@G5;VPM?0UIchNZK=phm!wMZj`HL@3O7$7X5d)*yfRGq_J2+Dr^rT)wY`B!efIQ$avQy zuBk6ax4zS}U82%?=7XH>D>*Km10Ch4w2J2iIbl0Ron2)PyA{6M|FAnw)LqKAN6;@O zQVw0&M|WK%O@Fp<;HbNz7fAv>ZK_=)yR9@$y=;Uda5$V{bDscxzH@niho0hbomV8) zHQm^2?*@-aUFl{se`<-4$+-UBS+l)_>dxyLX;*%yQ~uL`cp{~x*R*wL`~66|>EUc& zB^+Ee+2V*4lIa5t#(6$8JjxT%b`%E&a4>*LOLLM|Fmeq8V%`A!4vV};pLiPlQPzQ; zi>yKWP0Mj)tPDe*Zg(%`92X5};FoDaDNuzyly*1Tv-EgHW=`Aj|EgXfJdxs{9i*8p zg-^4{AF?EKHwJ-HnM94#Udc_&IExAWcz))xg2xd=tQeSEPO z0VP3%_mn>=tHnq=V@EyTgOlE9-+AfNV$w@*e~flh7rw}k&K&}70HxX9Oh2m&sG zi=_?+1A}?fV*pq9K#ww%hvDtf+?Mv@?{vZiNS;NEFVkO%6!G?NchBTUt7lXGFF=Nt zBC(ZnO~5A|Agaj%#CQtsI_K`2_5Ht!**AQ!i+?A4aZ>{{E?fA!FP5)X_QzJT)@*Lv zefY>w#JIlU>H6;j^N;t;*WT#f7PA;1N*}d4D3W~|aM1lO(x^f5dBlhA`!0VIpLJlm zz$SeOI(e+=l<%%aI2k&{z^B>7*hWM*b6ygpo(TaOZ46y|po!O9-5C%x7&qP=b{1=K z*v1hcG_3=4_nw~D4HboA(xQfrEo?08nnl{i`fP*45xTK5;H}vvzamYFeXt%y=mJ9l zgziRSylBbi?%0XSnpkq^hr^lQgVSb(ORi!h%x&{x0X58<#J9?BgDh((m%?}R2c;=L zWnQNL-du>qIb!h{Z~<*EM>3dv!_u;F^Vv3ZBejaeYGA?MKNY23< zb2UC>;2>TrY$8e=7xL&jo+f(fYQneIw>)m;x}H4rZMebay3t*6qosE(lJlqkK1%xe z`JqcjYxJk>h^gLVy<2P+Ng-upb!rIlZk%6U28a#Ui}V{LM?cq_odxxgtX3w|?x~!u z6qWTjYzElsr&}f^TqYTft|~lRl39Ffmm?NB*`%=4t|FR*8y5CRAOm33FPUrU^6-g<(0e^In8d3}s$VEH` z!fG5zUGFKv-l^nP--Ma=4{zXX?^?%RX|e0^XPERHjVDtLmvjJDzm3ypg99?u7Nk{r zq&DTr>rrzZjd6E+$(qpHh6IC;gj$;D-thHn%7$ke`Dff-H{TF_Jv<;B&&-RQ{Qi|o zkbtf`oiazBW4M7*ztR?QSRFmI)aa}P@c2v*Ow8RFRGP3eWi7W6&QUu-paI`%O3p{a zWxZ3`a&8u^3OlNxm@r%Bll0&mXT!8K9flz=eF9Q}1V*?;{}4o%MWjVKA# zrlBV)&*%6;=7f6Zd`&!QryAP!WP=Uib6))#AeNj$x)|MGqR8cMb+jgKK+fNh61j#y zl{9f`fFIBR;rbD6dc|{9akW=#SE_Ft28)_Isc3;&W~%LMT?1xgJjuu$j} z)_+c+Zo>QYH+_Bh6Yyg9?zbN`0>p>-wzw+fYYswm&io!SoOxINH$iF4`?j+nw-EWo z=4)V}tx`rkMh_7SGrLmHbaOXa>kyn+<-?q^Z?z+;DXF zyigJ;&mZXEkQ{Eqb1WFOWLrV)&tyZm@r@fewti5-7*x4(=5WeZ|L2!)5sAYC(!V)H zxK<{J9|zUBbDuAXK$Y0QEuj3c;A%gej6cxV=B0xcl)|}UM}iC>?EG9daii4ZM4>`N zzUN^ht;+Kfv#{!2+&{h2+ou(j_0x87-tN&AjycO-S8uo59%{eiofP`M_70wY;eEw( z#hcz#r=bbem|_thAkA1ihjy*=jgXytH3$wRH3sBniT2h!haC+gaKe~c{DOMCW%JGR&_(E6_&q>HGsH%K-D zC$TWM8psn?NU)2nnpnTOlia4~+Lua=`ET|qkJVwMB>u-#FNwQh#0IytA3PIl+J~O` z+5JYmap~EXDSdh>`d$WW=!?-<+L0vp-<5+BrvsK#sImDcGEL1{68 z1sv|JMMU??rE5kWoXRPB1Zy|2Ip~0jWd)kcu#fut# zeI{~sA^n48(`A(>-DWEXMke*C7nxXpCPh#3&+Bu1iS^6p!cXhJA5IpPn*cAKo!c+^ zLWxN@2jlx@OeGMupZ%tPuW>oopbTj$=1~_N4R@>wlFCoL&Vx*cx}?uV>*q3(qrn&A zqJsE1EDJYw23}!;JfBJ5u=f06D^QktUDaE!t;XpF^p?quG5+}2!mC#n=;L>PZ`IlH zIopVxQgJoyHKg=_9O32$$0%7Py9R;l+?lXgR^hqIx}b_ehV_C<(V0mm=RjuMaDsWI z=ZhdD0`ugS1_w+Vtop6wT2#o<)nyUH%zN&aG+h8kg#m0%^gdwrid2kh+WKB7(7|sm z_GI#{Xo=Jg<%M${1r|;RbL~LPs#+9K(15JI;^%NtEJ!d?PKvqH&k`&?va8>S*tEk$ z;r>&n|MyI1f5h!Ejtjb8_|cE_vmC-ZAt$@e67&k+5p9A>-rE4&sjfevI`@WmqFQwG zHaA@(9*Rvj%xKQLWFde;SlG2-MnO_*gs}IE=NtsQu`c@Jg&LATSYd$~b_( ziOF-YL>GjUk>PpJ!+9x0CT5Z>m0!%~7=Yqy*mWH4%Uruo8qw2df>c=r29GT{L{vwaY2Kma~x#gP+-vSBi~_&f)x0~c4BZn-3F z9>iCcEI0rj6U~`&z&hS40Ju(oBgJhzJ z@IVqzSAhM;9+^!t*FXCkeUNTZ^2ECgpyg#T1EaIi6qtVYCn|?%yDGBTnno zd_=8>_^0^iexnlCbKNE{L-mQgQF78>XQk6Y{P9d7D=a*VCDVxC8ILk)WD7AsK>D0y zL;yNQOZ*%cgj-HR(^Y>Kt3U)Kmg~ffU7_+=p=CMgJ9PNLbRM(|kY1WadlTU@HgT#r z-o1B9-~>2PJF1c_lNx|9?9*FP!Yt#3%a{rlbUx8+E^h#)ibd*^#pQccp4Exj)*)?~ z&{ainl!3H8#UKpJIjulc>1cX@L1dkQ3(fq=m`c2X(t{wi6%ZzsuBT6y8J1IR3ezLt z5EKwl$>K6{fzL<%F3i{d60DyYH@E7kl~4?$>RCV1*B;`2vze_m)AAJHG?5p@xDpYP zZJWB|x6z3h8wIc`{hzg#%|f7wJQi$^`#kEgv{e639RSqXQ>TfF#|YZ0YzT0hX3s%# z-?mQ>{%EOZCq@s#C_qlPfo(618|BdtMC-x&iV8h_Ug@f8pWG(Q*>(;Oo&3EZK7hTS zAy}XEHgjpJUf#WO(J7}*r@jFE&JetG)=}iPpc>$QPuTL5A*g5EDWJ?zq}MPa4bGS@%o~PM<9PeTnp6?+J;ytQSMm7CeZkhD^ zbNI0rN6q7?F@in;S9^oH7P-FEB<=Isy*j) zzl_fQ@g`Yf?Hq_P+eWdllvvI>>C!UG`tgRzHF z5==T1ERF{XR9u}CjYT*{g@U9Gq?FYx1n!jE2sx{@d2c6#q$Ho|Opfl*%7uTv_@xg@4D?b>!)-G>;PlyWH|_t$}vEHQvmA)U*~zFLy* z#XPD{$$Z(F`C2S8te9Gh%1}}TH`3K@>*Q~L%P84S3fsv1b@=?Bl=C{?UZqB)iHa_$ z>R;%;Nv)%_(viUeen=23W9<`Ix63DH+#1ZM-Osl^1JBx!0K>_V|; zU0L~uQ+D%qVu7FoP0qxelyj;Qw%0>$PrdkPr$QHiG?4%bzl$6dbdw48+=0o@U+hgS z2;d9Z-O}-@lb9w;5%Fqmvr;z$XsPV9QKE1?OH%%_gg1*9ZfkVShZ6V@!NfCSewEa{atJg~>%GA$Rh>%=WcH|u{{*NJ=vwKPC5n1z>lc==} z+*)RW%%8XuV%exgrwVDyD^zm9T!94dZ0R+;A{4CEq+@?B+m%S0JVYiZY6 z6q=|p%m-Dhs@IZeI8Jx5N;Ot?7ONsDQDJ;++y~%hX^o4(GdeF?PBQt0P$pLGs+zhh z9Y$nwYbp!Y(vdM7&W8lyB-^`Sp!Qcd~u?`ZsL%ccE zkGjdMKFRWH6RMxtyZfg?JCP*VLzY}&i7yfJwSbEb*t1KIWv0n8>!!O~AA?khtt(a7 z^^^B@)2r~ksd$^^JR*=Cb~la5cUtUmD^%Qz1a&mvkQ8OMSkXI#%7a{Wl0`;Z<*s45 zg8HUo=?mofJ1LTrc!?|$6y+;4Syy(OCK=I-=zA<^KajNYEq5UxKUuK#3MV}~4t4$J zGS3vP*G1`&xx!D_43m*r?f%b+VyqI%HaBp$1m$1->bfw&6^s?Q-tz(=Om1OV}V;P{4FyG3$Lk3CN{BT&3oQ!4{7~<_a#|xsXkwbiBy-9 zs_&I`tb-?Sx`5O`6!us{kc@KxvOaLEd2$RtBV&6?E;g#XaRecS?cnQO-WlxwGtFO7 z2QLFg&vjG8wFkMv2G7|&Fom+py0cuS-i|H2)IbO=u~;5yr}kdHvcQb7ET%6c>-E(D zb0jh5tkW=F_!aPVZ-N7A;q#i6=?|P4!i5PpOdq_lnEA>2JbU!%N=|*=YjL9hggvRB zEG?SQ{Z66^1NnOx{#3T|Z>-d%eD3M2Z^z}F%?t%IS!r}Mg)E#(dR6N8tncrF$G-?S zJA}-vWWhUe!vb^3nL>G6N3D&4Wr(?e;oiR0`0 z&iiM_w}cV(FN7k9^IC>=eQUru;NzeH^>0O!`MT^owr;XYl-HWn7IDR8CMoT|x5sbB z6AW#dYObq_`yTzb_A4tyn$9P&E3-ouWiw%oZF=Dvil0I2r%3LLfj|HI_Y-n{{ouHp zE6G+hLUF99Bg^9P{@LBWOyNm64&VJoYPa*j-VvCxF-V^6{Jb%y5RhJz6Ie4__PQq( zh22>iXTlyEQ6z_d(H5S}L~K~@1Y_ty@~+VQT}kDDZ{$6L{DYm+16ZOS z$(U%kuloIGe?ry2J7hAtkHnWPC(F1Dccw2L@-~YN5HP``TF@eFwx72@RDvWqv4|F? z2yYUlKyx;nFtN=|&?bjZJM9OlD;9(;HOm+QIQtbp=ScoL#&6jmPB@B2EHlP9MNe9Z zobTgqq`}SMtA>#uyDu2r8o6ekvA54<*fd&adr`t7-|+Uk8?Mz7A_8+R7lf2;yE4<} zc-~j&)j8jY_!HrBU0m~V=`NUg&>VL^Gj)*oN2@CCM{!^HY^0QB=IX*?@AjLMC1UcI zPydMxsqKEYu|5O20&SgqDX&Fg0^eI+JTJEojb)s<*8O&O1H@EWdzmjH@9qPPvfd#*ZOSVMM9pT%Y-m0QZh(SGWf7#RnG zk#GiY%z^O-MCz$V!4dOKVBJlpoIwP01F1NYn~X6UWzpD;tBet76mu6aY3aM{GcuDG zRA{<37*u5W4;kzlG!=gJAmqwy*)@ta>(H35vRBeExJ;@F7@m5GI?V57z3m+!HrsjK zGKJB5Xha;9e(QS@+F+5mPUoE=hW6V%= z=jUARna;UFmzYOiYcIw;UTz(Vd9wD5=WO@Jh>K2wZHxoH{lmt`MudPdgACVRUr~rX zEbe!2Hh zOnpwpHR^sZpI8R{rST$1n^2i+v43J zKZB4$MfH}6o5HMY1!vxhD#wl~D+kN*uNEP#kJf8t$c0v9j&H8|mKFcsF^tt^ev3BS z5{lT9E+PH{VY3B*^a@ZcX2LaFNIfZ7f+TB41fX-7h27!>U?W4p=i4zv>jK&BhXR~?2ymx^%sUK_X(k>Q1Ob4DNRj6K?&E&byS-U}evTWszBd9b<#%q0IMXK~ z_BOnoceFK2xU%8B52GK}#<_G}@B!aR7HH9GQsT=4K!S9D$L}>{DqvRbd-yYpgZ|-? zVlU?VJMlJX8NtgugNkFuqYhwXfb=#p8)ihZ)8c!Z*Vdx+SlfoISKce9fs+8~|6i6% zq0?4Y1B$ZDW8i_NZ-EWnf|MvE&{gce7(YicowSzxojSla7T^PHgMu{E6=EfvNallc zk^7Hb+s8`O%e(dk0T)S12D&uJXv5usz*ctOR2Ka+=(xc%k6QBv* z!i04>E{LwR%G^=@OimBhDGxw-7K8N{<|6|VxZv`-{pVe&d_W#mi<8IiUU{!ja_0 z=wP|aa{RKdu7EKNs@a+xpQ$mK`(i0VFH<8}UQ+y}^9T!}T1?@Qs-xvLk$F7{WO?NM zM^P~b_xVQiO2Y$?#$EkZ>jA@=QHS+|B|zdMCGRDo+LaI-x7VcHCD|?}bW}WNYShTT zdOTOi9AiCI`-=*}TFdlESzjtk6hIMiBJ*s7>Pa&t`=OWef?fTWnsuRqUUU$PIAHV@ zcdC%^@!dSL?WW1!Y&l0!*%o5$K?)Y&y_n5vwC{qOJ+2EEOQpl^5goSWKcNEW;Z_!o z4wfhDpc2N!+w)8ILNf839qu_P|K5&{G-mW!>ZjOKJs{J}L8_D^!Z(KVv_e8Ycnt=L z+cmK?C;uNu_u)?E|NjB}KKoeb9D8#ddmnr2SefYt^GJQr9!uux1&#Cq5H+7#NSMWNQ^CD*{a2Tr> zvwa!45_}WkEJB!0zg3j@#R&8B-@{MeP|6R-se;l$7Bfc7;wYLtXyFR#fNl{5oF*l{ zoGJGd_VebBpS4_*@j6#)?~M7<)k738AY*4VP`4Jp;!a-DHpX5RR~D|DK1MfwJreoT z(BG6T^a2lOSL4y==6YGKQMhS1<;I63@6f2mcIDJyi2LL&_^r@a>$H=}CCy8?!(qLn zoxHzW)NEa`M^(&BiO8@|XXP=rRS*f%SPMiR9%B^7YqX4&+77Idb=W+Ht)k zJ{#VjJ1K=`wm3TFh?I8b`bE2uSWW)a+56l%^Js3IqzI1`1LGgr9TOAJGYjL@aF5f? z%*+~=&8dB`%8ne0h+M=Z-qW&|UI5jRP)$F;T3|2=fV9eUndwD!*JQV?Wp^Pm zcXWBHo4HQXl_q?Ev7IFO!`zG0skS@JtbPJSi5P3v1(s%{4volX%ot~n=6&rJi*1PS zr$ZAvxB#rt`zcbXkbF=F%3#_ucM7@FfYhRa^WskEM_!3^7E%;UuPW5IMnI%TE3z;# z)3|`!Z)NU&NBa?jGcUka8K{~9DBF8^P6JA$zPGn?A%NkKgRylt|G&Yt<7!Qgu9^#v zLJBhVGHvGo^@LE<9ZhXBit#P3G@HxoBs7gIy1iC%(m*WsJDbu7)Q;sE?r@#&01`;( zkLi?6t-zxK*6gCP1x-8qIk!8Dh>dxGf-{BG7fTu3i#Sc zR;9%}kV?+!4umnDp*9N8KPJ%EY{BQipjje@HV2F8U}H`ANni?;^w?MzMs~B~(|qT& zoge^FR7Oug?$-6E`lyD;+{;m#pB}gkkT5Idh=w^>)G|Swo+Baq87O;Kh}KS3 zw^O8?)a4>r;zMulEtppqYb6j@1(o8QEl2cs2;QB$Zgqy1l7+0T;i~LFxK7->hDTa< zFmHTR$h0np;-#V%0aPU(&gR2@0ekwHV!cHRZ}20oRUn3OjUA+keobK4?36pE=r-by zF2;oN0U`%@5rBxk9)P~3QOrF7Mwa6$v8UAvPaM*@PI*iG+-2hh0VCe}Q$Eh;$Xs`% z(Q-lP13a6hY)CZ$-4AQ(BAF^PfPlotTvtTMSmPu9W&m(I#B(_Sgj{5E%eAHhZ+0WP z6T0AHC#jU9oNaH8t3wxe>=9}x-66pP-Q_KTo4a)cw4`aL)Ooa2#d33Zz;Cs9e8;0N z|1!5!Y8$Xi)YxHP?Xd3?QXt)J`!WxbBqA}I=r2SL62oD05foCuE+EB}6!&G52JB`^ zaLSW7+%As)6iW@16Q)D@@aX4rPy?*M#A|T6H;3fg`mPChS22ihM{=EX@+lc{mXAlF zmbC)OvnnF3MfM#4B=^iD)d)f=Ai+=o`$?uF`YjJ9nd@MJ<2MheoQPg0!X8V@N?>8t zWUgeJ+f=-v*ydfVa;HqI(K{dRkPeRd0=Fr4#2JgWWA^n)k5C5%$n<;Kvl`%iB@3lu zK$-~p!OioxLR}dGh%hvzJB%c~dAT}|d3KpLyMo?zf;T;maUOu(ITSV0v|(M^_Eddf zCm__`EH2ubZ{oh{JctFF+Q#V!%pV)N*X47zQf7)rjKKua48YPDJ5sP7-v6O$Nw<|1 zI3uS!d)zwrh5-I$UbH@Xb))Bz zvV67Zi19Z=9rwSuOZlshVpKFRL1|lt4@0Icawpx6q|GcyEw~Fyk;PbdtUU*k|O&s zTYZw8{ZcCZ(hmKyVf~Z5;&06O!ip7U@8DB}b?T==SPS57G<&3P`9Y-{R0PdHVi<%u+2v_}f~CrE zqV$#KhY7;T+!-98d;-@T9W})=QHgL%h602H+n8hJu+$081D+(Vk96d{I?ubE1Abww z+sqxY3&ZweyqYdtt8|YfJ9HtT)tDP3gw;6X>NxP)CWs|KL)!vX?O17#>zC7j}6#Oq?LEI;~$cncia~dz%;bgmjON z+9q(dGB`MQwS?XkI5b8g3fiooGV)Ia6Z9fW6pJ;(L%&vf|QS#_V*fR3aKzV%^|T5?zco*niLJZJGJ zKZ$EPgiB)Z>TLAw*+ZV`I98X1d&(rzn``dW&yLfF9d3Kq3>6=rO32$o+aLvhk&cU3qJPtD7`u>m^UxnJ1d$e7JhNoa$(*`Dx?gLqG%v5(obL& zy&z5|@>Yg}w}cv9pGyxBUI>!%$^4a}FMNJn zT#8=Z5vTJq8T#u>kUX33TNF`UKV|unN1>RzhQd zE$DM=g)QH`*|4D11k{$gnL_-<)uCS92-Ve5l%gK!lJNDkh9j+5Vu;~G(?=KCG!vOw z`4XRs=Rxnwqu0lx7dyDXNbvn1!V_;@j}ev^0iaY9ha zEMEt_9)r;5ofL z$HmLhDMDg|shtUss>_ChESo6?$ETp!N(+9lzyS~y&-Z8a#&J03Y09LKHD0{C7{reH zWCf7#pI6rI%R893y2I*)q6S7Kd$&k~yw;hNJp@$4yX~CT`?FpmIuZO>b?V0y{$|UC zRysJQ3pjr%0BuHju#kQX1F6~mF7O%fIu!034)6X&cB&e;`^pJIfEy&4WTTYxfs>6}CJDUGmPDW(ER?pn_MUY1OMk z_qH<8f6WWiY+M{~{|@&2-E}-)Zp-B_T0M9~?<$pcd*UA^?;TfaoBYJCxOa7guUDiS z_N*4lHE9_wRt{0~%5Ae=*8aBq6NG_x&OaHVB9Q3VmtQwK{19vyZdu0?B<15%3%jUH zx(&rVon6_DD8o`#ZA%pGYqf6`)jlg$@p)N)=FQ59N`p(=OYfO)R!`E+(owP=Q)^E3 zw%61GK1{85N!ACqf4M29CHLX4 zhvL@EQ1ShU>(4IBjb{;u^5wlg|4BGle|zV`m#SNqXv9XY==3X0R2lczTF~`ZH)U`R z7>aV*Qr#=lKeY>l?9gHECaRb_9Si9hdq18o(OpOrlw+<;szNZQn;p`IC33=^jLB#+ zWLz9@^BtUU5)AMuVIlAd9!?ZE20>hwxO89xh6p7K(}ei7<9%A3X0k?dg*^$QxMT-K zRqB?_0vUXKn1aaSuTOgg`S%AxBy3N*YSr?c8#`(AW1%G4(QvbC-_dwKW=!++jL)h> zsQXMN0j(gkT$#LAn1SSjJM5B8nVc~b)uu;u?zpX=D@AHObckTWL6i^d;YOjnnBy9& zDr9IWY^j=Mm*&u^^R4 z??1d)MU+e^LU;F`q)W!!H3GNTE&11eMT{Z_C%dWse0p6=Ja61=p>>tzexG%vyk%!A zcZ@0A;PsWDEY9&vf0Mgzz^IUXm1=BRAEZpo9a0%7^RtE$xa4CUkgx+P$->_hM@S~m za2r%#X;WNCAHoy;ZbTaIn#o*;6Vh&Ci*531GbCTi`<9snxima<>7V|*^Epk+yJ!Dh zQbg}>R6LG72ALsoVT`_M^cUJhE7x=VHUd++K5zYkxVdDxr6Mh)2MIKv_lB z&p>ay039_77lN%be^+Ja|fQp^Gg%A>P9KRss(hKsIxFC0? zFOnNizgQU@^fN;OsF)_y$C}Z}RHv==5e^Y|cc1g@_=35Lr11Bb&T~T%wK0UI+XJ{z$h~*(vMj6O4e?=Al zbh8O0uSoW0nrY_A^!4|b7XN8uvxm0& z>su$fDrDWcHK>+HAKC54YFHa!kuA+96=R81-Z9mpR{sFyb3g6ec>;?5BoefCq&Ot> zU&@IEnQ6|LaY~js72`+*xecd$na~kK;BfljHO1JdwQOQvG|WDN%0m4w3}ONDK9y z*y5o;bEEU%_c>ruTD)kL0_gYp#*e=eoN@zQ>qM8?ZlKr*Pmb@H+ z4hXhC$Nc47HtgD{)o@GtlyFJ%-xJx9Mki}9EyNRv-b$hqWDWt3Dk={dHlcMAiUW8G zg1nQ=IqjgPoxpVAJp~C{g86+gFMBe*^-N@o>uEB$*!@1({dSJqt>RjvU*j`*l9hy;^=b7mZfm5T!Ra+_tL$mqo|%MQ*UdHF*CN z+od)VjcX^}gvFmi7f1+^0tR$Nm;n;l`2Y*^hG@})PX51rYDPSf1;EoVh`VVR;OtnN z8HxnF&-N!geDO8>>ZHfaaO{IOm3Dz%tpKbiKj*D1CN-Mm+y!cB0Rbx~^DxTrQ&Yzpz+xsNPXfU$o z_2kNRQw-73lmHqKAu0%uLQL|4(Yxh+ETz*K)j`m$0)$QrX;JK3_sB8SUO{>eH6~tKMMcQ0Ze!CKWW5}o_*tEZnj?$Oc*DG& z+E(qWRDqIx#kS_GU&dml*rh1yKBj0nK?hH9ypM{-E*V?;N2Ah!>925YiE=i00YLP) zsp|fe5P7hRj+}AtMwNl5)27N&^gqbd>*|~|{2QE*_Um=dP0iw`ZFvSVl*xaKop<*s zVFBM{AfNVX1Uf82&&q?QAIH8H(T1WPWiGvp-`;oZ*)O(W`qO3^*4V%TjU+eSPbY%M z<+r5rQ@YJ&Z$7m@kL{7LUzHh|CRxj5cFa|}svz~cDdLrbU+Fu)nh{qSfFUK{!*VSx z)_~04BZZD6_`uWP0KA@|V;aN~`jMQ45&q-4r6Tieg0chRYGHiNbeJBw4>GKq=dXU_ zitvQNtIID@bnCP78g}XE>VoB>>SQs+kxSzi?iy-A&5}&Nj-~F?h7mV&ck0%9zn#nj zmI(FnL;T`KAFanq&^A&+vly$j!0_wr=Ym!o+4LR77_fF*^L0_U4}6rAcRa^Kfrk}- zEi#cE`KL}mdk)m_6$}cP8xRW+GCzT*Q!j=|zc(RR8;dMN4WnU}>Bo{6Xjl6O!~o2e zzV*ZteKBCP>hQrgmHW4RE_Sj6(mM6O>(k-s63&ZkraO;qe^?LwU4Jhvj8SpDR_~EX zoR#?}+ia`GNrsMw+;X}ZlJnQTT|k|jq}4})FC<>($*jP9)Cg=X{Lz% z5*O;uxOgO!Gl77J6$tr*_KX<33rfwk9Cr8U1EGC_X>2_DfSC~OgQ)SLJ)^nvzYqOc z0{bnz&aDMDoGc~($NruFYT5ELfsK2;`)@jedDA}eT6BEi;*%jay7a1OnajAEhkKj% z?$94#(xUYdP|-(ELwmyv_126YR+C!Vv)j4W{>$v{c&^D-JJ~v43xEOO|8Y=galGpL zT2K>{f=x`9pXIN`eNL%kN za)XDFSFReYOf`VLri9a?X7l!Q_Tykex@M9gBzrWgZ8WFycqTi=iS$3p?Oe@Z?wI7A z12)_k)sX~$F<(hycEIKEAVG$T6altuOAE4riqb)k-7zuU59|AAiSC+Lf~bX|W&%Ydu<*d4x;Hx%qX|F!@Jy_n{t&CHVDAKW*LLPRu!n{Tky_R%aR$}9OG zXBA$O)?gZImghQi;G+;%?D&gvL^LTw32UGZ9YD#dunPeMp^Qo66P^r&xi*#wWo6e8 zA*b3VWK5E~)1=&;+Lz?-3|3dOB()vhW`jmQ9zQHL69R@oq>z?sWqA^2xFj~eJYynq_HS|0=-YEJ^<>wc%uu*i1HwS3;>6dfj}(x( zLMjg)_?c^+{*jbEdS>v0Tcj4)$NLLGwxg%l=ToZ)gss(lB z-S1Rm)J?U=T%yTtH{Ut@bt~e%$MWdBxh=RmGOx@~&uIYGJ3`4jo%I^&k~6P3=Nit$ zSGfM|i0}r>XtANbTi`@s*SJn4bR&w)M&oZz^EXc?yx%bJz@eD?&Ec7l~v+mpiGm1{$&~Vd4aZLm&KwiBA*h0KHO3y`@RcnS;ve zBQfr-P2-(HP9BYyJese0v{-=_&t#bCLzJ*-{spv=xl_S8fRGJ^4@*rZJuPRDk>p_( zMrjyC)$d53Rv`2W0nZtAW@}(`WJdiXD7EZuG65#45AiFYh2tSo40sYbU65x47m2aQ zP;~)l7~RCGKzi^pSq-SL0l-7|$$UcEZ>-L}4LCQQe(wE=rf>dzI}S5dc!`j*G@~PM z-!;UQIro6YFu<0Z`LjzR)S zh}fMp$x-%_?>r|NR9&)%F*fZK^}V|POt}!?(ETv@$kULNo=BdQ$BP!bdvQ2pYc|V& z0ti!m{aTny-BnZi4xkAmrvhg&`ow|E%%Ge zV4@RGGnsX&V=+%<%HF(Qd<-cF4+8h< zQ+OHB;#vNA^BK_j8EF_`75M*P>9)=n?%r-2u)1f49Ui%Vl_rN-X0hP%SjzEW%4rfU zequ~a!N&omSS8hjOZWMr@r898lAA&DB0ng|vPV9E5)FMX+btw@s>DFZ^#O}_>BuKU zM>iG)d4hZhP7`+0r7D9yXfPQ)-vJRXnt>>KOIL_l5!jB%h2=w4x z0+MYu8p1c4n0X!2A}LS{x&k~BmiWA~cD7Z6!37-1{DGDJ1dOI^R8Vt68h zV=7yj{U6PO_ynl>9O`Dvw+B?iLu$@LYISEScYyPn8Ii=bGnWv{_NmJHh$pcepRbjf z%Y973o|9l)5cR-=&u zpeBGBJ2FQz9GHL^WS8Ts%8S(eN{;(+fVWdI+mGk(A00tsCs^Okc{)DyM^w7z8*uZ0 z(UoY55dFP+c~?;=Xnc67?q3MiJ;bauzkw^_gHBOPo|MB54_3&v>ivdm<5KbPH-~oW zU#5gdamPxJ?#lMR@TU5#DdiI2Rmf```}R9uc1bYx0Vpr+_HsMVSaHC}Ct{d{v3+C& zL>s$a{!J23c{`bfE?AB1{(5#dANPP7`_g|uF9hB)I@h~fGPLB-pY`^zcj3XNEidRx z>rRb=&#L3z?7PNKrXHDj>~|D0=C-R&a#BtUAv~>IZpdc*-ng~ZuJ7VC#3U^2v4gug$)97;rURUcoseII^A`2`P+#cUdqH+HIm zZ*+8-uNVFJEL;gScHIuK%ZRaUirH;1Kht==s-W8l@y+?m{b*S)&WKgeF#>8jw48bN z`;KYIu^L3U&c4{oZj$z;V@+9QUr%aW|IX!gAQ=ZzNuPeAPxB*!v`L6d&4`mkkTp5B z?q52~guU~&^WiYf=g4E~K@|Tt3qR|FE5%=p1=s_o(`h|XD%WwJw=dSP*qf@wdDFuy zJBar`UrWN^{5eRxF1K!ernwGGEAQ;4+oJk^@>xb?hokM2BJ4;6aBBPTP5{0Kb4`f& z!#@IaJT9hQ7a3f70Dl zC4yN0gIyUdm`ITWvB0HE5rPqyzDGqIyVzkJ_4fSkzrkHgy{wYbsJIA<=V)Zj^&g>8 zYqVbZ%8fl*HOj)27EBHKgJWM6khAMMx6x7FusHdj&iImkknP!dIg2F3s@N`6K^n8lhh0c<30C`+Qfn-^hq zPFv{tS_1d5qf-&2eI__*kC=u)!%OC$=%gWN0{4bZeuM7%4nb0fZ{8?QOS3|Q*?P;& zVhBpHQ(Y4?&!Ux1A`IKFLUc-$rrXc|m&&CatMa}x@Kx=J)(5!E2jO4(uYN53>X{Y! zDwXt8Sq?2Bvk-W+*#4!Ibs6fFEi_9zE4IEZz9IV1Oe0~SMCQ!%DMi;(uEWn8zkl4e zguK|fyYb|RAXnm3RB3gu-K#=8L*6hbCcLs%QkmE_rQI%$5mfuv_FFGw1e1kmtMn68 zVxvC2_6t0dKu6iB+G4fM-Cvwy+=={+PJ*IdA7)mYP5foyvOKWhaiypclZoQZ)M zGPleu(t;w(K4eKgXnYZhB51zUjXomxv!Bl*4;yruDa>1b1PzV22}m`GMZYwY|5W6a zFjuB`t$C3RQ8N05&0wR%$vLm*Cn1$XGMO}3P(^TmbHc#Zioa-8!IrOhyCYK^xZ$)v zh>5NEE~eje;!$Z04Oh`zo1^)-*)!ifaoVz|6lMfQP0 zU@~edGS8SP#IoH0g(Td)m)SNT7@I4ekahcc#Rj`_{G5{BQJJ|#pn5TXG+ax0^sCOE z18+OLY2kV5GvIt0%2e9x1~4ptN26Jm^#FYw%FW~LPj<%azg7EWc>{WjL2vSf<&*Ee z&|z|JY8$O{f`!GFlN^NEeKpi#l2TC1Iz$adf&t`>IqGtZ(^)|H%=#ylj+K!pB6vzOBW50hTc^o~;2~GnpBcj&kpd}je_VNt7E78HA_3E#J56h zMV=6qRKg#*YHUSvAXVkm_~roIiWE9)rcUBJ9ii$*=X*#97e6EfnyhGK3HLAp^XW8` zC8zxG4-m-(1#_GUS97>g_Bx9_If#{2_6dLUrLtZW<-;ZvM z)3JpcWpe+Qsq$R>R|n-XZn8*+^tyVi4MEWG$iMm-e)`f;kPRq};t+GMnyD@RP51SS zD-*tOo#tAjUC_y5R$kfn9(f2|DnHqBiavHQBJA0bnn{cxRuMtEubkhu;uLrfx>kKi zGAGiGcS&@yNL)+OR6UN5PBwRuek|;iG~vf%8@y)GXW;bIP%&>r>_i|! ztBffdnG-s@SUXhOo%<;&!l3k_{+x8rOdm()o&vj#5ARHwwa$MaPUAn%Rb`HHL}Iz~ z0#fP(NJ4%2mJEtMR9bvIc|!B!6ksHRhXjB5?N_3PNA zDG?d;+)rXXeSm~s1nJb{#P;d5v?QM_?mzOzd_=11q((mJ0F2fuXoG0lWuF2mfG^Rl z^|KixJ8M{>eeVq3*e8>TfJHhm3N?A&2VEq}fMpyJCTkk=!YrpjJ;f~dg6E>>St0I^ z*E$lF+a|GVGr|E_5Ib=21wgw)VWy;1X)q*cOZ(+pZ*U6v%aHXFd$lr$0ME6_+6b;B=iaB zuGbi*iqNCUD&6}&XU12|**{)NXx~;KQ`lYSF1)*DZ;!)(TqsGY=*^XEW zU`&zqUzmW#(M04wu#&Ipn#xGrYk8hsD5uHFkE~IIK0Pvz=BdKBLjY@H!_nSkF#q%q z%k7(F*W1}Rc1aLN>LLG)d6Q3?UcXq{<8Jc6ITdaOp=ZksrMGkcLyMQm=IIg7Y~!&@ zABV>cAK?ToKAPYjz9Ph9i^3dX_hKV!1Jnk16SL=1RPBG8>}ky#eB8W8c`&?@k`}|v8~Q!^D#faFxM+yV#VPWP;yjC=%O{x_@;#{_DJCA!2N{gEPD1OJf(>vZeQQqnybxOK*NHuBIC@IAS+=JJj^^Py9xUo05`sq(PYWn)| z^ww>0FK&|Q`0zy&wFUhZy2(2~J(RT39+Xg3XPR1f>|KqV=JfqtKZSo-6K84du{zba zwFV1*R&opG?Gl!gFf+|DbM|_*U>OS$|6{-Ev>m07i!ACHF7dVdtG%qV7_PG#TarwX zQF*symbaw(xn4_RQQTR^=7F#M-jb@KAk(fwTSM1pRLiz(E;WD90jiIO}JHrd-*_VAjuUr~)j&W`h3|aLm3Q)VW z8VC-IA8w5M)#z;+sA9P6e!S_D?ggeEPZO!=f<@|uiA%-X5Vy}E~P-BwBTH=OmiolxZ^Yi*j&5@Rs&K4wZ3*^CXj^vUMZcM1iM6>|Q`(&U;G zsxG9+1>ewI^B4}us=$>PHddg5%fjWZYK)tn_@%CQLW;W4fSrpaf!jLD=kk`HyMX5cd}dlYizwK()PI5uYQ1*>HQq~jQuO~QB~MoRMQxb(i4fVh3CVb*S5tJg%-XG3s$<#_@`1` zD*qN2+SI-l*6TZls&7ZB7QI_4Gyj?fVa&%fBWwH&1yURFi`qO;b3TTe(>IL9rHMNq(gw9_hqD z%!!XYivWp|V1{If0t5VjVt9EZk8#Zq-Ig%KeYOn_4l6&8;3V`ZRFcL_gG$0X1K)GH=a_nLrI@){p>(33C zAg$c-u$3cQWzYgZ2kDPOjCVj>lFvXYc#beTRBPXx1B;vkVeaBcVfk$C(9&a!KA|{R zbqpNhHotbJPbbqwxPvgl#ez4edRD3I-2gisRpH*ZOs2Aa)QB0FJWOfW<3I6eC008jqR zQTFMB6+vh5?DJrf6|@7}4Kc;oxOPXG^Qx#^AY?|uRM1|k7l0?_437f=5QYKX=>+pV zbIp}F9vTCtr}9eIKrp~(MKa9&#eeYtQw~r+OWv0SK<*riS79qpyN>Vg!H=RCJ_iXz zC#F3o1DIgI%g7va+7DDnC;pQHY#5&>`k`Kvu`Gjp7SNrwz^&Onx*2m^oeT>jo00QI zoEWy7tVwGwfsf*lnF(DRCq?BL&(m^nZ-9TIi!}yeDaqj5+2g1eYk2$pT(qYp)ykgN z{Mcn)lWq`C)h7Vx$M;Z+8^G#Fd&T>f;2er-8szHtR3Uc`j$|@|PEkr8Fz%tM5J8GT zLRy(-6pZevE=$M~NJ*cX5n1*>c2NPv=}9$O19K@Hx3BCs$b>u=1F$iv_?bha9k6%@ zK(ZG=c$1UY1_Zp{$Z|0h!``v!^Q(Kqzrj2uD$TVm53_3eh1~5?ZEz-bG!O1O))Ux`0c^*BJ`%=<2IOMi zXmgqiPEeHR-u)nsN+x$}ahi)Rfwa0IM)CdVZUSddzy5?dFS75k%78G#OzueuvYX(p zf-;T=OLUp>5kV4|{uby@{lR_<_cGF2K1bPcQ4r`gA*}GBO~a zx~ziAakef(64^Y(kMJaaKzo)V*kvZ=ZBa}!pE>tibGA=7#ti3AHJKfd-67bWv4oGp zeU3CipMMTmEXS`Ch+B*yKT3_;2ZSpvjIe#|vj}%r=S8B(JL{xEG~%%W*S#(9D|KXMJm)F* zblpnGw%4HHsFq1IkmQcBq(5Www+)!Yg9UG(m$r^85N`YvCg_H_dFlUI*!<5bg}?_` zHim7@d{?&eLjvhCnwj{btQ$rNtG<5;KIS$3XeTI-b|&7>rVwW1@A8b9-3%k|QtPP?PjvIndheVwehe#k}7T)f$dI`9Anf(IAA}v{!pVTxpMRGx}}U z!~{EQ+?Ajc@BP2c{m%RTIV+($*V@nZaJ>+LgmTx}K!$e8$NKz2!`|Nuo_=syG%ozp zlY}3Ke?{X-^8;Ceddw8DgsA0bCd5nvnE`R#`gfwW(8A{%!9COiE4rTpK?B{ov#fca#;xU25}3X8~&p?0YvJcrf` zH7J=8KxnnMoa_;4x*_RFFq7d%YQyd<*H;#eDc$bj8CSVKTQsirlrIasof~f{n!K~y zR3d(U^d$r#CgdWTu)Ry;V~nyF1Ntv4T~2(mGh{RU>CybH_s`*CFqxSKRe6F9CF0DQ zOnpemmNs)RQ@Jy!Zl_DqLg}K|eM@|eMK?hvs_TZslw9r+^mp3LkSgyO8Au5$UNSl6 z?J389MRP!ggdT)p`;Jo#H|VPRTj`nX4bH2@3jbA>eh9h!RN!OS{ZG2%c;0xmyt8YC zO;seD$W$25@k|B<%0nLzh}%>AF)QdkM^24kL&kX~zCJbm3IdqfHVk|aSr&^gi1&e) zdN1X}tA8b?TA;&BlxX6(t8~l-n=|w2Ex4(%k5FxIpEQ2+g(>qBTHxFQ}DqMES9`|3$b3m9BIvsQ{jzmd!W|aFzKHTW`KkoiUW)Y|n2LVwdVBuH#rL>OLaKF3;i|(0oT6_!WABaGwn>weWfpH|lF{~~&0eE# zpFg;SiJ5x77^NPY{doZ$EV=RwWHT&m%`Is|nx~@k^qVA4hD?+x;=)3dshks;Y%XjX znT%}fZ6am#xBTg zlPlqQ*u9BJU{&%>H1e)_J5%%Z&-X9Y%zuBGOqWY#G?T5} zJP*qnxQILD1YZ%wkUk)>7eAuJs*MTu08n*aEQl+U0MjhcyXXu#P^n2}cV&PDlFiV} zZYgw#z7IsC!%1mpUKwG-%Je83hHBF(P)|T`YlbH5fT7yxOh6J73i>tEb%sV4B{PI> zd5_L+_0cBZ|fJH-a1d0o~yTm-|4)p;V8eo9w0=tYOc2~rQWO) zRnqSZ7zT0jtFXjS)}r~*d>Y(!Ja)-2o)NPzL=hGHG|ZXtJc)wE-FSUX&YPp^DfMsU8Bt zIoBtw+-OAqd10nTycDXxd&IG52ZYu($Ms_aCDMEve>l-$(P7y(npkG%Oz@EWqW6eN zxCZ};Gp}9DpMVYboUU3_QrKe{>BeIk#hRbnq!8}>`<-j0Y45$Wg%gT1RPOQ={+Sos zCHJGU$-=RdKAZ`2>E(HMg&%kLi9N(y3a()}CtoiZmJE7y%tUhH%7C2Ol68k*50@K( zIS?_rIs7~x%u~Q9ZF5D!yNMvKZf~gB(+0c zC8q5=gQlNdKz)Fp<2~qTG2SvmyKIqRl0qd$zVlR>qM=LMWExi>k+XLr*auB{B4J2aNhGBgwaAI_cnucL2wfZTyz%;2I*A1I4-*Ywp;E?ppVdItEs~)VQuQU$8rV6r2m2Ft}8ZVroWP zpTK(Ah*2ViCKeQ6+Sg1|AUv5doEi{wa0jKd2&H*HANcvTv%Vm0zE?wG+UI31vJ{CS?7MN3o*AIzf`xmGjX^_zKr7b7n9rXEdLaCA*u8F*|F_&&)z?_^-7vZ3`X9M zxcAj;u~GGL--FJ==E>9#KH_^q$9aSBTIM%yxX+}B9EIUhBb5hp5C6r=s_JGZ&DGWH zq#QEX&XcH;V)MD5EKQa)W`&zM^}aCoxoP|2qU;O;f3ft?4CZrW{uQw$sq4XKCCt!Q zgnZ#zqgMxM_pfC~$bv7qBhFpJ2N!-3TQ!I{WJ~xQU0qFFoeIfey};RF=6`gfP8>HO zn?Y_wq=RPYBiS(VH!DOsPkJ+@{+W2poh#y7e_LPAJUf3Va>-=NIV8t7LQCKQ&EK`{ zp8BJKo3T&6h<^)%D4+e=8`q(Rg(L|6nPc;cA9xjbI_tFY9X|T?fnySTh1ZQo1-*VI zkJjyiS4)X^lvjdWI9iGY|E}5I!Hla*?B{uXj5Ya^F!7}K;O=#k`IC2!rb4Ui-rc{t z-E<>R{b$NypWwgg(CVX)(QHSZwx-OO>vtMf(2~DiTgUIlT}ocMm!caQ*n9Z;`R}E& zpHC(QnMXHHTpn)y{PXka-d{I4{_R9d8VIKy`?>CQWvzm_SN@;r;q*cd`&4oQ^e6qRa9a;mnOQ>Y0gNzN(MluGF^XBC=~kZKM&ziT>3rF{4K{qy^K z*R^Z+uKRG^&)4hucqoZ%Ccg}bUme8Ta$7}^{Ta~v%g|j%02jee51NK6LpxXij^)A! z;gBD$koF^><6V&BJVYQ5;ebcFGmv|(gF3#zBDl~f2Kb;r;wm@vumJLE0I5Z?Z6ZnJ z(a;fQf3isE$6OfoCE{&7x{#zr#-m=-ByYK)2J!G)0?bPu<^|&?pNmyzVDD~nC3+Z= ze+0PewUXaR8wYAoJv97%8uA$zMMywA72z*3Fb_mHy+Wx>E&OQ`a!P=gCrA?t@qhhb zduTsJ_#0{jv}y~~$X|A+zpbe`*pguT$d53?z%DZoRDYaT3$hE3(JGWZO;9*QMSa5m zniXN7-0ui~$* z{zXa2-&%$Yvv#SAbbIZgZt-b)wgOU5|7kLjz?A!Q8RIc99g>g2*UyoV0~{poLbE zh2ComBWX*sKugOaOWW6$4$@Xz0|fM6mJdxg2GS$02o_CX2Bo;1OP}V0D?mQ{|5j71#BR_U;w!(b_S|=@`MzejHY(- zs%8c<1Fz+skF2il$yKmCpuI3ft?;XkOD49o)IKYMo7@P>9qy2EGS{g3muRQ)8qqON=vKZFf!pu zJgKGg1_dQk+kJglRQ0aiWB5jl!?1C9W5DKt{1+Hi10A&$)Y*qe&Ar8`U5nOSSB6Ai z=@koK!$P<6#4kgS;=)8!uCHKj@Xwr2P_gV5mgb<3!>9PV%Vq}-qtG@BcjG(~cd}T@V&Iru>_1 zA|4X$<0{t_RNLYT#j@NLV&J8O-zE1;Q>E=_2>Uhu3|!(nNKir;AJg)4Qg}suN&ME6 zRB>cOHHPT&C%54PjX0LQm$S&~FYzURs_j6U(ONI>BG9-LxKfa)6WMzAXL$Oz#|^m- zpMWX$G25?M=aH}8SiU4$cZr;qV(_w2M?w2CTl|I}6k2e@7`Fvuq;;765& z#@Gi0?5{h-&&(O#7kH&jO`LU!Nn5M`162`x3x^yNM@Upw%8~>C-z?CoL_+0c7xy5& zwXZmi6j!+xB2q|a9M(&x-DM(YBTzDyvztOz{blcm^Er@`^{T5x{pSre`|;y0G90di)7n@@#P~m-0P#Qf z_17v}q2j-n8kQr1_j`$XKDVDK9N&Z;cJQ`XwDDFW3z@RQN$CQ)N!d5DP(go9!DFlQ zOzv3p4PAXRKVs}fe`ODqM^6sQP-k&zltm$vq8OiUlneqIZA%V-K+xx$GjVEN*jsp31-BUKEyNHmSuO;z}FKZ;ym8_)0+4N7wQIpUk}j@D9OasrJ(pom+NCrw63_yJrP zpiYiadfUGV4nL1Fy(Y8IVslJ3o5{>?YkcqS%q6+#(;?^v0Q8lCP2p%tX!Fo)XFNOb zM;ChgHbAyj1Git`!^nUzT?nBimlsy^B6fEu=!}*GXx=U;qi47E$M`A?6I_p6k5;~_ z=&N4%Of&Ns-(ai-r@tbEMYopaX%aIJ_Gic$CbQn-pVyPgK_I(Jaqebi!v&0y8sZzK zr`Lf10x8!>k<5h1RRZ+{B6bA;^w0AuYEAE6_Zy_UUafJtJotsG76;O17h+Gjix(Rj z@`wu>57$EsZUAu+3&tEVXA4XH7uSUer;{S~bY!)FcH)Hron_aKzof4&PAnP%`7X6efGAQxDpkPm|H8G0yCWRBjKayG6i_ za?thwe^)w9uC-dn1SlRD8_CpC+Madv$W!KQ2ix{kL)NLs1@_dlaaP@B%*R~?g{7dT#2 z7AjU;92ylll2;;X_W=mE@0^p8NxbbKKIoE|+SN&cQXAdQ5t8L4EQEkV*RCO@>vt}% zJ_0*^8-K}6a`{?)dl{pW7)*SZ75;1DZQ!-kHz;dCE;}&f6H5r{(7(J;3(eja0}MAp zm|N}%*@`?RXj!vZfhpMa{>D#iPZnBpPUAC1C;6@z;1AI}p<#&TsAWGWrNpx|SYtIr zwSK^r0~BO$*-dQB=&Ci;sl3S#Jzj;MKs}sBy^+=K*uS~-9CH5Kcp`+N;zwkmzYiW6 ze3PNJsVm*~A}is|V9jLNesgP$sQhDitwzfb2??1UHc9<6YSHh??SS};jF<0bZEX?K zWe~CUvGWt+TBg85$fU<_PuzKLYuv)^_zW_IxKkbJ)cQfC?AwOWI)SenAb+35e^e?d zggcWX_O5>&QyXaj?E(hcKO|g6JW)TMGDwL2 zX2j>q%&`i*WTy7tyHMkI-1SfSBPJ}jiiz@?0TeLGHLh1B;nR$>pMMdzYBlg>#TYWm zEOGHvfYb6GT-pWfr^)^I`yRggdzj_OmxC*gY;KSJ{DW0qpcc9F*tqRhZtE@88}({@ z15pdc1T&@i?w+R@W_T`Gz??8*;SG!ZGiTCHWcly1Oz+W?=-UeVA13=}y0V7Mo&MhzLM4Kw_%#23_Bw zQc8saf{FlFA@(N&DMtbskU(-gkR=K7KR6a+3kweo7f5^-;ks#%pCtj{meXH}n6%0* zxirZY0j`1+syzi96mwh{5L+VrIsp8_yJ89QlML)HF~oxecS%H+R6?or-TiOEu8NX# zE1@MC8ftV{oDdeT4{zRNU;&{-$e64cqp>Fr`J0Mp<6}$azyu+Ork@!Uml>ju*DGZk zjj_!XGNg+1Cc2!?<6~Q5lQ9gCE0dMQ1Ig1kazs4gEzrZqzF|o0Re+h0kvcOf1pqM5 z!?1|>P9ZjWK_4OpUolbgLRe%QW*-qcCc^PZ(7^yHzJ7jpn_*vR{?&EPkp7t+o|q>K zpaPN08*a7>2mO_F3eT7P$(OKVoF+1W>wuvjK0}d?_y!mz0x(yB#5xhzCvw6KBUc#M zdImh+6P7|l%~Z#>LpZLU9FH81cRxpFf1yGOMCn=KfAvHmAG^-SwE~Fv)x-S>F*BQT zwtNbNud9c$z|K^%&aj9GN}-Sj_X3atJj#p+>YkA>2Dp0D=Sc=dR(40_3qh748MdVv z*{@_ug;;=uNd$mIA!_^ETrA`K&=`A|TwqBncw1WVZmi&=!r8&wQV1GC_89^|vOQUl z?mLLSE?-xT1o#f}aiG}slC}FY?AA-g0Ka(qFB~n`E#!`ri3nD}#PYsFKta}N;}?Bp z7|ayQ82+~~)int9#b8(ZmGvro5_H2)329AZdBItM-(V-Q3 z7#|);j_7}tiCYrFn;J6V{L@W5@i5pM$HicR;5*K1qN=RWn-oBTm-}7>5&PXRJoJhX zTLkzk;r)FqLkp}daYEF09yXf?vSy}np|t(uSS&s0r6p?) z^bm3PnOA(I{Uf5~xi%OZq7RN<`9%nKq!s+4Nkl-awr&M-7`PD{7u;%2q}PzoT+x{D za5?~%IZ!pQST0zEgI%h=gJHgRw&N#q|BRjU=0mK@P%9M4P>MLIgG}s9A57qa zg8Fg$fEX+f{gsI}K_afJ66z&Tbu-ZaK!e3Fv7hnk2M?eeh4rUgLC5E=S1w_y zy>Bqx!1pg*Zhs~fC^~O<03^roxQ;iK`t4152(mM;U8mJ<{f+i|SX)#D-j1pZcqsL_ z*XaV2xhs&MNk@oDP(Q38Sq~JOmTvG4&`wpG+)ZtKumo?PXw(TIU}ze0x3LvWz>WlM z3dYadV;4hBK^LvHa*SxJAoWTyF9gS00y|H|w`bARw!!CxC6BHrvUfSIS>F=HAa;=9 z-b8#t40Q6&&VUm0H=DV*CO$;dzwRJV9KD0kJ}OJ3x8#$sB4QOg7uQVOCWP$ew#sgT zfNlZwsSrC$DRr#8oy#i4B>*k;lA&B^cp7$|kJut|P@{oQOOuWN;7s$(%pLB45?egl zTU60t^>($C>ARilP#i}l^N!Q|4CWUPcS&LMeL>?Sr<9-vJ`Dhejm}aFP0dpLF(P!v z+s2doB)9M`ex*sS&1=X^f#A$Gz(Iy^@!_FA_YySk%mAocaEbg~7P@p7uiM%Om(D%0 z2N+6qR6(*Bdh<3=m7oU_l5E$G{|_wnL3pt#I1uIn)>}@u0}`IUcr;{`c0Wn_#BsxQ z25xRssC0W8BuNCtCqG$GhWgNSdRIXtCOWtsw)Vp}RpQzNAIji6ZE)cvuH;W1>gQJ( zpNPvQN{A2WC(~hV+C(t{P3qjPdkeo>54LNcuJni^K1j$Uuh1WqzK|$$z?LsRsC2j@ z=VH)H!X9m_)|1*h50HCo>U^i46b0*_tG>OY!JV&^+|GSE!+ZMo&(oh$JWbx|jPtm4 z0H=BnT0ss-?7|l0(QyJ;4 zLoE*vrP5r79bXf%Yc$DNyoadI2M0(z!ejH;l4DHVED?|3SG*BHGvnJ?MZE_nd!>H# zBF1EQ=HvcV_Uzs;6%cw@uQE?98_O&JY$J)K)Lxr2xZKNkkIv!+Xuy+*kJayAq4ZzO z!<7gc&jOv!!Uyzr>d8V7hK2#S16kv3aZSDPlYT9jzK4K*oW#Ax70}80a~loqN0hD| zO9kR~iO+~_c7-5#CFUm`HJy_s1k^(}td2+EW779Rq6NqT1ghYcFwsK-4=urCYpAHi z1P?+9Ajbe*lW9it!QDZI4)?MB{dm1V*@EhLxI6syu#16!nDRdldr@LO`bXm%;nfTg`~Kh=Q~XALyI(K}YW3C~xpM(Jmsa zjY!{pN1PWwx><|_-ZNe1U;7#qhj=(%6HxYvie>%=VFGnGwoE+ul1+Reee!K+FkcJjC;{Re+_?J;j7wD=0*MiST7xSFMd3R2##^bOZrypRZJUg zN10Uk$EqYSRx_^fv701G06ma=Sw?%c1=3>KBg8H-UClk~j0rniLt#`3fWUjSKb(TZ z;(l>8hG@_yXM(g^W^jU;Egu@?G{BeNkC$uUkfDasEAM9nqZfilO&Fu|zdr6!6+%q& zqaI6f6Gk6$cOUo*D&>!|?wHqa7S3)Pf@ottKKQy&r2Hu`{F5=`Q~H%lav*s`CFB_i z`=1E%(VckuRP3`IcbaF%*r4&Ygg01{|6>xa_!F*LaMg%4r`4F@xjNn>J#n;KI3p5Y z5la2w<h81o^QI+8NSjjx^nso z;+ER-ogwhUjt?jEE(Pd(%*dNmV+_oef7HMe{ua!iI z+GWdkcQYN&TQ59I#PRisUA2NG;x01GqGy2~n$4*%m>t5aFAquYIQ`=*_eV&B6efT9s5X9uGIjWr z%jWipqo2Xg4*hrH?1SC!SJl-=-%o1ymZ0^0pyUc`PGq%f(!gMelGO&f6@h zP@Q@F3sghGzTRYV9De^bCQ2!aKx%x4kA9FH7VlpD>$_*tpE?9$hoN@8!OMscE5d#U zy13u|G@CsMfWYEdaE3V^*E6KvqG{*IWafxp4YwPn=Mc>+2>=iQU_5pF_LOR9Q<6oM z`*%AKO(XM_Y!9(BVb+IC=`LMVI6+aLMideKEz;K`hZmj^#G4xUlB3XsN_=}EHQ704 zsRMNJ(2TZ@`S|zfjJ@lJSA~QNi`h88t5_==@umel#;EG{pA`=?oOEF2y$A_$H4H&do zw1JtYJ~wD&|M|cMd1|~3y3tR%HG=bT_>v#E-SKB)qXEj%lL!Wz@_SU1D?&OpGwTK9 zYvP$aqu(?4v)wGe$#K1=%fyOa1@_x=l9icFJ40mq83{)q(qxND#q9~L0x^+VUNys(Buwdt;r<N*(poYkXz+VSf%qo?Vq&PCst;K|qh8g88_ey37cMUS8U`f>fG?Iv^8^3`vm z6uY>khcGj?mAAW61E(UkWsx~jNnDGZ8~{9t9E|Ip21)Fm*;ISoz%EnjEy@-y2l(xO z)0o98MXW@s2!#*=K!SzpxVQrAU1TOqQ+#VzlWUZ_U4Gj*dINx9le@{kUGnAW+sO-U zeL7jp>cvB~S^xvU95u(DDh6ZCxL|E&?Hz^Vq6`fc6$wOtDUJ*V{s2tgXrfM2G{N&B zZ%X*JM)szR&&j=7FFId!KEeP(B|to*|4Nkum|B=8FG8AO+3=KBT!aNJ zJ4M`GyC7sGlGz|kL$vxnaqo^q%A`uoAdHCGKg+g&D*XF z0OTv<+^-Y@aA`Ye4);^sx$e?lu-h|L7~Iguj-uP^@@R4RI*HiNhkc1awGQN#Ulh8i zEw&CNJ+Z9tsk-L0dfo4o#qw3zPdUG5U2u-RddLJ80>4kFeZMxbj^%$<;!@|+xxYtF zC(bSfgA^#vEjqFTm2S#x2E>3i&3(V_;(q6-OFB17DmDjVFu~2>B?IP~8a=8HDTvTS zmJNi$aqxCSIkr}z6Y#K2)qNuN=5bkQb0?OBse-#gYt+{9zN>T+I!V+ey|)b%X1;0! zJ99qa9|Nu<62ctuk%guqvHENx{seJ-Q}_92~6 zuZ|*pceNp&n>>=W8}KZIYq)O)u6Tf6%r+GS{3LU>~s}fTquu47fa@ z8AONqQJ?9{7~%HgJ0J`c2z!$-g8=59(6#U#PmW%Y<;6%L3H54~jeAya zylpbj=`98*%F`q?z|i$jD(pKAaTKN(A44MkT`83_wrH^;Dz8&u1nu0ovR)~0hICP=s;aw^j-2P8Gd zML4)tf#rb_lbcz0o0eZVh8F#3G(B`Hq-$b}!=85vfd2E8?iop^jml8p;hdbsggu*S zOtu(Tqw{6VU*_T944&ILt z5Jt#Xs1w_%y8{_Y3}%k}_+^NPe<*c@4oC1@t$U}aspXSu$9JGQ^98wwI7&cQPH)bM z3&h;{KaO&KMUVTcWYU1j<&Cxbj(!u4#iSAG#bs&rcJ@a}3#k}H;F*<*PVAlrp)JJI z+IyS#K>a=`;K-K>i1sNQ`xtZ?ySl9Z6?E(?C$;@cOg9;R9wzi(c3{?T8hCu?7Czox&L*tqjK<;=}J z_|B;Nhrg4%qpxM3hnR-TJJWGN76IAPxN^6D#W~%7XP`mPMptH;> zbM8gCO;h;J|7Bcp=l~4H;3sI8_n*&B6LQ31ai?I*KZmn+zqasFZRMhE zQ@*KhbQJZsu(#)Aov1{ldS=HFGnJ9oVj78a{Tb1s?38u*E+(XwhnwSp!vLnrMph^p zGC@OWjd9{ivr|dpJ9veHOkQwdb_6N&NM&{kBg<`!DLGcsK?F9D4bXjJZbNA{gAWHp zP-XmueP|ROot>iJ6-UX`esu3W5w6~L=PHwVAg9I5UQ;z08oSVC*9{M8<7m=Qb3`T- z$<`MeNXG2^j2BBxmvolVuC=>|&Va zGY(H?8zsfsw%w)K5&9W<#Ai$5oyId=C%BpBv@T?di`J!^Fi&7YzxFD|6`|0n>Da05 zCUJHFylXwnxEvABg>9pOq>=8GJaA03M=YmTmg{k#wKwg0Mf_y1cSa793+@HMiGq4r z$6O?zc_j~FTiJPy2`YAc*#2zmh273rw%4Uc$j%4Pf;^S4%z7aoXdFDqa`c3Wzg)`= zX4bEkk&e0>z3qN}e~P75(z~lIuZxnu8Jem1I%vouO3TVr(r>-B3V;~^;0eGM zo}FOjV7P-L-4b%ick0%eo7J_xXXzk70VMlKYTy72&CI_QbT#NV6H4boLx8gl+r^2z zGyo!uNsP-pf3u+?mkh!R0k8s~L}&5(fw>R>RtoaJ&ZJBY!g$P=mkfcnGi%S77!pfi zO!MG6=*)But`a!=KtgWpc84c-D&7yEvqp`rUdc#%FR{!IuoW~gVztp(%1cpW1+qcn z6S@*UBQs;K2D?e5y*Hn=v)d^2GxQw6w0 zaF@QTe5}1C{KgD;*1fdiDM$A3kAGFh19C9fuCYOA@)_HrfTh_SLmlsyc1sq@H+hDM zCo(lN3pTCds~bc7#KE?+^w$zwH`=*X&QVtDV~@PD#HNr z5xO@P?AWhfssBpqlkDZ<;RRt1^tyz+iN(1IxMhPP?ym7??FR?fvtz{kvTvSZx>r9v zaNEh(WjTRlmVv#bvcp}#QC9yfey9^r{tyI63M!6M3EO{+EKs+%aa=%0T~1{9@3S7< zdZjFI6)Q!{a|#W>`!Wd)z%>o2dWBclhnc8k&|zPDU`((C1tbB$bjGLNQzKY^2u6{; zW`19@J=kvwnO-LcKX8>NVJYycyPhCluU~?S8J&gg8=y^@ zF&%hu87X5-EK$jP6Hr$=%HyB8>UceXz&XaxcIzDS2t=WBw(m&+eQXaxiDaaY2iL_Z zNtFf-uF4#JhRS>&{ClFP70Rr*5~SEYHkE#+Y3Yq$i)!uC&Y@p2GrMhJCH_q)m@Cz!0!%Ev(pjLereigyoC zYMP#1Q2<=H+3B9zha&lLFw6GlorL~(hu(+nf`JByU%g!2webK~W<4~vWA|A>z-G$b zJPqpIEz9j6#(sU+xG#fgYTFylY`_@Nl^_{L!mF!}v`5>q4!nw|rdjM?&Dn2!5dlSCK<^-c_{xgWf=JP*9zS z{_E4${Ndl825 z;G)0Qk#+otgsCYlH6w$=Hx}x|8B>JOg-FpSmO}5eS?{@nFS62k%3qVSSMu~WN%hk| z9GP2rh|@XHqyABd53lY1MHaU;fbY#X%|#jCYjQpuo(hR}UImhFh^y=%SqdxFDbhc2 zCM}2aMtRn2bT8E-T1?gQuAe?X674V-Z9Erg_BmQ^w0R2+c8Gxp+YJvCp4~$j^$-8( zp!`07)}@veBVjTa2A6gmx-`V4?}5+x{+pqPe^At&8;Ig~G5dG!i)iLE9g{hF6jbC~ zRCMsZ?y7zEqto$o(()UTb0NN~v*MC#*N!?r=$r8b)7w9^0dYp_t~+-#AhuJe3+C$* zD6Evx`NL{+$#Sy^NlauzK+E6AbD6J%@8*rL3oPd$j}{beF1amTEkfYJ-=I|IOFc&qhD{C^ zZXOgHnN0Z^3iMqO+YfeEEVg}6SD-;0D=$2`Io;#2#IHDLFm#~8h8>xV2#CwMaLT1A zoL=}}l#BkuhpPxO@#0P0UEWE|2OU|O3uV`a;x{UTH)z}TiC4`W|5u9a|at7eD$$daPVIfd_Kh7ZF_&r(ksmpd5M=4kG6Q6!L#Xml5QJ$Vp7; z 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
  • ^;b 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

    o#Zh)9i8Z=S~EA#^6Wa;NOLv9tEzI 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 y$?>ITIg}kY83vY7|1e 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%0Dy*z3Pi7RFHX#s&;@VaGur*J!gWy_R!sp)?aCso& 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

    SL8iOH)Nsd82gS%PeK;pxl@!J{Kg+ zmq^O)D`?aer#e?Pg3|4YRYykA9l(_kO?+Uh_uT~HTH}j-YUfj(qt|&g&0`|B+~bcp zzbFOOboL(FH8#EnEJ14iEjv<$K6G1_9O>#3jXt!mbF|uUbko9!NP96}J^aE~=4h?+ znI3)Uwb26FIM>|KS#&$TlB=+cC~XS0&a;-j&)7i&b>TS3WSxq#sZk1l#7n1Ldu3; zU%J5j@6fSxpWYP9?-6jOxo6+raqE~(6u0V_ysYz@CqL~{(bwfa-7E6uZR~VV_S?aC z({GR5X#P0;;&1JX-)~=DAlFX_U85kp`FVx87(TR-bN1b$|4el2)bh0%s#DzByBQ>N zd_(^I<^}PrPp`LhdWpGpnknyl9Sa(|_WxyJ|KNnyLf`*6JBuuvUD`SO8nrRQe>aQU zn0EPq`Wh%)8a0cbvG9sVeJk%-xHgvz66yrHy~IV9pMm}J=QJPBYd@aJoSt92Hchr# zz@3S}v_CM^b<78in8t{g_le8Kf>r5rmH~?n=N6sH7F`}My3Q=R|68OImprYOyaSee z&n@|tE%n}#KSX@fe`5R)aXHv(IW%DT;K))qW;r@!IeKO}=HK#(5y9jh5NQI~UAI5| zosG7cM&&He)-2O7OEuO2l=?w5W5!AGL&6L$X{O%C3P>MWLGdVd?&2@)1UU3cXTvO$ zxQdQlc_aTCL0v&{9ShHiTRW_1&(>;fjG>su?JK6-s;g@|!~WG>AB1!lCJW^m?n`am zrax)YZ*mDp$j9pjAAQ`xQZG%f#9pvJwML8s9svihiwS#Oo_#X1zDZtJAWjPo><`K@ zrRC5lB}ev{2&sDBH8!GR2G8BVe&J(Q`It%`ILFGRXa*-42>O1GylB1RRtx;enTKY5 zE*`=Cp80Iz1Yk(~;`OD6p8#ke2$h=@a66Wz8+7c}M}&`aUJOW}XLa2j8ns$`1u&#* zNZ%^i30M&#@jqRj$Jm@bb$fLWmhZ8b@BRLZ?amXx5Zfz{2j%8s#QtDD%wnczHa-(S zZv}k*@i_Kp4*!qtck=s9$=m^A5dT-e4||m{L?2Flw>n`zAoG62;tp`>9~Yn_x5_Xp zWUQ5kH^e!9gO4fN!BlX2ZW#cGa^S$uYMKE6DF+nalj@7U6tu2XykEJ|m7wtXN9p13 z;n%+(KN((w-$r|UrR>)%nq}+&h$W(<-z$+@&<eI`kU%+%`poM}~{4skrGtYs*DGP%vEjN%Lp;cRPPAHU2Fg{hR9u>hdv9 zyE`=W2L$L*Uheg?h~NNuI4F>T*&zf5vxnG7JX!}#Ez+B_7loXzez81q_?Dhwa&8-v z-o*yl5QSdeaQ6@`kTMEuY0Cw(K}CFt#k>k7I#wGd1Yz%&b-twHTFsKVH`mP(W4jL< z?7Lx=lYm-nr z_coGZK??_oVU?d^UzFkIBfQR)k8Y`7EVn(g0c6~~X7%&A}e;<=;r>(n6V(dIo*{hl5KRw*%@0+CBmI)hel<~U_%$NzhvlBvk* z0^lLNO)8ma{kD0z6gg$?b<2$YPRQlah$WfS_6NtXYZ}4*PtfjLqrciSY6Ld;06E{kuP5;0Gp5y?sxsfj+|29Cg0EYVcE8VCz@8G_2_31tYdKc_;ahX=?0_L1}i~C(?0vJ zP2u_c@#l1y#PI9t;A{8Z9PYL~A$PoSO}}-L=e5;h{60H=#O(9X-LX(r|2KwtB08oX z1+nrc#{*VP{roDpMm{f2Txs_}p0u$4+^LG7VXc1FHGa0*$G8poa9ZZk2jWqkIffzZ zi((&I#@A1=O9-nCqNBfbB7%{Cp9NQC(lWHCK(^+P=W?^pSvGE(fZEe$Cr(^2?tkwb1Q?_1=+J1#Beo+ z?FCn!sUW~Av-@WInV}{q#(Evb#zO5W{-@sfv;DvKN}KUOh7A?*2U*4qdMSo2k&iuP zvS5m7i<@=JE-9|}2PV=16TmfbwrNq=rp;8n%rLIM!UKJKVwrd@LJ^vy5louX{Nj~Q z+*$+yAN`L3*CU4Xrg2b<#Y*B|0#mfrTltd+{mhJkJi=s_6Z@4(I4VfKl?z&BG?d)# z%+bXKCFJ4NcSK@>5hlxY5+I`}y^fsr-<&sXPUa=Hy_El)sty(xi3p(;+ zmL;masGqUomhCD7D6c>-Qd1RC$G2Igl|buAoTN@R7U-l^QC<%#NG7XS^cJNI; zI{CwA%@iXwwgx>o{fa@cM8-kKV?2o zK6U|m$|>UxckaSwx;92Pr(O*R*rl;HQR|dsUH4z8RLD1$r>^8a4=b@6I z`88eZNp=fS_3uI31j=aYEfUy_3^#9N)Jo%Cf}nmpupbX1n?l0S1^GtTSq9`)klZ>F zwv?e?hM4Ul-Zz1n^K0(J+Z?<8_fI%Qo=i;?e?=20JSn_6tQVhz_>ZAYfw@py8wzT4 zbxK?#HC=-x#j*{4g?Ue<3OPum@ z`1{H<0Cv+HG)wQA>XvNgAx>+r_E+0C@4M8vXm&Uu&EVhyB4zG!+D2@(!HQR*gi?Xl z=Uk>VRi)&({-QCm5-OQG3q>biMn{(DP3Su_4*-3ZrE^fp>_AwpGXtLJq=^t58e;DW z>c08lf@sujVJaP5cIfK)=(Vm`SX0Kq(d!R`=j9%5`xkdjUi|sy0Q86a1q6}?i0|fs zQ4_SCMMt_=pASeTQTgYLCM%xXjngD=f|Ge^6IWM5T85iqTp)}aiI))=!bg*wpu*-h z6C$<06N9`b`y!eC><3@pcAbok=hz@dc?hkd9cA%?85Ib}&+*#l(hru(JrIlr)bfR5 zmeOKZ$(-#jpa>N%w7d);p^gM?6);3&LE%REH3!nQ`hp1tF|GG*SxLN%KAqVcsRlw~ za-X?gjCp8AeQJ7Rj3uM;^IB#=LY0D>)svhMa{z}@o??d?8K^)+lhe&I@Ngycw_2%A zN>PxjGR3T1EHNcbZKR_6tWm3Z5YfPXuszzZwg*I@!psN9pi*+;??Tl?A0?3^y}S?U z7QHcSI#P1A!{?_-O?UJ0d+W=(296^Mt?>=QXJu^sz4n~UF#t%jkyP^$2ac~{mAuZo zvOgg*dnopntj?)A3(v^;Pr}Lfk6+u_EE|slsJW(5);>xq*3rRAHbP;g@F{t9=zj!9 ziyrXxnj?DiT=k&ogg^N-#n9sIzk5*$k9O@UizMi3QU}K zh=hTP82(wF70rd3a{|M)`wsW>VCXSLCVJ;`xX-+vn3p6*6baR*R6b8?i67vy_` zaxf9VQ&}$WsbsKrUG5I>vrGMPu6}vaIkNd1e)QiW&MCUvpKl5+eC-XI)ygHSwS~(N z3RF}Ra=82PTXPYB22J8y5JH-ofV<=|nEnI2VL6+o0g-ePi8Hu=Kg4pJX*pSC`F6|5 zQ52d&V>^-3q7QZa*_SqczGL#HctL?*9 zjAybh&265~11K&tp0s!Cyw=x8gu>*X6103F#vSQL%m8JzEL#2nu5f!Y8PMplZM^>ts7m`NTNi@x z=YzzY?CSU>J8tyLwtAXg6Tq)5fWnhD3EH&>*#VEpu*;OFs!Wd>C^6~JurAj+2eK2C zamDNsKCmr8uecP+Wk~a6A=|K2+?CiSb_$)@s92PcE7s77s4qrX`gL}Yx*ivG0Tp^A zQ@R7ELZ1NE$7PtWG7k93<5gr1Q~HL^0WO7Ew$>Kv0;eU=Nz3YsV+ z;ewSIzWO{{hex*|WY}q>=_9Z4z;sCgvPgjYA%#wH;QP6t=Sq?lG7aZ>eaS~IX|A(> zWGdij^n|qCBLe1>|KzY!nou)m8pk*%*9y^K#hM_j2=WRx>@#%2xJ-I{GCGoDy>nvi zrrH^$3JsJ%qCD5eRPtlshOWfPcAi-8J&AUdAoRsq^cAeMoGHqvwb6}%B2GdbV^tjE z7eNdaC#IcKx*VG)quSsl@`h}3^^v}!UEj2)BZ-lfQ`%PN)E8X}Leu(VIsKW9{paN_ zXVIODRjMK6v|J8U#)NJl2mf4&HD;MU&V4YfqP!KyDDlcoq<~$^|0mrMB0zgXRez>k zw-#qyH_sq2@t7%rw#bktse!BZsaczgni?TV_KR9 z^|~9)abEZVt|*nb0%C}sb-ZZTC&}-7xCx-BV`vfsPu+u^C7q>!m7Ng# z8B8S}@9_0UK4bQB42hQbbu?FtkskmpMB zs>g!50i%g_Pbx@cl#X%&hJUl2$wDtRgbj<>ffYALehMR<;HgC!GW}Oq6tVJ zu1C1O^rE0j)f1j6$uBgPFn!`xvXkj&Na?i= zt|_<-b*k-^Zr9M$-F(rGtHQ%(76OqsE%pz>te>GoC@B}NJu|_C71720=)zoJSs-$A zU{l({9kTt?1^b+`iEfQX!O|CXYt(Cc1XL?nb4wt#W)QAcKnh0U>)dY-xm#9&P)Jbm z;9W&R+Hh)Vg8z8p+3{qNEZ&Fe+ zqQosxWWc8lu@gsUUQoU69f&wl2R50=a2NDWL^Sw}dM|EImdhV1AbCJE;Qob<9zW@F zpI)36mdJ48hz=i;b`v_bB#YBH|E1sKwC8=SlSncpZI=^U;Bi{kfkObgo;ke~3`FL# zNHmc01Z!9sPAXTsASdju^)@r)QZPsHyenN8$8<-Ql5b@;^XWztEbGymBi3&#w(07z zh*NDW*&<-@-t>PatZiCx(GiFzhk5#~@LJaWTUGv>c<5YRS|h0HY1}Kt9uJAXQxX*2 zD*Hn<#}3tYAnLB!XK-*DomXP~yW^c^YCf@VoIP}j^Y+25w~vMo>&bE*Tg)EMP9}Ug zST1pBr}C*!p`2L@XUq`|3dLVdf|(edd+FXqI12soz-(x_=-dDjED;zVqY9*?x*_={+P$ zqY$f1cfnzFsQK7!=Xk#~x$Ud?TvUlqt-k5e082q;0Y;H#$?*zN_EU-z&;%euB!V6t zF>|Zh$G{=P=r$+2YeX&DBmW4~q?~DegQkO1ks(3Ay3!DnAcu8Dqxycp`)kOPqO@1Vm-36n5^3|n zo*wsM?+lHuH5Vk8U#F_htneirweT2bH*AJ(17EEu45OI4RJO$jA z7bTIG65>T>7LC=U7anRZ7=+1M<_O#W+c&O6hYOzmB36uajXjNzp(w|EzPCBR?}ifC z>K{G9PU)!xxNJG&cD&8;6SGapvk7y)V-|=P79a^TwmCIT1f$;KA-i*$1C>lRlb6&U z7u{QPQ;-vX2ELgGF`H87Y62t>d;%6vPM7Fs#N@y2u0vv|HQ^?A+Wxq4L@YTmnA$fP zQZYL5A6JK@rOI#UQ@ZHF6llP9MoKawnwKHwaU9D{Q@n;ah+`^*FyP0-$RkU7`9Afd zBxDgRmC7DSz~3!@C52%~jkW2%9qc`~-fzWu7ty!$xd*Z%ivWoUptm6pq46n}fO|DF@t^r2H(TQjo{8J1%v2J4=9UobeTGzG z>(Gcd(ZpxQ3iO_cAaq-9ru!h_-FKIOzKrOBnG27_PdK=L83~K6pqQ8R3|uA0Ec$MI z@Ufd%zC2gJ4&u^9I9h@&0>Ops5d(E)*{^8ijmaNZA+?&T4r%QgqJdmS6f$HyL2h`s zweDs(!Q;+2^?yE69Qp!4M8GS6#Ta@JHFp6jZs z^?yx|-DZc|2}*Klg?^A|Tv#F*;Z9GxUpKjv;1bQc?6dNdDvyJonPpoCGDy;>206Aq zuCX~6NZ3Z~Z<9UrI>G%%0yX^DnS`Sky^+R28O%Jfa1HRxqq>=rZ=4uW1%)gY;a%e` zL`EGVJQ=L?aNN6f?_>Qml_hgT9VAgedzP0|Q;4s+XNy zmuAp`RJ&5G{$r^4yYGuvS7N;pyI0EgCa6|!we6&X(AqZvD<7!{GYQ@IyKfJ~jzR{d zYiQvx93#HxgjrYV*3+Bu3c4Rj7}VW~c=-PLVAL7j!eCGW+mp_O7^Qhrv+Shsh`22*F%7lOkL^BdZ}K;LNW<^O zw(Uvlr0}`>*!5>Y0P^xOA$iFc={x6Fmpx!pA#m;|Q&~S_LqSPwHX;PN6skmu1Vu%$Lg6ayUYGqQw#E@ss;=#qpnV8;fE|g&pp%Cl0#Uq%Ax+ zmqb+y{S|d&59yZW4!|1?mgK*HF;5c?eT`VICI}3?nl5{5JUr`Et3{NYg^EEKp$F)m zXbUGO6LE$c)1@jX5tjV3syT-1dP`)U!r%YG+ExW=W)u3>{#~KR$Q0$@>2ueu(J6qf z;$*f#&Z!A!yLTp5L2!~yB}h#IsY(=QK&~ws_X`^thE^g8D>M=FmO6fyutsp)h?Sdo z6Bxeh_C)YOfJ2=Z^j07)_=U)FRXMpn&yg1Wq7d(j8(*!xV5aN#$OiwV!dyQ9HU|&khDXLO*ZuyQry4m|}`! zNEGhOHi2>!;#QY9K}vQY7~YN#=tg$tL1VpB$dsA{0VCkufZ;n^ZP?jBgtSO49$+DF z{>MAgfn6hp6fQ4KNQ2%M9c%C=IV1y$5AJ*0(Q zy`yhPDOqc;&!sN-i4pE1GLg&PY}6$7ye`;BBX%F=kYtwT=Dx)zg#H1H-e_7@xa*mi zwF9*n#+nva0!N9psydnzs;vLJx=7v*1i_d0c2?gHrly@(j+mSWi#8PsW`Il^Kh%h2zBS6Q?78hF%Y8K-s|kmJR;g_V>)bQ`CF0{*u;*=!Fa{{Pnl}IxgFCX__B; z?!qQ9dO{&`n~e?+euD}<-b`URPKuFNj8{QI`Gu3Hox#v zR~FvH8F%ekF=Z*nmy{p^7BE2?K}apxgU2Xa)&(gij>$$Ij0_CJ6*q;!iMf>)n;s=^ zk0|c3gpdH2|9PBM5_`)#r{QE&Bfm3SDD%Lp&2I{LWU&1Dti6~wHw_<+P~dW1v2BXj zAVW|dK&I69>meLn>_keuK=bGBfgio@bN)HG|352aH9!?CrZHlDAsztv z@zeSgVmnG4*MC*x==oxmFv~g-W6Btk$3uEMv2<2~u%~k?;isMZK}R|14qt*={ci|{bq|}Vng4X6e1_AcZ8b|HBRU?34&OnOc@p3L_PSKz*io}pl6zt)%IkAE5ptEnEL?`=KSk8dFp`gWuA2Ff zN03?WJbHIg=ew4IJt4Z6n?9XAnTk~c|BuW4*v67F)P#BqfYw73E=YHVuuHZg($tN$ zXR)G7OuKe>8;xydq6ptT3X<5Nadqi!2hEhnKG>ufa{RX#7cEAdX$%fMPXzeSd7WRyzpQ*ML>Teas(uJpK4=caqT|ARpg|b~aufG`-%em{1 z)m!ejcy)gHO#iWcE@REt>qdYsLC%j;!B$1y!z)%R$pOiZyQg?*_?4($)}B9eV()P> zQt+*B{66Wh)!eJ z^1w22!JA%(6n^huf=@rMJqNp1=4e*LKw0>0!CX9%uml|Xv`H2Ejh)j`zxTh!Ka_WK z%KOZVtc5LdDUhLzE8kZ;v-P=v#@Tv@k67D_&W7Z>^|Oyfb1Apd-(8RJU8p#^=vH>5 z&{1v_Vu=PByOyh>3<^%8?oD0Wbg7zvPA+uq!8!vgPTDCTg9`h z(gCPnL_y^Tf0$_?{vHPAtt~11{OJ$3qi718QE`wkAPNK?7hDX0$DB|oyR*8 zN13K%22z}bFrg^QWxR>BlN*9qPJ`?pcu2kh?XK>&VA<{#KZ>81MZ*2xi;v2bgEuM^ z3<`D#{Vh*rpbD0Cio`{VteV|naT~*-Zi`e~9oCF6889BT-978Xwg=93bce9epp8MP zj5)$T=kLeB2D1S&4z|0!3*}RIG6^<@)lA4^Tf0acwOb2 zgI9u!4F^DJoX>O`a42|6wr1}=<#!MoLKiH@lk8Wwy;hwv>rWH|R?cDHN>ow7JgV~M zSeXMAh|Q%V+ntOgm1C2E`RK_#Wm7hCuwp`1o=MgHqN|=H%>3eh&w?tIT_F|Q0q%nF zqjt|U$(}8(_}Zw)m}tk=TTn%X!mC*hi_dMYrrWmUy!Y^LZo$~cWZGm^nQiV=O)zHT z*Mk#sNv};qLB>4>l7TLmz~2QhvnV^Of5G-Lti4_5z3oCBWT2v1)BkB#*wFLdOH?^5 zLiZl3w2fvtgz^wHn2nO1Ek8tPHpHM=@@?wqiD;1ruysGVH(0l8zpSwq!sS3Rs2 zZ&T@hHlZ-X8V5?x^Pvkuu999^i`2Mu8~7sfdvN!kEO^^{aDyrcB@skiURT5#tFeL{ z`fOCyoE5{)zgrCQyden6s4iD~_CLQ90XFB&J^opP0&WBb--v9esrxh7JKL?}*Bg8y z!=eQ&9L>8!sdR=r?N2K?CIb!krH7|2N5a*^mY1*NYH4ce9Ds?^-r<3xdGMCrSclpK z{Tt>=b|GQCA-*A@?&?X2wMn8kK&n7|Vpn)p`O4SIIQ`mqn-58?wbpU~h^!70$fbgM z^7dt2@%(sw^+`hQ88y4)obVL)cmGM&F?^R1b!q0?-RAAKChbg(ukRV|5%0ZgPaUfB z4E=D*Q-hrtK}$SjR^83K&9nqQGz$i3x)DsP2v);oc3Bvll*V}sk(p;2q!#|C_7p_R zFmGHjXQk;r)}Y(iaB?Ctuh!_$%v|5*Af05{h=Uc*A?A; zwU!lgZV+s;O9#3B(i?~+WtVp1s%@`E(b{`Mic1bE7&@_&_HXsNhTUwzxn0YdyNa84 zmA9(LR;zKL%fDfo=~03;;D!I9Yb%vBtKB0{z6ryxy(o8}^b*zr9U5vxH3NNt#p$rH zBd)#P^b;|w)mNix;xunMe2~J|)U`IS1L_;!G~5C^Ln{~DB8sEHYrPbnav&CKOp6|_j0a~qLH(O)0?w`X|dh@`GK~0*g4mgUw z;xpYWRJ=>XE#G>Zwwtsrt>Ayfx~lJ0ebra3)vA0W5)bXF{u%YeShITRW95se`^3fs zGdhL?BBmDJ+K`a3u+gwff2q;)k0$uDj^7$Q-YFBE5VxZp1dr~ph?ZQv(4v>htiomnPiuF*iQY;*4vuIjP69t4$gr!lgti=xl% z*4w5dyrXRhbp7dWO)Xj0p6qmyC-1K0F>pug~E3vr?giZvIItL@*z5m%R?LLc8Uz0Akrap@#;o2ED!*#0AhiY z2}GXE5zc-)gmVvcSn>VJZLQA(2cTb3|7q@!j;gq%>ep^HsNbmGXmf$Cs?ouvx4)Xj zEP9^2b7c2gZ<(&h$u`N8gE3J3%nt&a7vZ7fyQlL54DY60O-OKr zCx7>{i>^`H`oD(trPjv&?snn?f~E36?*cXk(xj5n9@@h!7Nty8xx4%042*#eJTO&KPJXYfl zt!b&Ub>VhAW$hge9Xp1ID?^71F&XLv7*1L8!jTUF(<$dk2LQuzBh@9qA{syy?kd@8 zTzd8bNoV3s!rPdzci%s`DPTRHvD9nYu^V!V@D# z)di}46O&K7rGb&a1>1nnr;akaj~=a{h*5~C%o%yZCohhxK)CCtZmZl4v6pRpg!%Cy zZsT#+j`og&e(YfZLY(9fejJ|;#xLriNmJn^z3O{x!`H*(n|Z(e&p$wc=Adb?Xy9w& z`H!N2gf~l3JN%a}ASi-dz)`@4CsUqKeu7@`HG$cLqVF58h4+B0zZw?|Wtk`25{|$R zR5J9dC-<R*6Hk`Sy1q}a~$h=xkzMpWh8?M{zP7m0jc=}IU8I)edtD!YmxiE!;S zG(soho+nneWtD)=KQb|@2VOfjH;~(ywkFz6+rfh;e|_IWvb2qSrHV@J8(QZ9r8WY5 znpo$KsI^UM_s;1tSdw#M}09aGxzos*@A z`zB95O)Krm_?5Uc^)uwV>Gkl9_>hm67Hkb8KqB<4I*Tro0_Ob(l%^MK3o6r~-F8C+ zBA@JfTg3ohC2du{8nkUIOSp_5vJD=3YdH-m%6}iQ)Va&9+q^o`q})b)L4!vDbcedh zEC%WLZpy%>!8V1QpPA@=OY7uQ-!p(xW4AfA3q}^w4mB!>X1zIb9Z8}4^RGTRw7Gj4 zV&vU8{f^$O2e@CfDg3c&)Tvjwv?P@)s>9%ST>98bL;V!{I90m`ulj~;C8ARj)bK%;}q zI9(!(UE0d4&-8zM&~16P_Mj}p5WF|$8J0X$_2=Z7kh0&cCFV)x2eh8VckfN^I^dS| zpb})h&P-mX|0CL!!|oog9}mAyfN9*dn6R~!nz5L+KF;+D8amt|U-s^4bI}4b=!lW} zA6^1`$RYH+|7sf2?4AVW+kSDZr`Emeg-&oDpeSxFgdF4}ec*n-EsMI`vIhcGE%x?* zL;HPoZ)fkf<2}H*yZyO1sQb^<@ZSRaf?Kxt(9GGH&u1^23_QMh){6TVHy{M0e%JOt z-&FHl``$P)K{!4buunkZ*X`{6{xwm~Ewh1{TApNad+d*&%f?@KHg~=+_F4?g{E2yH zL94PDK44gS$D+^k>xk{geXbrtMRd%60^Qqo-OyTuWa)BzkCAJad@4v$g*i&M!%zW4 zH4i3dJwdP$nV_J&DR`usmmWpx2$Et4&R0rL7uO01q|Y6nZZQv-67N#G=&vEMJAebs zc6MtdZEiX%&s!@4mq^q!LauY!eX_Gfb-@4wTowE4YNMYbSXC%T$%#O}d{F{RlujOW zl?Fks#{d1kSX3d-Vy3S*{v|b~MU59AWSSrc!ko&2%e=ojC4J8KxTE2A6{>Z)@nB2T z4(%>=*7gAPIqWB`QZKj0Ola zh%Ikl&^G$$bAj2cSYmsu;0N=1Rg8PC6%2OA>EAp0LwcqLVs1uF`&OMG2<7#sgz!In z6?~(UW21998GPlx8?kAQSh)v6LieUU5Ez}?(vDKErp4oBfkBI{GQ*VF3&w99rgbdm zdbT`n$atN`zBW7HWAtd=^Ih|!FM-1nx7T@>PWc{vA9v4po1^n)A|%i4yI+o>bge8& zMng>@jvojTN&NMDH)RX1J*t5~OxTx2lo4$9Ayun$AByy?jy`X*Y1i3cFy?RnU?jP9N2Yddh^-v&7^|ZM#Xu~ zsb3z+2>p>vM5ciL72K^Y`I}2|@9mRpB+rM8`{SerA63Jf2WkuD-`i&?*SfjY2b9n> zgVp;EfbXJ<^5H>|I#*sldm8uH

    CdmOG4Qs?D6IM%|N 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

    `|SLUy--ih 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%0Alv!X{@7T|VoZD_gSfx8%^$T>u7XXxE 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 VgHO-)d^~12=VmNbU_t=_06Rzk2|EA) diff --git a/docs/source/_static/install-and-run-reactpy.gif b/docs/source/_static/install-and-run-reactpy.gif new file mode 100644 index 0000000000000000000000000000000000000000..49d431341636da4a56becf7fdfb24f3fa7fc6685 GIT binary patch literal 1049193 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≨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�X!Vl~*%$d% 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

    vEE#O=V!c!%q_9GaoV+6Et%`p&b&f_Ce{7dbUF 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á~*8) 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

    $W-|LfLzSn2d2`8t4m;bXQbwn$PTg#-R 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℘GiKSWx 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

    F4mitp0$mwdu`1a>yg`Lz1 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:$?bfrr^~woXb0tf&)RPO@5B!9jB}t&2 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 t?SobrQQg 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 literal 0 HcmV?d00001 diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 3472f8da6..e4e98037c 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -3,8 +3,8 @@ Changelog .. note:: - The IDOM team manages their short and long term plans with `GitHub Projects - `__. If you have questions about what + The ReactPy team manages their short and long term plans with `GitHub Projects + `__. If you have questions about what the team are working on, or have feedback on how issues should be prioritized, feel free to :discussion-type:`open up a discussion `. @@ -76,7 +76,7 @@ v1.0.0-a3 **Removed** -- :pull:`907` - accidental import of idom.testing +- :pull:`907` - accidental import of reactpy.testing v1.0.0-a2 @@ -117,13 +117,13 @@ v1.0.0-a1 All attributes are written using ``snake_case``. - In conjunction, with these changes, IDOM now supplies a command line utility that + In conjunction, with these changes, ReactPy now supplies a command line utility that makes a "best effort" attempt to automatically convert code to the new API. Usage of this utility is as follows: .. code-block:: bash - idom update-html-usages [PATHS] + reactpy update-html-usages [PATHS] Where ``[PATHS]`` is any number of directories or files that should be rewritten. @@ -145,7 +145,7 @@ v0.44.0 **Deprecated** -- :pull:`876` - ``idom.widgets.hotswap``. The function has no clear uses outside of some +- :pull:`876` - ``reactpy.widgets.hotswap``. The function has no clear uses outside of some internal applications. For this reason it has been deprecated. **Removed** @@ -153,7 +153,7 @@ v0.44.0 - :pull:`886` - Ability to access element value from events via `event['value']` key. Instead element value should be accessed via `event['target']['value']`. Originally deprecated in :ref:`v0.34.0`. -- :pull:`886` - old misspelled option ``idom.config.IDOM_WED_MODULES_DIR``. Originally +- :pull:`886` - old misspelled option ``reactpy.config.REACTPY_WED_MODULES_DIR``. Originally deprecated in :ref:`v0.36.1`. @@ -181,7 +181,7 @@ v0.42.0 **Added** -- :pull:`835` - Ability to customize the ```` element of IDOM's built-in client. +- :pull:`835` - Ability to customize the ```` element of ReactPy's built-in client. - :pull:`835` - ``vdom_to_html`` utility function. - :pull:`843` - Ability to subscribe to changes that are made to mutable options. - :pull:`832` - ``del_html_head_body_transform`` to remove ````, ````, and ```` while preserving children. @@ -189,13 +189,13 @@ v0.42.0 **Fixed** -- :issue:`582` - ``IDOM_DEBUG_MODE`` is now mutable and can be changed at runtime +- :issue:`582` - ``REACTPY_DEBUG_MODE`` is now mutable and can be changed at runtime - :pull:`832` - Fix ``html_to_vdom`` improperly removing ````, ````, and ```` nodes. **Removed** -- :pull:`832` - Removed ``idom.html.body`` as it is currently unusable due to technological limitations, and thus not needed. -- :pull:`840` - remove ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY`` option +- :pull:`832` - Removed ``reactpy.html.body`` as it is currently unusable due to technological limitations, and thus not needed. +- :pull:`840` - remove ``REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY`` option - :pull:`835` - ``serve_static_files`` option from backend configuration **Deprecated** @@ -212,16 +212,16 @@ v0.41.0 implementation specific and are now available as top-level imports. Instead of each backend defining these hooks, backends establish a ``ConnectionContext`` with this information. -- :pull:`824` - IDOM's built-in backend server now expose the following routes: +- :pull:`824` - ReactPy's built-in backend server now expose the following routes: - - ``/_idom/assets/`` - - ``/_idom/stream/`` - - ``/_idom/modules/`` + - ``/_reactpy/assets/`` + - ``/_reactpy/stream/`` + - ``/_reactpy/modules/`` - ``//`` This should allow the browser to cache static resources. Even if your ``url_prefix`` - is ``/_idom``, your app should still work as expected. Though if you're using - ``idom-router``, IDOM's server routes will always take priority. + is ``/_reactpy``, your app should still work as expected. Though if you're using + ``reactpy-router``, ReactPy's server routes will always take priority. - :pull:`824` - Backend implementations now strip any URL prefix in the pathname for ``use_location``. - :pull:`827` - ``use_state`` now returns a named tuple with ``value`` and ``set_value`` @@ -301,14 +301,14 @@ v0.39.0 **Fixed** -- :pull:`763` - ``No module named 'idom.server'`` from ``idom.run`` +- :pull:`763` - ``No module named 'reactpy.server'`` from ``reactpy.run`` - :pull:`749` - Setting appropriate MIME type for web modules in `sanic` server implementation **Changed** - :pull:`763` - renamed various: - - ``idom.testing.server -> idom.testing.backend`` + - ``reactpy.testing.server -> reactpy.testing.backend`` - ``ServerFixture -> BackendFixture`` - ``DisplayFixture.server -> DisplayFixture.backend`` @@ -326,7 +326,7 @@ v0.38.1 **Fixed** -- `idom-team/idom-jupyter#22 `__ - +- `reactive-python/reactpy-jupyter#22 `__ - a missing file extension was causing a problem with WebPack. @@ -347,7 +347,7 @@ v0.38.0-a4 **Changed** -- :pull:`733` - renamed ``assert_idom_logged`` testing util to ``assert_idom_did_log`` +- :pull:`733` - renamed ``assert_reactpy_logged`` testing util to ``assert_reactpy_did_log`` v0.38.0-a3 @@ -367,12 +367,12 @@ v0.38.0-a2 - :pull:`721` - Implement ``use_location()`` hook. Navigating to any route below the root of the application will be reflected in the ``location.pathname``. This operates - in concert with how IDOM's configured routes have changed. This will ultimately work + in concert with how ReactPy's configured routes have changed. This will ultimately work towards resolving :issue:`569`. **Changed** -- :pull:`721` - The routes IDOM configures on apps have changed +- :pull:`721` - The routes ReactPy configures on apps have changed .. code-block:: text @@ -380,14 +380,14 @@ v0.38.0-a2 prefix/_api/stream websocket endpoint prefix/* client react app - This means that IDOM's client app is available at any route below the configured + This means that ReactPy's client app is available at any route below the configured ``url_prefix`` besides ``prefix/_api``. The ``_api`` route will likely remain a route - which is reserved by IDOM. The route navigated to below the ``prefix`` will be shown + which is reserved by ReactPy. The route navigated to below the ``prefix`` will be shown in ``use_location``. -- :pull:`721` - IDOM's client now uses Preact instead of React +- :pull:`721` - ReactPy's client now uses Preact instead of React -- :pull:`726` - Renamed ``idom.server`` to ``idom.backend``. Other references to "server +- :pull:`726` - Renamed ``reactpy.server`` to ``reactpy.backend``. Other references to "server implementations" have been renamed to "backend implementations" throughout the documentation and code. @@ -402,9 +402,9 @@ v0.38.0-a1 **Changed** -- :pull:`703` - How IDOM integrates with servers. ``idom.run`` no longer accepts an app - instance to discourage use outside of testing. IDOM's server implementations now - provide ``configure()`` functions instead. ``idom.testing`` has been completely +- :pull:`703` - How ReactPy integrates with servers. ``reactpy.run`` no longer accepts an app + instance to discourage use outside of testing. ReactPy's server implementations now + provide ``configure()`` functions instead. ``reactpy.testing`` has been completely reworked in order to support async web drivers - :pull:`703` - ``PerClientStateServer`` has been functionally replaced by ``configure`` @@ -414,14 +414,14 @@ v0.38.0-a1 **Removed** -- :issue:`669` - Removed ``idom.widgets.multiview`` since basic routing view ``use_scope`` is +- :issue:`669` - Removed ``reactpy.widgets.multiview`` since basic routing view ``use_scope`` is now possible as well as all ``SharedClientStateServer`` implementations. **Fixed** -- :issue:`591` - IDOM's test suite no longer uses sync web drivers +- :issue:`591` - ReactPy's test suite no longer uses sync web drivers - :issue:`678` - Updated Sanic requirement to ``>=21`` -- :issue:`657` - How we advertise ``idom.run`` +- :issue:`657` - How we advertise ``reactpy.run`` v0.37.2 @@ -431,11 +431,11 @@ v0.37.2 **Changed** - :pull:`701` - The name of ``proto`` modules to ``types`` and added a top level - ``idom.types`` module + ``reactpy.types`` module **Fixed** -- :pull:`716` - A typo caused IDOM to use the insecure ``ws`` web-socket protocol on +- :pull:`716` - A typo caused ReactPy to use the insecure ``ws`` web-socket protocol on pages loaded with ``https`` instead of the secure ``wss`` protocol @@ -515,8 +515,8 @@ v0.36.1 ------- :octicon:`milestone` *released on 2022-02-02* -Includes bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` to -``IDOM_WEB_MODULES_DIR`` with a corresponding deprecation warning. +Includes bug fixes and renames the configuration option ``REACTPY_WED_MODULES_DIR`` to +``REACTPY_WEB_MODULES_DIR`` with a corresponding deprecation warning. **Closed Issues** @@ -526,7 +526,7 @@ Includes bug fixes and renames the configuration option ``IDOM_WED_MODULES_DIR`` **Merged Pull Requests** - mark old state as None if unmounting - :pull:`641` -- rename IDOM_WED_MODULES_DIR to IDOM_WEB_MODULES_DIR - :pull:`638` +- rename REACTPY_WED_MODULES_DIR to REACTPY_WEB_MODULES_DIR - :pull:`638` v0.36.0 @@ -621,8 +621,8 @@ v0.35.0 The highlight of this release is that the default :ref:`"key" ` of all elements will be their index amongst their neighbors. Previously this -behavior could be engaged by setting ``IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=1`` when -running IDOM. In this release though, you will need to explicitly turn off this feature +behavior could be engaged by setting ``REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY=1`` when +running ReactPy. In this release though, you will need to explicitly turn off this feature (i.e. ``=0``) to return to the old behavior. With this change, some may notice additional error logs which warn that: @@ -638,9 +638,9 @@ on :ref:`Organizing Items With Keys`. - Support Starlette Server - :issue:`588` - Fix unhandled case in module_from_template - :issue:`584` -- Hide "Children" within IDOM_DEBUG_MODE key warnings - :issue:`562` +- Hide "Children" within REACTPY_DEBUG_MODE key warnings - :issue:`562` - Bug in Element Key Identity - :issue:`556` -- Add iFrame to idom.html - :issue:`542` +- Add iFrame to reactpy.html - :issue:`542` - Create a use_linked_inputs widget instead of Input - :issue:`475` - React warning from module_from_template - :issue:`440` - Use Index as Default Key - :issue:`351` @@ -689,7 +689,7 @@ v0.33.3 :octicon:`milestone` *released on 2021-10-08* Contains a small number of bug fixes and improvements. The most significant change is -the addition of a warning stating that `IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=1` will become +the addition of a warning stating that `REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY=1` will become the default in a future release. Beyond that, a lesser improvement makes it possible to use the default export from a Javascript module when calling `module_from_template` by specifying `exports_default=True` as a parameter. A @@ -702,7 +702,7 @@ specifying `exports_default=True` as a parameter. A **Pull Requests** -- warn that IDOM_FEATURE_INDEX_AS_DEFAULT_KEY=1 will be the default - :pull:`515` +- warn that REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY=1 will be the default - :pull:`515` - clean up patch queues after exit - :pull:`514` - Remove Reconnecting WS alert - :pull:`513` - Fix 502 - :pull:`503` @@ -745,13 +745,13 @@ suite, we added a test that should hopefully catch this in the future by proxy. The most important breaking change, is yet another which modifies the Custom Javascript Component interface. We now add a ``create()`` function to the ``bind()`` interface that -allows IDOM's client to recursively create components from that (and only that) import +allows ReactPy's client to recursively create components from that (and only that) import source. Prior to this, the interface was given unrendered models for child elements. The imported module was then responsible for rendering them. This placed a large burden on the author to understand how to handle these unrendered child models. In addition, in the React template used by ``module_from_template`` we needed to import a version of -``idom-client-react`` from the CDN - this had already caused some issues where the -template required a version of ``idom-client-react`` in the which had not been released +``@reactpy/client`` from the CDN - this had already caused some issues where the +template required a version of ``@reactpy/client`` in the which had not been released yet. **Closed Issues** @@ -762,14 +762,14 @@ yet. - Examples broken in docs - :issue:`451` - Rework docs landing page - :issue:`446` - eventHandlers should be a mapping of generic callables - :issue:`423` -- Allow customization of built-in IDOM client - :issue:`253` +- Allow customization of built-in ReactPy client - :issue:`253` **Pull Requests** - move VdomDict and VdomJson to proto - :pull:`492` - only send error info in debug mode - :pull:`491` - correctly apply client-side JSON patch - :pull:`490` -- add script to set version of all packages in IDOM - :pull:`483` +- add script to set version of all packages in ReactPy - :pull:`483` - Pass import source to bind - :pull:`482` - Do not mutate client-side model - :pull:`481` - assume import source children come from same source - :pull:`479` @@ -795,7 +795,7 @@ See :ref:`Custom JavaScript Components` for details on the new interface. - Query params in package name for module_from_template not stripped - :issue:`455` - Make docs section margins larger - :issue:`450` - Search broken in docs - :issue:`443` -- Move src/idom/client out of Python package - :issue:`429` +- Move src/reactpy/client out of Python package - :issue:`429` - Use composition instead of classes async with Layout and LifeCycleHook - :issue:`412` - Remove Python language extension - :issue:`282` - Add keys to models so React doesn't complain of child arrays requiring them - @@ -818,12 +818,12 @@ v0.31.0 ------- :octicon:`milestone` *released on 2021-07-14* -The :class:`~idom.core.layout.Layout` is now a prototype, and ``Layout.update`` is no +The :class:`~reactpy.core.layout.Layout` is now a prototype, and ``Layout.update`` is no longer a public API. This is combined with a much more significant refactor of the underlying rendering logic. The biggest issue that has been resolved relates to the relationship between -:class:`~idom.core.hooks.LifeCycleHook` and ``Layout``. Previously, the +:class:`~reactpy.core.hooks.LifeCycleHook` and ``Layout``. Previously, the ``LifeCycleHook`` accepted a layout instance in its constructor and called ``Layout.update``. Additionally, the ``Layout`` would manipulate the ``LifeCycleHook.component`` attribute whenever the component instance changed after a @@ -883,23 +883,23 @@ runtime reliance on NPM. Doing so has many virtuous knock-on effects: are located, and as a result, it's also easier to coordinate the server and client code. 4. Alternate client implementations benefit from this simplicity. Now, it's possible to - install idom-client-react normally and write a ``loadImportSource()`` function that - looks for route serving the contents of `IDOM_WEB_MODULES_DIR.` + install @reactpy/client normally and write a ``loadImportSource()`` function that + looks for route serving the contents of `REACTPY_WEB_MODULES_DIR.` This change includes large breaking changes: - The CLI is being removed as it won't be needed any longer -- The `idom.client` is being removed in favor of a stripped down ``idom.web`` module -- The `IDOM_CLIENT_BUILD_DIR` config option will no longer exist and a new - ``IDOM_WEB_MODULES_DIR`` which only contains dynamically linked web modules. While +- The `reactpy.client` is being removed in favor of a stripped down ``reactpy.web`` module +- The `REACTPY_CLIENT_BUILD_DIR` config option will no longer exist and a new + ``REACTPY_WEB_MODULES_DIR`` which only contains dynamically linked web modules. While this new directory's location is configurable, it is meant to be transient and should not be re-used across sessions. -The new ``idom.web`` module takes a simpler approach to constructing import sources and +The new ``reactpy.web`` module takes a simpler approach to constructing import sources and expands upon the logic for resolving imports by allowing exports from URLs to be -discovered too. Now, that IDOM isn't using NPM to dynamically install component -libraries ``idom.web`` instead creates JS modules from template files and links them -into ``IDOM_WEB_MODULES_DIR``. These templates ultimately direct the browser to load the +discovered too. Now, that ReactPy isn't using NPM to dynamically install component +libraries ``reactpy.web`` instead creates JS modules from template files and links them +into ``REACTPY_WEB_MODULES_DIR``. These templates ultimately direct the browser to load the desired library from a CDN. **Pull Requests** @@ -908,7 +908,7 @@ desired library from a CDN. - Fix typo in index.rst - :pull:`411` - Add event handlers docs - :pull:`410` - Misc doc improvements - :pull:`409` -- Port first IDOM article to docs - :pull:`408` +- Port first ReactPy article to docs - :pull:`408` - Test build in CI - :pull:`404` - Remove all runtime reliance on NPM - :pull:`398` @@ -920,8 +920,8 @@ v0.29.0 Contains breaking changes, the most significant of which are: - Moves the runtime client build directory to a "user data" directory rather a directory - where IDOM's code was installed. This has the advantage of not requiring write - permissions to rebuild the client if IDOM was installed globally rather than in a + where ReactPy's code was installed. This has the advantage of not requiring write + permissions to rebuild the client if ReactPy was installed globally rather than in a virtual environment. - The custom JS component interface has been reworked to expose an API similar to the ``createElement``, ``render``, ``unmountComponentAtNode`` functions from React. @@ -955,7 +955,7 @@ Includes a wide variety of improvements: - support for the ``files`` attribute from the target of input elements - model children are passed to the Javascript ``mount()`` function - began to add tests to client-side javascript -- add a ``mountLayoutWithWebSocket`` function to ``idom-client-react`` +- add a ``mountLayoutWithWebSocket`` function to ``@reactpy/client`` and breaking changes, the most significant of which are: @@ -966,7 +966,7 @@ and breaking changes, the most significant of which are: concerns and common workspace scripts in ``package.json``. - Use a ``loadImportSource()`` function instead of trying to infer the path to dynamic modules which was brittle and inflexible. Allowing the specific client implementation - to discover where "import sources" are located means ``idom-client-react`` doesn't + to discover where "import sources" are located means ``@reactpy/client`` doesn't need to try and devise a solution that will work for all cases. The fallout from this change is the addition of `importSource.sourceType` which, for the moment can either be ``"NAME"`` or ``"URL"`` where the former indicates the client is expected to know @@ -1073,7 +1073,7 @@ its state do the same. In a future update, the default key for all elements and components will be its index with respect to its siblings in the layout. The -:attr:`~idom.config.IDOM_FEATURE_INDEX_AS_DEFAULT_KEY` feature flag has been introduced +:attr:`~reactpy.config.REACTPY_FEATURE_INDEX_AS_DEFAULT_KEY` feature flag has been introduced to allow users to enable this behavior early. **Highlighted Commits:** @@ -1110,15 +1110,15 @@ v0.23.0 - automatically reconnect to server - :commit:`3477e2b` - allow no reconnect in client - :commit:`ef263c2` - cleaner way to specify import sources - :commit:`ea19a07` -- add the idom-react-client back into the main repo - :commit:`5dcc3bb` +- add the reactpy-react-client back into the main repo - :commit:`5dcc3bb` - implement fastapi render server - :commit:`94e0620` -- improve docstring for IDOM_CLIENT_BUILD_DIR - :commit:`962d885` +- improve docstring for REACTPY_CLIENT_BUILD_DIR - :commit:`962d885` - cli improvements - :commit:`788fd86` - rename SERIALIZED_VDOM_JSON_SCHEMA to VDOM_JSON_SCHEMA - :commit:`74ad578` - better logging for modules - :commit:`39565b9` - move client utils into private module - :commit:`f825e96` -- redirect BUILD_DIR imports to IDOM_CLIENT_BUILD_DIR option - :commit:`53fb23b` +- redirect BUILD_DIR imports to REACTPY_CLIENT_BUILD_DIR option - :commit:`53fb23b` - upgrade snowpack - :commit:`5697a2d` -- better logs for idom.run + flask server - :commit:`2b34e3d` +- better logs for reactpy.run + flask server - :commit:`2b34e3d` - move package to src dir - :commit:`066c9c5` -- idom restore uses backup - :commit:`773f78e` +- reactpy restore uses backup - :commit:`773f78e` diff --git a/docs/source/about/contributor-guide.rst b/docs/source/about/contributor-guide.rst index f0eb39711..11ff79a43 100644 --- a/docs/source/about/contributor-guide.rst +++ b/docs/source/about/contributor-guide.rst @@ -4,11 +4,11 @@ Contributor Guide .. note:: The - `Code of Conduct `__ + `Code of Conduct `__ applies in all community spaces. If you are not familiar with our Code of Conduct policy, take a minute to read it before making your first contribution. -The IDOM team welcomes contributions and contributors of all kinds - whether they come +The ReactPy team welcomes contributions and contributors of all kinds - whether they come as code changes, participation in the discussions, opening issues and pointing out bugs, or simply sharing your work with your colleagues and friends. We're excited to see how you can help move this project and community forward! @@ -23,7 +23,7 @@ Trust us, there's so many ways to support the project. We're always looking for who can: - Improve our documentation -- Teach and tell others about IDOM +- Teach and tell others about ReactPy - Share ideas for new features - Report bugs - Participate in general discussions @@ -35,13 +35,13 @@ we'll help you make your first contribution. Making a Pull Request --------------------- -To make your first code contribution to IDOM, you'll need to install Git_ (or +To make your first code contribution to ReactPy, you'll need to install Git_ (or `Git Bash`_ on Windows). Thankfully there are many helpful `tutorials `__ -about how to get started. To make a change to IDOM you'll do the following: +about how to get started. To make a change to ReactPy you'll do the following: -`Fork IDOM `__: - Go to `this URL `__ and click the "Fork" button. +`Fork ReactPy `__: + Go to `this URL `__ and click the "Fork" button. `Clone your fork `__: You use a ``git clone`` command to copy the code from GitHub to your computer. @@ -50,10 +50,10 @@ about how to get started. To make a change to IDOM you'll do the following: You'll ``git checkout -b your-first-branch`` to create a new space to start your work. :ref:`Prepare your Development Environment `: - We explain in more detail below how to install all IDOM's dependencies. + We explain in more detail below how to install all ReactPy's dependencies. `Push your changes `__: - Once you've made changes to IDOM, you'll ``git push`` them to your fork. + Once you've made changes to ReactPy, you'll ``git push`` them to your fork. :ref:`Create a changelog entry `: Record your changes in the :ref:`changelog` so we can publicize them in the next release. @@ -72,7 +72,7 @@ Development Environment If you have any questions during set up or development post on our :discussion-type:`discussion board ` and we'll answer them. -In order to develop IDOM locally you'll first need to install the following: +In order to develop ReactPy locally you'll first need to install the following: .. list-table:: :header-rows: 1 @@ -103,8 +103,8 @@ Once done, you can clone a local copy of this repository: .. code-block:: bash - git clone https://github.com/idom-team/idom.git - cd idom + git clone https://github.com/reactive-python/reactpy.git + cd reactpy Then, you should be able to run the command below to: @@ -118,7 +118,7 @@ Then, you should be able to run the command below to: pip install -e . -r requirements.txt && pre-commit install -If you modify any Javascript, you'll need to re-install IDOM: +If you modify any Javascript, you'll need to re-install ReactPy: .. code-block:: bash @@ -131,7 +131,7 @@ However you may also ``cd`` to the ``src/client`` directory which contains a Running The Tests ----------------- -The test suite for IDOM is executed with Nox_, which should already be installed if you +The test suite for ReactPy is executed with Nox_, which should already be installed if you followed the `earlier instructions `_. The suite covers: 1. Server-side Python code with PyTest_ @@ -182,7 +182,7 @@ The following are currently being used: - Prettier_ - a tool for automatically formatting various file types The most strict measure of quality enforced on the codebase is 100% test coverage in -Python files. This means that every line of coded added to IDOM requires a test case +Python files. This means that every line of coded added to ReactPy requires a test case that exercises it. This doesn't prevent all bugs, but it should ensure that we catch the most common ones. @@ -233,7 +233,7 @@ Creating a Changelog Entry -------------------------- As part of your pull request, you'll want to edit the `Changelog -`__ by +`__ by adding an entry describing what you've changed or improved. You should write an entry in the style of `Keep a Changelog `__ that falls under one of the following categories, and add it to the :ref:`Unreleased` section of the changelog: @@ -276,7 +276,7 @@ changelog entry might look like: Release Process --------------- -Creating a release for IDOM involves two steps: +Creating a release for ReactPy involves two steps: 1. Tagging a version 2. Publishing a release @@ -308,19 +308,19 @@ use GitHub's "Auto-generated release notes". Other Core Repositories ----------------------- -IDOM depends on, or is used by several other core projects. For documentation on them +ReactPy depends on, or is used by several other core projects. For documentation on them you should refer to their respective documentation in the links below: -- `idom-react-component-cookiecutter - `__ - Template repo +- `reactpy-react-component-cookiecutter + `__ - Template repo for making :ref:`Custom Javascript Components`. -- `flake8-idom-hooks `__ - Enforces the +- `flake8-reactpy-hooks `__ - Enforces the :ref:`Rules of Hooks` -- `idom-jupyter `__ - IDOM integration for +- `reactpy-jupyter `__ - ReactPy integration for Jupyter -- `idom-dash `__ - IDOM integration for Plotly +- `reactpy-dash `__ - ReactPy integration for Plotly Dash -- `django-idom `__ - IDOM integration for +- `django-reactpy `__ - ReactPy integration for Django .. Links @@ -332,7 +332,7 @@ you should refer to their respective documentation in the links below: .. _Git: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git .. _Git Bash: https://gitforwindows.org/ .. _NPM: https://www.npmjs.com/get-npm -.. _PyPI: https://pypi.org/project/idom +.. _PyPI: https://pypi.org/project/reactpy .. _pip: https://pypi.org/project/pip/ .. _PyTest: pytest `__ license. While many things have been transformed, we paraphrase and, in some places, -copy language or examples where IDOM's behavior mirrors that of React's. +copy language or examples where ReactPy's behavior mirrors that of React's. Source Code License diff --git a/docs/source/conf.py b/docs/source/conf.py index 3b065f987..71364b00d 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -25,37 +25,37 @@ # -- Project information ----------------------------------------------------- -project = "IDOM" -title = "IDOM Docs" +project = "ReactPy" +title = "ReactPy" description = ( - "IDOM is a Python web framework for building interactive websites without needing " + "ReactPy is a Python web framework for building interactive websites without needing " "a single line of Javascript. It can be run standalone, in a Jupyter Notebook, or " "as part of an existing application." ) -copyright = "2020, Ryan Morshead" +copyright = "2023, Ryan Morshead" author = "Ryan Morshead" # -- Common External Links --------------------------------------------------- extlinks = { "issue": ( - "https://github.com/idom-team/idom/issues/%s", + "https://github.com/reactive-python/reactpy/issues/%s", "#", ), "pull": ( - "https://github.com/idom-team/idom/pull/%s", + "https://github.com/reactive-python/reactpy/pull/%s", "#", ), "discussion": ( - "https://github.com/idom-team/idom/discussions/%s", + "https://github.com/reactive-python/reactpy/discussions/%s", "#", ), "discussion-type": ( - "https://github.com/idom-team/idom/discussions/categories/%s", + "https://github.com/reactive-python/reactpy/discussions/categories/%s", "", ), "commit": ( - "https://github.com/idom-team/idom/commit/%s", + "https://github.com/reactive-python/reactpy/commit/%s", "", ), } @@ -87,9 +87,9 @@ "async_doctest", "autogen_api_docs", "copy_vdom_json_schema", - "idom_view", + "reactpy_view", "patched_html_translator", - "idom_example", + "reactpy_example", "build_custom_js", "custom_autosectionlabel", ] @@ -163,8 +163,8 @@ # -- sphinxext.opengraph -- -ogp_site_url = "https://idom-docs.herokuapp.com/" -ogp_image = "https://raw.githubusercontent.com/idom-team/idom/main/branding/png/idom-logo-black.png" +ogp_site_url = "https://reactpy-docs.herokuapp.com/" +ogp_image = "https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/png/reactpy-logo-padded.png" # We manually specify this below # ogp_description_length = 200 ogp_type = "website" @@ -188,14 +188,27 @@ # a list of builtin themes. # html_theme = "furo" -html_logo = str(ROOT_DIR / "branding" / "svg" / "idom-logo.svg") -html_favicon = str(ROOT_DIR / "branding" / "svg" / "idom-logo-square-small.svg") +html_logo = str(ROOT_DIR / "branding" / "reactpy-logo-wide.svg") +html_favicon = str(ROOT_DIR / "branding" / "reactpy-logo.ico") # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -# -# html_theme_options = {} + +html_theme_options = { + "light_css_variables": { + # furo + "admonition-title-font-size": "1rem", + "admonition-font-size": "1rem", + # sphinx-design + "sd-color-info": "var(--color-admonition-title-background--note)", + "sd-color-warning": "var(--color-admonition-title-background--warning)", + "sd-color-danger": "var(--color-admonition-title-background--danger)", + "sd-color-info-text": "var(--color-admonition-title--note)", + "sd-color-warning-text": "var(--color-admonition-title--warning)", + "sd-color-danger-text": "var(--color-admonition-title--danger)", + }, +} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, @@ -232,7 +245,7 @@ # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. -htmlhelp_basename = "IDOMdoc" +htmlhelp_basename = "ReactPydoc" # -- Options for LaTeX output ------------------------------------------------ @@ -255,14 +268,14 @@ # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). -latex_documents = [(master_doc, "IDOM.tex", html_title, "Ryan Morshead", "manual")] +latex_documents = [(master_doc, "ReactPy.tex", html_title, "Ryan Morshead", "manual")] # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [(master_doc, "idom", html_title, [author], 1)] +man_pages = [(master_doc, "reactpy", html_title, [author], 1)] # -- Options for Texinfo output ---------------------------------------------- @@ -273,10 +286,10 @@ texinfo_documents = [ ( master_doc, - "IDOM", + "ReactPy", html_title, author, - "IDOM", + "ReactPy", "One line description of project.", "Miscellaneous", ) diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py index bbadfb06e..860cd093b 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py +++ b/docs/source/guides/adding-interactivity/components-with-state/_examples/adding_state_variable/main.py @@ -1,7 +1,7 @@ import json from pathlib import Path -from idom import component, hooks, html, run +from reactpy import component, hooks, html, run HERE = Path(__file__) diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py index 2434f5239..3149e6396 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py +++ b/docs/source/guides/adding-interactivity/components-with-state/_examples/isolated_state/main.py @@ -1,7 +1,7 @@ import json from pathlib import Path -from idom import component, hooks, html, run +from reactpy import component, hooks, html, run HERE = Path(__file__) diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py index 2ab39e5e0..3d31b1bfa 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py +++ b/docs/source/guides/adding-interactivity/components-with-state/_examples/multiple_state_variables/main.py @@ -1,7 +1,7 @@ import json from pathlib import Path -from idom import component, hooks, html, run +from reactpy import component, hooks, html, run HERE = Path(__file__) diff --git a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py index 7558fc328..c617586de 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py +++ b/docs/source/guides/adding-interactivity/components-with-state/_examples/when_variables_are_not_enough/main.py @@ -7,7 +7,7 @@ import json from pathlib import Path -from idom import component, html, run +from reactpy import component, html, run HERE = Path(__file__) diff --git a/docs/source/guides/adding-interactivity/components-with-state/index.rst b/docs/source/guides/adding-interactivity/components-with-state/index.rst index 5317b98a2..f8235ac0d 100644 --- a/docs/source/guides/adding-interactivity/components-with-state/index.rst +++ b/docs/source/guides/adding-interactivity/components-with-state/index.rst @@ -5,7 +5,7 @@ Components often need to change what’s on the screen as a result of an interac example, typing into the form should update the input field, clicking “next” on an image carousel should change which image is displayed, clicking “buy” should put a product in the shopping cart. Components need to “remember” things like the current input value, -the current image, the shopping cart. In IDOM, this kind of component-specific memory is +the current image, the shopping cart. In ReactPy, this kind of component-specific memory is called state. @@ -16,7 +16,7 @@ Below is a gallery of images about sculpture. Clicking the "Next" button should increment the ``index`` and, as a result, change what image is displayed. However, this does not work: -.. idom:: _examples/when_variables_are_not_enough +.. reactpy:: _examples/when_variables_are_not_enough .. note:: @@ -36,10 +36,10 @@ that still wouldn't fix the underlying problems: destroyed when it updates. 2. **Changes to local variables do not cause components to re-render** - there's no way - for IDOM to observe when these variables change. Thus IDOM is not aware that + for ReactPy to observe when these variables change. Thus ReactPy is not aware that something has changed and that a re-render should take place. -To address these problems, IDOM provides the :func:`~idom.core.hooks.use_state` "hook" +To address these problems, ReactPy provides the :func:`~reactpy.core.hooks.use_state` "hook" which provides: 1. A **state variable** whose data is retained across renders. @@ -51,12 +51,12 @@ which provides: Adding State to Components -------------------------- -To create a state variable and state setter with :func:`~idom.core.hooks.use_state` hook +To create a state variable and state setter with :func:`~reactpy.core.hooks.use_state` hook as described above, we'll begin by importing it: .. testcode:: - from idom import use_state + from reactpy import use_state Then we'll make the following changes to our code :ref:`from before `: @@ -84,16 +84,16 @@ After making those changes we should get: We'll talk more about what this is doing :ref:`shortly `, but for now let's just verify that this does in fact fix the problems from before: -.. idom:: _examples/adding_state_variable +.. reactpy:: _examples/adding_state_variable Your First Hook --------------- -In IDOM, ``use_state``, as well as any other function whose name starts with ``use``, is -called a "hook". These are special functions that should only be called while IDOM is +In ReactPy, ``use_state``, as well as any other function whose name starts with ``use``, is +called a "hook". These are special functions that should only be called while ReactPy is :ref:`rendering `. They let you "hook into" the different -capabilities of IDOM's components of which ``use_state`` is just one (well get into the +capabilities of ReactPy's components of which ``use_state`` is just one (well get into the other :ref:`later `). While hooks are just normal functions, but it's helpful to think of them as @@ -107,7 +107,7 @@ words, you'll "use" hooks at the top of your component in the same way you might Introduction to ``use_state`` ----------------------------- -When you call :func:`~idom.core.hooks.use_state` inside the body of a component's render +When you call :func:`~reactpy.core.hooks.use_state` inside the body of a component's render function, you're declaring that this component needs to remember something. That "something" which needs to be remembered, is known as **state**. So when we look at an assignment expression like the one below @@ -156,7 +156,7 @@ below highlights a line of code where something of interest occurs: :emphasize-lines: 2 At this point, we've just begun to render the ``Gallery`` component. As yet, - IDOM is not aware that this component has any state or what view it will + ReactPy is not aware that this component has any state or what view it will display. This will change in a moment though when we move to the next line... .. tab-item:: 2 @@ -169,7 +169,7 @@ below highlights a line of code where something of interest occurs: :lines: 12-33 :emphasize-lines: 3 - The ``Gallery`` component has just declared some state. IDOM now knows that it + The ``Gallery`` component has just declared some state. ReactPy now knows that it must remember the ``index`` and trigger an update of this component when ``set_index`` is called. Currently the value of ``index`` is ``0`` as per the default value given to ``use_state``. Thus, the resulting view will display @@ -216,7 +216,7 @@ below highlights a line of code where something of interest occurs: :lines: 12-33 :emphasize-lines: 5 - A user has just clicked the button 🖱️! IDOM has sent information about the event + A user has just clicked the button 🖱️! ReactPy has sent information about the event to the ``handle_click`` function and it is about to execute. In a moment we will update the state of this component and schedule a re-render. @@ -230,7 +230,7 @@ below highlights a line of code where something of interest occurs: :lines: 12-33 :emphasize-lines: 6 - We've just now told IDOM that we want to update the state of our ``Gallery`` and + We've just now told ReactPy that we want to update the state of our ``Gallery`` and that it needs to be re-rendered. More specifically, we are incrementing its ``index``, and once ``Gallery`` re-renders the index *will* be ``1``. Importantly, at this point, the value of ``index`` is still ``0``! This will @@ -246,7 +246,7 @@ below highlights a line of code where something of interest occurs: :lines: 12-33 :emphasize-lines: 2 - The scheduled re-render of ``Gallery`` has just begun. IDOM has now updated its + The scheduled re-render of ``Gallery`` has just begun. ReactPy has now updated its internal state store such that, the next time we call ``use_state`` we will get back the updated value of ``index``. @@ -260,8 +260,8 @@ below highlights a line of code where something of interest occurs: :lines: 12-33 :emphasize-lines: 3 - With IDOM's state store updated, as we call ``use_state``, instead of returning - ``0`` for the value of ``index`` as it did before, IDOM now returns the value + With ReactPy's state store updated, as we call ``use_state``, instead of returning + ``0`` for the value of ``index`` as it did before, ReactPy now returns the value ``1``. With this change the view we display will be altered - instead of displaying data for the first item in our ``sculpture_data`` list we will now display information about the second. @@ -293,14 +293,14 @@ below highlights a line of code where something of interest occurs: Multiple State Declarations --------------------------- -The powerful thing about hooks like :func:`~idom.core.hooks.use_state` is that you're +The powerful thing about hooks like :func:`~reactpy.core.hooks.use_state` is that you're not limited to just one state declaration. You can call ``use_state()`` as many times as you need to in one component. For example, in the example below we've added a ``show_more`` state variable along with a few other modifications (e.g. renaming ``handle_click``) to make the description for each sculpture optionally displayed. Only when the user clicks the "Show details" button is this description shown: -.. idom:: _examples/multiple_state_variables +.. reactpy:: _examples/multiple_state_variables It's generally a good idea to define separate state variables if the data they represent is unrelated. In this case, ``index`` corresponds to what sculpture information is being @@ -326,7 +326,7 @@ In this example, the ``Gallery`` component from earlier is rendered twice with n changes to its logic. Try clicking the buttons inside each of the galleries. Notice that their state is independent: -.. idom:: _examples/isolated_state +.. reactpy:: _examples/isolated_state :result-is-default-tab: This is what makes state different from regular variables that you might declare at the @@ -347,5 +347,5 @@ remove it without impacting the rest of the components. ^^^^^^^^^^^^^^^^^^^^^^^^^ What if you wanted both galleries to keep their states in sync? The right way to do - it in IDOM is to remove state from child components and add it to their closest + it in ReactPy is to remove state from child components and add it to their closest shared parent. diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py index c3ca24266..6c3c783da 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_remove.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py index 518bd3132..32dd4073a 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/dict_update.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py index 98617e341..1f4072e0b 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_insert.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py index 37ce97f7d..b3bf5a85a 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_re_order.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py index 3a9126802..6223284f6 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_remove.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py index ce9ae1aec..4952b9597 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/list_replace.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py index 6e5e66b67..e5ab54dca 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py index 68198c93a..8972ce74e 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/moving_dot_broken.py @@ -1,6 +1,6 @@ # :linenos: -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py index a56eaa9ab..be5366cb2 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_remove.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py index 0d38462fa..8ff2e1ca4 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/_examples/set_update.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst b/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst index 80a4e6a04..35dfe580a 100644 --- a/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst +++ b/docs/source/guides/adding-interactivity/dangers-of-mutability/index.rst @@ -2,7 +2,7 @@ Dangers of Mutability ===================== While state can hold any type of value, you should be careful to avoid directly -modifying objects that you declare as state with IDOM. In other words, you must not +modifying objects that you declare as state with ReactPy. In other words, you must not :ref:`"mutate" ` values which are held as state. Rather, to change these values you should use new ones or create copies. @@ -51,13 +51,13 @@ have not had to consider the consiquences of mutations. Why Avoid Mutation? ------------------- -Unfortunately, IDOM does not understand that when a value is mutated, it may have +Unfortunately, ReactPy does not understand that when a value is mutated, it may have changed. As a result, mutating values will not trigger re-renders. Thus, you must be -careful to avoid mutation whenever you want IDOM to re-render a component. For example, +careful to avoid mutation whenever you want ReactPy to re-render a component. For example, the intention of the code below is to make the red dot move when you touch or hover over the preview area. However it doesn't - the dot remains stationary: -.. idom:: _examples/moving_dot_broken +.. reactpy:: _examples/moving_dot_broken The problem is with this section of code: @@ -68,7 +68,7 @@ The problem is with this section of code: :lineno-start: 13 This code mutates the ``position`` dictionary from the prior render instead of using the -state variable's associated state setter. Without calling setter IDOM has no idea that +state variable's associated state setter. Without calling setter ReactPy has no idea that the variable's data has been modified. While it can be possible to get away with mutating state variables, it's highly dicsouraged. Doing so can cause strange and unpredictable behavior. As a result, you should always treat the data within a state @@ -80,7 +80,7 @@ call it by passing a *new* dictionary with the values for the next render. Notic by making these alterations to the code, that the dot now follows your pointer when you touch or hover over the preview: -.. idom:: _examples/moving_dot +.. reactpy:: _examples/moving_dot .. dropdown:: Local mutation can be alright @@ -208,7 +208,7 @@ updating user information with a preview of the currently entered data. We can accomplish this using `"unpacking" `__ with the ``**`` syntax: -.. idom:: _examples/dict_update +.. reactpy:: _examples/dict_update .. _removing-dictionary-items: @@ -249,7 +249,7 @@ set of keys. One way to do this is with a dictionary comprehension. The example shows an interface where you're able to enter a new term and definition. Once added, you can click a delete button to remove the term and definition: -.. idom:: _examples/dict_remove +.. reactpy:: _examples/dict_remove Working with Lists @@ -349,7 +349,7 @@ the items we want to append instead. There are several ways to do this for one o values however it's often simplest to use `"unpacking" `__ with the ``*`` syntax. -.. idom:: _examples/list_insert +.. reactpy:: _examples/list_insert .. _removing-list-items: @@ -378,7 +378,7 @@ not quite as clean. You must select the portion the list prior to the item which be removed (``l[:index]``) and the portion after the item (``l[index + 1:]``) and add them together: -.. idom:: _examples/list_remove +.. reactpy:: _examples/list_remove .. _replacing-list-items: @@ -409,7 +409,7 @@ must select the portion before and after the item in question. But this time, in of adding those two selections together, you must insert that values you want to replace between them: -.. idom:: _examples/list_replace +.. reactpy:: _examples/list_replace .. _re-ordering-list-items: @@ -441,7 +441,7 @@ list object, you should use the builtin functions :func:`sorted` and :func:`reve and pass the resulting iterator into the :class:`list` constructor to create a sorted or reversed copy of the given list: -.. idom:: _examples/list_re_order +.. reactpy:: _examples/list_re_order Working with Sets @@ -512,7 +512,7 @@ or operator ``|`` serves as a succinct way to compute the union of two sets. How you should be careful to not use an in-place assignment with this operator as that will (counterintuitively) mutate the original set rather than creating a new one. -.. idom:: _examples/set_update +.. reactpy:: _examples/set_update .. _removing-set-items: @@ -558,7 +558,7 @@ methods to return new sets without mutating them. As before when :ref:`adding se you need to avoid using the inline assignment operators since that will (counterintuitively) mutate the original set rather than given you a new one: -.. idom:: _examples/set_remove +.. reactpy:: _examples/set_remove Useful Packages diff --git a/docs/source/guides/adding-interactivity/index.rst b/docs/source/guides/adding-interactivity/index.rst index a09db3f51..5f08bc5e4 100644 --- a/docs/source/guides/adding-interactivity/index.rst +++ b/docs/source/guides/adding-interactivity/index.rst @@ -56,11 +56,11 @@ Adding Interactivity Section 1: Responding to Events ------------------------------- -IDOM lets you add event handlers to your parts of the interface. This means that you can +ReactPy lets you add event handlers to your parts of the interface. This means that you can define synchronous or asynchronous functions that are triggered when a particular user interaction occurs like clicking, hovering, of focusing on form inputs, and more. -.. idom:: responding-to-events/_examples/button_prints_message +.. reactpy:: responding-to-events/_examples/button_prints_message It may feel weird to define a function within a function like this, but doing so allows the ``handle_event`` function to access information from within the scope of the @@ -85,16 +85,16 @@ Components often need to change what’s on the screen as a result of an interac example, typing into the form should update the input field, clicking a “Comment” button should bring up a text input field, clicking “Buy” should put a product in the shopping cart. Components need to “remember” things like the current input value, the current -image, the shopping cart. In IDOM, this kind of component-specific memory is created and +image, the shopping cart. In ReactPy, this kind of component-specific memory is created and updated with a "hook" called ``use_state()`` that creates a **state variable** and **state setter** respectively: -.. idom:: components-with-state/_examples/adding_state_variable +.. reactpy:: components-with-state/_examples/adding_state_variable -In IDOM, ``use_state``, as well as any other function whose name starts with ``use``, is -called a "hook". These are special functions that should only be called while IDOM is +In ReactPy, ``use_state``, as well as any other function whose name starts with ``use``, is +called a "hook". These are special functions that should only be called while ReactPy is :ref:`rendering `. They let you "hook into" the different -capabilities of IDOM's components of which ``use_state`` is just one (well get into the +capabilities of ReactPy's components of which ``use_state`` is just one (well get into the other :ref:`later `). .. card:: @@ -122,7 +122,7 @@ which owns the state. set_count(count + 1) # schedule a re-render where count is 1 print(count) # still prints: 0 -This behavior of IDOM means that each render of a component is like taking a snapshot of +This behavior of ReactPy means that each render of a component is like taking a snapshot of the UI based on the component's state at that time. Treating state in this way can help reduce subtle bugs. For instance, in the code below there's a simple chat app with a message input and recipient selector. The catch is that the message actually gets sent 5 @@ -130,7 +130,7 @@ seconds after the "Send" button is clicked. So what would happen if we changed t recipient between the time the "Send" button was clicked and the moment the message is actually sent? -.. idom:: state-as-a-snapshot/_examples/print_chat_message +.. reactpy:: state-as-a-snapshot/_examples/print_chat_message As it turns out, changing the message recipient after pressing send does not change where the message ulitmately goes. However, one could imagine a bug where the recipient @@ -138,7 +138,7 @@ of a message is determined at the time the message is sent rather than at the ti "Send" button it clicked. Thus changing the recipient after pressing send would change where the message got sent. -In many cases, IDOM avoids this class of bug entirely because it treats state as a +In many cases, ReactPy avoids this class of bug entirely because it treats state as a snapshot. .. card:: @@ -159,10 +159,10 @@ changes to state only take effect in the next render, not in the current one. Fu changes to state are batched, calling a particular state setter 3 times won't trigger 3 renders, it will only trigger 1. This means that multiple state assignments are batched - so long as the event handler is synchronous (i.e. the event handler is not an -``async`` function), IDOM waits until all the code in an event handler has run before +``async`` function), ReactPy waits until all the code in an event handler has run before processing state and starting the next render: -.. idom:: multiple-state-updates/_examples/set_color_3_times +.. reactpy:: multiple-state-updates/_examples/set_color_3_times Sometimes though, you need to update a state variable more than once before the next render. In these cases, instead of having updates batched, you instead want them to be @@ -172,7 +172,7 @@ To accomplish this, instead of passing the next state value directly (e.g. ``compute_new_state(old_state)`` to the state setter (e.g. ``set_state(compute_new_state)``): -.. idom:: multiple-state-updates/_examples/set_state_function +.. reactpy:: multiple-state-updates/_examples/set_state_function .. card:: :link: multiple-state-updates/index @@ -188,17 +188,17 @@ Section 5: Dangers of Mutability -------------------------------- While state can hold any type of value, you should be careful to avoid directly -modifying objects that you declare as state with IDOM. In other words, you must not +modifying objects that you declare as state with ReactPy. In other words, you must not :ref:`"mutate" ` values which are held as state. Rather, to change these values you should use new ones or create copies. -This is because IDOM does not understand that when a value is mutated, it may have +This is because ReactPy does not understand that when a value is mutated, it may have changed. As a result, mutating values will not trigger re-renders. Thus, you must be -careful to avoid mutation whenever you want IDOM to re-render a component. For example, +careful to avoid mutation whenever you want ReactPy to re-render a component. For example, instead of mutating dictionaries to update their items you should instead create a copy that contains the desired changes: -.. idom:: dangers-of-mutability/_examples/dict_update +.. reactpy:: dangers-of-mutability/_examples/dict_update .. card:: :link: dangers-of-mutability/index diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py index 77a723b03..e53c5b1ad 100644 --- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py +++ b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_count_updater.py @@ -1,6 +1,6 @@ import asyncio -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py index f3df72475..bb64724f1 100644 --- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py +++ b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/delay_before_set_count.py @@ -1,6 +1,6 @@ import asyncio -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py index d4c8f3e77..59d7d0f20 100644 --- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py +++ b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_color_3_times.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state @component diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py index cdf8931fe..56bbe80e3 100644 --- a/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py +++ b/docs/source/guides/adding-interactivity/multiple-state-updates/_examples/set_state_function.py @@ -1,4 +1,4 @@ -from idom import component, html, run, use_state +from reactpy import component, html, run, use_state def increment(old_number): diff --git a/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst b/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst index 73524e173..6cfc415cd 100644 --- a/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst +++ b/docs/source/guides/adding-interactivity/multiple-state-updates/index.rst @@ -15,16 +15,16 @@ This is why, in the example below, even though it might seem like clicking the "Increment" button would cause the ``number`` to increase by ``3``, it only does by ``1``: -.. idom:: ../state-as-a-snapshot/_examples/set_counter_3_times +.. reactpy:: ../state-as-a-snapshot/_examples/set_counter_3_times The reason this happens is because, so long as the event handler is synchronous (i.e. -the event handler is not an ``async`` function), IDOM waits until all the code in an +the event handler is not an ``async`` function), ReactPy waits until all the code in an event handler has run before processing state and starting the next render. Thus, it's the last call to a given state setter that matters. In the example below, even though we set the color of the button to ``"orange"`` and then ``"pink"`` before ``"blue"``, the color does not quickly flash orange and pink before blue - it alway remains blue: -.. idom:: _examples/set_color_3_times +.. reactpy:: _examples/set_color_3_times This behavior let's you make multiple state changes without triggering unnecessary renders or renders with inconsistent state where only some of the variables have been @@ -33,13 +33,13 @@ handlers have finished running. .. note:: - For asynchronous event handlers, IDOM will not render until you ``await`` something. + For asynchronous event handlers, ReactPy will not render until you ``await`` something. As we saw in :ref:`prior examples `, if you introduce an asynchronous delay to an event handler after changing state, renders may take place before the remainder of the event handler completes. However, state variables within handlers, even async ones, always remains static. -This behavior of IDOM to "batch" state changes that take place inside a single event +This behavior of ReactPy to "batch" state changes that take place inside a single event handler, do not extend across event handlers. In other words, distinct events will always produce distinct renders. To give an example, if clicking a button increments a counter by one, no matter how fast the user clicks, the view will never jump from 1 to 3 @@ -77,9 +77,9 @@ In our case, ``new_state = old_state + 1``. So we might define: Which we can use to replace ``set_number(number + 1)`` with ``set_number(increment)``: -.. idom:: _examples/set_state_function +.. reactpy:: _examples/set_state_function -The way to think about how IDOM runs though this series of ``set_state(increment)`` +The way to think about how ReactPy runs though this series of ``set_state(increment)`` calls is to imagine that each one updates the internally managed state with its return value, then that return value is being passed to the next updater function. Ultimately, this is functionally equivalent to the following: @@ -94,14 +94,14 @@ introduced a delay before ``set_number(number + 1)``. What would happen if we cl the "Increment" button more than once before the delay in the first triggered event completed? -.. idom:: _examples/delay_before_set_count +.. reactpy:: _examples/delay_before_set_count From an :ref:`earlier lesson `, we learned that introducing delays do not change the fact that state variables do not change until the next render. As a result, despite clicking many times before the delay completes, the ``number`` only increments by one. To solve this we can use updater functions: -.. idom:: _examples/delay_before_count_updater +.. reactpy:: _examples/delay_before_count_updater Now when you click the "Increment" button, each click, though delayed, corresponds to ``number`` being increased. This is because the ``old_number`` in the updater function diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py index 41e216971..82826c50d 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/audio_player.py @@ -1,21 +1,21 @@ import json -import idom +import reactpy -@idom.component +@reactpy.component def PlayDinosaurSound(): - event, set_event = idom.hooks.use_state(None) - return idom.html.div( - idom.html.audio( + event, set_event = reactpy.hooks.use_state(None) + return reactpy.html.div( + reactpy.html.audio( { "controls": True, "on_time_update": lambda e: set_event(e), "src": "https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3", } ), - idom.html.pre(json.dumps(event, indent=2)), + reactpy.html.pre(json.dumps(event, indent=2)), ) -idom.run(PlayDinosaurSound) +reactpy.run(PlayDinosaurSound) diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py index a1c57eb03..992641e00 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_async_handlers.py @@ -1,6 +1,6 @@ import asyncio -from idom import component, html, run +from reactpy import component, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py index e26e770d2..ea8313263 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_does_nothing.py @@ -1,4 +1,4 @@ -from idom import component, html, run +from reactpy import component, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py index f08bcd95f..e5276bef3 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_handler_as_arg.py @@ -1,4 +1,4 @@ -from idom import component, html, run +from reactpy import component, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py index 32854d8f6..38638db4b 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_event.py @@ -1,4 +1,4 @@ -from idom import component, html, run +from reactpy import component, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py index e2790ce52..56118a57f 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/button_prints_message.py @@ -1,4 +1,4 @@ -from idom import component, html, run +from reactpy import component, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py index 3b9cfc1ae..d3f0941bd 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/prevent_default_event_actions.py @@ -1,4 +1,4 @@ -from idom import component, event, html, run +from reactpy import component, event, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py b/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py index 0a7543ce7..15e345bdd 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py +++ b/docs/source/guides/adding-interactivity/responding-to-events/_examples/stop_event_propagation.py @@ -1,4 +1,4 @@ -from idom import component, event, hooks, html, run +from reactpy import component, event, hooks, html, run @component diff --git a/docs/source/guides/adding-interactivity/responding-to-events/index.rst b/docs/source/guides/adding-interactivity/responding-to-events/index.rst index 6e916b6bf..26f1c49e4 100644 --- a/docs/source/guides/adding-interactivity/responding-to-events/index.rst +++ b/docs/source/guides/adding-interactivity/responding-to-events/index.rst @@ -1,7 +1,7 @@ Responding to Events ==================== -IDOM lets you add event handlers to your parts of the interface. These events handlers +ReactPy lets you add event handlers to your parts of the interface. These events handlers are functions which can be assigned to a part of a UI such that, when a user iteracts with the interface, those functions get triggered. Examples of interaction include clicking, hovering, of focusing on form inputs, and more. @@ -12,7 +12,7 @@ Adding Event Handlers To start out we'll just display a button that, for the moment, doesn't do anything: -.. idom:: _examples/button_does_nothing +.. reactpy:: _examples/button_does_nothing To add an event handler to this button we'll do three things: @@ -20,19 +20,19 @@ To add an event handler to this button we'll do three things: 2. Add logic to ``handle_event`` that will print the ``event`` it receives to the console. 3. Add an ``"onClick": handle_event`` attribute to the ``

  • fXlv%2k74~BZx`;ZV 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

    -What this shows is that you can recreate the same HTML layouts with IDOM using functions -from the :mod:`idom.html` module. These function share the same names as their +What this shows is that you can recreate the same HTML layouts with ReactPy using functions +from the :mod:`reactpy.html` module. These function share the same names as their corresponding HTML tags. For instance, the ``

    `` element above has a similarly named -:func:`~idom.html.h1` function. With that said, while the code above looks similar, it's +:func:`~reactpy.html.h1` function. With that said, while the code above looks similar, it's not very useful because we haven't captured the results from these function calls in a variable. To do this we need to wrap up the layout above into a single -:func:`~idom.html.div` and assign it to a variable: +:func:`~reactpy.html.div` and assign it to a variable: .. testcode:: @@ -83,8 +83,8 @@ to specify a URL to its ``src`` and use some ``style`` to modify and position it tabindex="0" /> -In IDOM we add these attributes to elements using keyword arguments. There are two main -notable differences though. First, all names in IDOM use ``snake_case`` instead of +In ReactPy we add these attributes to elements using keyword arguments. There are two main +notable differences though. First, all names in ReactPy use ``snake_case`` instead of dash-separated words. For example, ``tabindex`` and ``margin-left`` become ``tab_index`` and ``margin_left`` respectively. Second, instead of specifying ``style`` using a string, we use a dictionary. Given this, you can rewrite the ```` element above as: @@ -113,10 +113,10 @@ string, we use a dictionary. Given this, you can rewrite the ```` element a .. card:: - :link: /guides/understanding-idom/representing-html + :link: /guides/understanding-reactpy/representing-html :link-type: doc :octicon:`book` Read More ^^^^^^^^^^^^^^^^^^^^^^^^^ - Dive into the data structures IDOM uses to represent HTML + Dive into the data structures ReactPy uses to represent HTML diff --git a/docs/source/guides/creating-interfaces/index.rst b/docs/source/guides/creating-interfaces/index.rst index f8ec0016c..78466eaef 100644 --- a/docs/source/guides/creating-interfaces/index.rst +++ b/docs/source/guides/creating-interfaces/index.rst @@ -4,7 +4,7 @@ Creating Interfaces .. toctree:: :hidden: - html-with-idom/index + html-with-reactpy/index your-first-components/index rendering-data/index @@ -15,8 +15,8 @@ Creating Interfaces .. grid:: 1 2 2 2 - .. grid-item-card:: :octicon:`code-square` HTML with IDOM - :link: html-with-idom/index + .. grid-item-card:: :octicon:`code-square` HTML with ReactPy + :link: html-with-reactpy/index :link-type: doc Construct HTML layouts from the basic units of user interface functionality. @@ -34,20 +34,20 @@ Creating Interfaces Use data to organize and render HTML elements and components. -IDOM is a Python package for making user interfaces (UI). These interfaces are built -from small elements of functionality like buttons text and images. IDOM allows you to +ReactPy is a Python package for making user interfaces (UI). These interfaces are built +from small elements of functionality like buttons text and images. ReactPy allows you to combine these elements into reusable, nestable :ref:`"components" `. In the sections that follow you'll learn how these UI elements are created and organized into components. Then, you'll use components to customize and conditionally display more complex UIs. -Section 1: HTML with IDOM -------------------------- +Section 1: HTML with ReactPy +---------------------------- In a typical Python-base web application the responsibility of defining the view along with its backing data and logic are distributed between a client and server -respectively. With IDOM, both these tasks are centralized in a single place. The most +respectively. With ReactPy, both these tasks are centralized in a single place. The most foundational pilar of this capability is formed by allowing HTML interfaces to be constructed in Python. Let's consider the HTML sample below: @@ -59,11 +59,11 @@ constructed in Python. Let's consider the HTML sample below:
  • Share it with the world!
  • -To recreate the same thing in IDOM you would write: +To recreate the same thing in ReactPy you would write: .. code-block:: - from idom import html + from reactpy import html html.div( html.h1("My Todo List"), @@ -75,7 +75,7 @@ To recreate the same thing in IDOM you would write: ) .. card:: - :link: html-with-idom/index + :link: html-with-reactpy/index :link-type: doc :octicon:`book` Read More @@ -87,14 +87,14 @@ To recreate the same thing in IDOM you would write: Section 2: Your First Components -------------------------------- -The next building block in our journey with IDOM are components. At their core, -components are just a normal Python functions that return :ref:`HTML `. +The next building block in our journey with ReactPy are components. At their core, +components are just a normal Python functions that return :ref:`HTML `. The one special thing about them that we'll concern ourselves with now, is that to create them we need to add an ``@component`` `decorator `__. To see what this looks like in practice we'll quickly make a ``Photo`` component: -.. idom:: your-first-components/_examples/simple_photo +.. reactpy:: your-first-components/_examples/simple_photo .. card:: :link: your-first-components/index @@ -116,7 +116,7 @@ from data in this way must be organized with :ref:`"keys" `` elements: .. testcode:: - from idom import html + from reactpy import html list_item_elements = [html.li(text) for text in tasks] @@ -52,7 +52,7 @@ This list of elements can then be passed into a parent ``