From 7db38fd10e2098aa2dfb5f034ade23a37fc06e6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 11:05:44 -0500 Subject: [PATCH 001/176] chore(deps-dev): Bump @types/jest from 29.5.2 to 29.5.3 in /node (#392) Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 29.5.2 to 29.5.3.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/jest&package-manager=npm_and_yarn&previous-version=29.5.2&new-version=29.5.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index fa085b2b7..f50a44a39 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1118,9 +1118,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", - "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "version": "29.5.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", + "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", "dev": true, "dependencies": { "expect": "^29.0.0", From 4548480c0be957fa58116e4135e0acd60e0c1fa6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 11:05:53 -0500 Subject: [PATCH 002/176] chore(deps-dev): Bump @types/node from 20.4.1 to 20.4.2 in /node (#391) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.1 to 20.4.2.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.1&new-version=20.4.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index f50a44a39..990252fbf 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1128,9 +1128,9 @@ } }, "node_modules/@types/node": { - "version": "20.4.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz", - "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==" + "version": "20.4.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", + "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" }, "node_modules/@types/prettier": { "version": "2.7.3", From f4aa139eced4a74eb4a103f78222ba503e146109 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 11:06:03 -0500 Subject: [PATCH 003/176] chore(deps-dev): Bump ex_doc from 0.30.1 to 0.30.3 in /elixir (#390) Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.1 to 0.30.3.
Changelog

Sourced from ex_doc's changelog.

v0.30.3 (2023-07-15)

  • Enhancements

    • Compress search index before storing in local storage
  • Bug fixes

    • Fix styling for headers on cheatsheets and small screens

v0.30.2 (2023-07-11)

  • Bug fixes
    • Fix escaping in search_data.json
    • Skip vega-lite code blocks in search_data.json
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.1&new-version=0.30.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- elixir/mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elixir/mix.lock b/elixir/mix.lock index bb0297913..35033e6c6 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -1,6 +1,6 @@ %{ "earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"}, - "ex_doc": {:hex, :ex_doc, "0.30.1", "a0f3b598d3c2cb3af48af39e59fa66ac8d4033740409b11dd753a3f30f8f8f7a", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "2e2216e84aa33e5803f8898d762b0f5e76bf2de3a08d1f40ac5f74456dd5057c"}, + "ex_doc": {:hex, :ex_doc, "0.30.3", "bfca4d340e3b95f2eb26e72e4890da83e2b3a5c5b0e52607333bf5017284b063", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "fbc8702046c1d25edf79de376297e608ac78cdc3a29f075484773ad1718918b6"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, From 618c13219476635a8e054f5bc79ac9efee877b90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 08:30:36 -0500 Subject: [PATCH 004/176] chore(deps-dev): Bump word-wrap from 1.2.3 to 1.2.4 in /browser (#394) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4.
Release notes

Sourced from word-wrap's releases.

1.2.4

What's Changed

New Contributors

Full Changelog: https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4

Commits
  • f64b188 run verb to generate README
  • 03ea082 Merge pull request #42 from jonschlinkert/chore/publish-workflow
  • 420dce9 Merge pull request #41 from jonschlinkert/fix/CVE-2023-26115-2
  • bfa694e Update .github/workflows/publish.yml
  • ace0b3c chore: bump version to 1.2.4
  • 6fd7275 chore: add publish workflow
  • 30d6daf chore: fix test
  • 655929c chore: remove package-lock
  • 49e08bb chore: added an additional testcase
  • 9f62693 fix: cve 2023-26115
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=word-wrap&package-manager=npm_and_yarn&previous-version=1.2.3&new-version=1.2.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/extism/extism/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- browser/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/browser/package-lock.json b/browser/package-lock.json index 3d9ceeec2..ec1919e07 100644 --- a/browser/package-lock.json +++ b/browser/package-lock.json @@ -8108,9 +8108,9 @@ } }, "node_modules/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==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -14334,9 +14334,9 @@ } }, "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==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "wrap-ansi": { From 3da526286e3d7a062b2f9e224c0c4ddafc211764 Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 27 Jul 2023 11:31:23 -0700 Subject: [PATCH 005/176] feat: Implement parts of the extism runtime in WebAssembly (#384) This PR adds the `kernel` directory which contains a port of the Extism memory allocator compiled to WebAssembly and removes `runtime/src/memory.rs` completely. Being able to re-use memory functions as a WASM module allows us to begin to experiment with porting Extism to new runtimes! This is in a draft state while I'm verifying some of these changes. --- Cargo.toml | 1 + Makefile | 4 + kernel/.cargo/config | 2 + kernel/Cargo.toml | 11 + kernel/README.md | 20 ++ kernel/build.sh | 7 + kernel/src/bin/extism-runtime.rs | 10 + kernel/src/lib.rs | 446 +++++++++++++++++++++++++++++++ libextism/Cargo.toml | 2 +- manifest/Cargo.toml | 2 +- manifest/src/lib.rs | 10 +- python/example.py | 14 +- runtime/Cargo.toml | 3 +- runtime/build.rs | 12 + runtime/src/extism-runtime.wasm | Bin 0 -> 2743 bytes runtime/src/internal.rs | 311 +++++++++++++++++---- runtime/src/lib.rs | 2 - runtime/src/manifest.rs | 9 +- runtime/src/memory.rs | 376 -------------------------- runtime/src/pdk.rs | 259 +++--------------- runtime/src/plugin.rs | 246 +++++++++-------- runtime/src/plugin_ref.rs | 42 ++- runtime/src/sdk.rs | 131 +++++---- rust/Cargo.toml | 2 +- rust/src/lib.rs | 2 +- wasm/code-functions.wasm | Bin 22644 -> 18635 bytes zig/src/current_plugin.zig | 2 +- zig/src/utils.zig | 15 +- 28 files changed, 1062 insertions(+), 879 deletions(-) create mode 100644 kernel/.cargo/config create mode 100644 kernel/Cargo.toml create mode 100644 kernel/README.md create mode 100755 kernel/build.sh create mode 100644 kernel/src/bin/extism-runtime.rs create mode 100644 kernel/src/lib.rs create mode 100755 runtime/src/extism-runtime.wasm delete mode 100644 runtime/src/memory.rs diff --git a/Cargo.toml b/Cargo.toml index f084a5991..66e951fe2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,4 @@ members = [ "rust", "libextism", ] +exclude = ["kernel"] diff --git a/Makefile b/Makefile index b84d5ef23..60efe28a2 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,10 @@ endif build: cargo build --release $(FEATURE_FLAGS) --manifest-path libextism/Cargo.toml +.PHONY: kernel +kernel: + cd kernel && bash build.sh + lint: cargo clippy --release --no-deps --manifest-path runtime/Cargo.toml diff --git a/kernel/.cargo/config b/kernel/.cargo/config new file mode 100644 index 000000000..f4e8c002f --- /dev/null +++ b/kernel/.cargo/config @@ -0,0 +1,2 @@ +[build] +target = "wasm32-unknown-unknown" diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml new file mode 100644 index 000000000..b2bef0bde --- /dev/null +++ b/kernel/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "extism-runtime-kernel" +version = "0.1.0" +edition = "2021" + +[dependencies] + +[workspace] +members = [ + "." +] \ No newline at end of file diff --git a/kernel/README.md b/kernel/README.md new file mode 100644 index 000000000..0aa33060c --- /dev/null +++ b/kernel/README.md @@ -0,0 +1,20 @@ +# Extism kernel + +The Extism kernel implements core parts of the Extism runtime in Rust compiled to WebAssembly. This code is a conceptual +re-write of [memory.rs][] with the goal of making core parts of the Extism implementation more portable across WebAssembly +runtimes. + +See [lib.rs][] for more details about the implementation itself. + +## Building + +Because this crate is built using the `wasm32-unknown-unknown` target, it is a separate build process from the `extism-runtime` crate. + +To build `extism-runtime.wasm`, strip it and copy it to the proper location in the `extism-runtime` tree you can run: + +```shell +$ sh build.sh +``` + +[memory.rs]: https://github.com/extism/extism/blob/f4aa139eced4a74eb4a103f78222ba503e146109/runtime/src/memory.rs +[lib.rs]: ./src/lib.rs diff --git a/kernel/build.sh b/kernel/build.sh new file mode 100755 index 000000000..f283d0751 --- /dev/null +++ b/kernel/build.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +cargo build --release --target wasm32-unknown-unknown --package extism-runtime-kernel --bin extism-runtime +cp target/wasm32-unknown-unknown/release/extism-runtime.wasm . +wasm-strip extism-runtime.wasm || : +mv extism-runtime.wasm ../runtime/src/extism-runtime.wasm + diff --git a/kernel/src/bin/extism-runtime.rs b/kernel/src/bin/extism-runtime.rs new file mode 100644 index 000000000..7db966729 --- /dev/null +++ b/kernel/src/bin/extism-runtime.rs @@ -0,0 +1,10 @@ +#![no_main] +#![no_std] + +pub use extism_runtime_kernel::*; + +#[cfg(target_arch = "wasm32")] +#[panic_handler] +fn panic(_info: &core::panic::PanicInfo) -> ! { + core::arch::wasm32::unreachable() +} diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs new file mode 100644 index 000000000..287fe90c9 --- /dev/null +++ b/kernel/src/lib.rs @@ -0,0 +1,446 @@ +//! # Extism kernel +//! +//! - Isolated memory from both host and plugin +//! - An allocator for managing that memory +//! - Input/output handling +//! - Error message handling +//! - Backward compatible `extism_*` functions +//! +//! ## Allocator +//! +//! The Extism allocator is a bump allocator that tracks the `length` of the total number of bytes +//! available to the allocator and `position` to track how much of the data has been used. Things like memory +//! have not really been optimized at all. When a new allocation that is larger than the remaning size is made, +//! the allocator attempts to call `memory.grow` if that fails a `0` offset is returned, which should be interpreted +//! as a failed allocation. +//! +//! ## Input/Output +//! +//! Input and output are just allocated blocks of memory that are marked as either input or output using +//! the `extism_input_set` or `extism_output_set` functions. The global variables `INPUT_OFFSET` contains +//! the offset in memory to the input data and `INPUT_LENGTH` contains the size of the input data. `OUTPUT_OFFSET` +//! and `OUTPUT_LENGTH` are used for the output data. +//! +//! ## Error handling +//! +//! The `ERROR` global is used to track the current error message. If it is set to `0` then there is no error. +//! The length of the error message can be retreived using `extism_length`. +//! +//! ## Memory offsets +//! An offset of `0` is similar to a `NULL` pointer in C - it implies an allocation failure or memory error +//! of some kind +//! +//! ## Extism functions +//! +//! These functions are backward compatible with the pre-kernel runtime, but a few new functions are added to +//! give runtimes more access to the internals necesarry to load data in and out of a plugin. +#![no_std] +#![allow(clippy::missing_safety_doc)] + +use core::sync::atomic::*; + +pub type Pointer = u64; +pub type Length = u64; + +/// WebAssembly page size +const PAGE_SIZE: usize = 65536; + +/// Determines the amount of bytes that can be wasted by re-using a block. If more than this number is wasted by re-using +/// a block then it will be split into two smaller blocks. +const BLOCK_SPLIT_SIZE: usize = 128; + +/// Offset to the input data +static mut INPUT_OFFSET: Pointer = 0; + +/// Length of the input data +static mut INPUT_LENGTH: Length = 0; + +/// Offset to the output data +static mut OUTPUT_OFFSET: Pointer = 0; + +/// Offset to the input data +static mut OUTPUT_LENGTH: Length = 0; + +/// Current error message +static mut ERROR: AtomicU64 = AtomicU64::new(0); + +/// Determines if the kernel has been initialized already +static mut INITIALIZED: AtomicBool = AtomicBool::new(false); + +/// A pointer to the first page that will be managed by Extism, this is set during initialization +static mut START_PAGE: usize = 0; + +/// Provides information about the usage status of a `MemoryBlock` +#[repr(u8)] +#[derive(PartialEq)] +pub enum MemoryStatus { + /// Unused memory that is available b + Unused = 0, + /// In-use memory + Active = 1, + /// Free memory that is available for re-use + Free = 2, +} + +/// A single `MemoryRoot` exists at the start of the memory to track information about the total +/// size of the allocated memory and the position of the bump allocator. +/// +/// The overall layout of the Extism-manged memory is organized like this: + +/// |------|-------|---------|-------|--------------| +/// | Root | Block | Data | Block | Data | ... +/// |------|-------|---------|-------|--------------| +/// +/// Where `Root` and `Block` are fixed to the size of the `MemoryRoot` and `MemoryBlock` structs. But +/// the size of `Data` is dependent on the allocation size. +#[repr(C)] +pub struct MemoryRoot { + /// Position of the bump allocator, relative to `START_PAGE` + pub position: AtomicU64, + /// The total size of all data allocated using this allocator + pub length: AtomicU64, + /// A pointer to where the blocks begin + pub blocks: [MemoryBlock; 0], +} + +/// A `MemoryBlock` contains some metadata about a single allocation +#[repr(C)] +pub struct MemoryBlock { + /// The usage status of the block, `Unused` or `Free` blocks can be re-used. + pub status: AtomicU8, + /// The total size of the allocation + pub size: usize, + /// The number of bytes currently being used. If this block is a fresh allocation then `size` and `used` will + /// always be the same. If a block is re-used then these numbers may differ. + pub used: usize, + /// A pointer to the block data + pub data: [u8; 0], +} + +/// Returns the number of pages needed for the given number of bytes +pub fn num_pages(nbytes: u64) -> usize { + let nbytes = nbytes as f64; + let page = PAGE_SIZE as f64; + ((nbytes / page) + 0.5) as usize +} + +// Get the `MemoryRoot` at the correct offset in memory +#[inline] +unsafe fn memory_root() -> &'static mut MemoryRoot { + &mut *((START_PAGE * PAGE_SIZE) as *mut MemoryRoot) +} + +impl MemoryRoot { + /// Initialize or load the `MemoryRoot` from the correct position in memory + pub unsafe fn new() -> &'static mut MemoryRoot { + // If this fails then `INITIALIZED` is already `true` and we can just return the + // already initialized `MemoryRoot` + if INITIALIZED + .compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed) + .is_err() + { + return memory_root(); + } + + // Ensure that at least one page is allocated to store the `MemoryRoot` data + START_PAGE = core::arch::wasm32::memory_grow(0, 1); + if START_PAGE == usize::MAX { + panic!("Out of memory"); + } + + // Initialize the `MemoryRoot` length, position and data + let root = memory_root(); + root.length.store( + PAGE_SIZE as u64 - core::mem::size_of::() as u64, + Ordering::Release, + ); + root.position.store(0, Ordering::Release); + + // Ensure the first block is marked as `Unused` + #[allow(clippy::size_of_in_element_count)] + core::ptr::write_bytes( + root.blocks.as_mut_ptr() as *mut _, + MemoryStatus::Unused as u8, + core::mem::size_of::(), + ); + root + } + + /// Resets the position of the allocator and zeroes out all allocations + pub unsafe fn reset(&mut self) { + core::ptr::write_bytes( + self.blocks.as_mut_ptr() as *mut u8, + 0, + self.length.load(Ordering::Acquire) as usize, + ); + self.position.store(0, Ordering::Release); + } + + // Find a block that is free to use, this can be a new block or an existing freed block. The `self_position` argument + // is used to avoid loading the allocators position more than once when performing an allocation. + unsafe fn find_free_block( + &mut self, + length: Length, + self_position: u64, + ) -> Option<&'static mut MemoryBlock> { + // Get the first block + let mut block = self.blocks.as_mut_ptr(); + + // Only loop while the block pointer is less then the current position + while (block as u64) < self.blocks.as_ptr() as u64 + self_position { + let b = &mut *block; + + let status = b.status.load(Ordering::Acquire); + + // An unused block is safe to use + if status == MemoryStatus::Unused as u8 { + return Some(b); + } + + // Re-use freed blocks when they're large enough + if status == MemoryStatus::Free as u8 && b.size >= length as usize { + // Split block if there is too much excess + if b.size - length as usize >= BLOCK_SPLIT_SIZE { + b.size -= length as usize; + b.used = 0; + + let block1 = b.data.as_mut_ptr().add(b.size) as *mut MemoryBlock; + let b1 = &mut *block1; + b1.size = length as usize; + b1.used = 0; + b1.status.store(MemoryStatus::Free as u8, Ordering::Release); + return Some(b1); + } + + // Otherwise return the whole block + return Some(b); + } + + // Get the next block + block = b.next_ptr(); + } + + None + } + + /// Create a new `MemoryBlock`, when `Some(block)` is returned, `block` will contain at least enough room for `length` bytes + /// but may be as large as `length` + `BLOCK_SPLIT_SIZE` bytes. When `None` is returned the allocation has failed. + pub unsafe fn alloc(&mut self, length: Length) -> Option<&'static mut MemoryBlock> { + let self_position = self.position.load(Ordering::Acquire); + let self_length = self.length.load(Ordering::Acquire); + let b = self.find_free_block(length, self_position); + + // If there's a free block then re-use it + if let Some(b) = b { + b.used = length as usize; + b.status + .store(MemoryStatus::Active as u8, Ordering::Release); + return Some(b); + } + + // Get the current index for a new block + let curr = self.blocks.as_ptr() as u64 + self_position; + + // Get the number of bytes available + let mem_left = self_length - self_position; + + // When the allocation is larger than the number of bytes available + // we will need to try to grow the memory + if length >= mem_left { + // Calculate the number of pages needed to cover the remaining bytes + let npages = num_pages(length); + let x = core::arch::wasm32::memory_grow(0, npages); + if x == usize::MAX { + return None; + } + self.length + .fetch_add(npages as u64 * PAGE_SIZE as u64, Ordering::SeqCst); + } + + // Bump the position by the size of the actual data + the size of the MemoryBlock structure + self.position.fetch_add( + length + core::mem::size_of::() as u64, + Ordering::SeqCst, + ); + + // Initialize a new block at the current position + let ptr = curr as *mut MemoryBlock; + let block = &mut *ptr; + block + .status + .store(MemoryStatus::Active as u8, Ordering::Release); + block.size = length as usize; + block.used = length as usize; + Some(block) + } + + /// Finds the block at an offset in memory + pub unsafe fn find_block(&mut self, offs: Pointer) -> Option<&mut MemoryBlock> { + if offs >= self.blocks.as_ptr() as Pointer + self.length.load(Ordering::Acquire) as Pointer + { + return None; + } + let ptr = offs - core::mem::size_of::() as u64; + let ptr = ptr as *mut MemoryBlock; + Some(&mut *ptr) + } +} + +impl MemoryBlock { + /// Get a pointer to the next block + /// + /// NOTE: This does no checking to ensure the resulting pointer is valid, the offset + /// is calculated based on metadata provided by the current block + #[inline] + pub unsafe fn next_ptr(&mut self) -> *mut MemoryBlock { + self.data + .as_mut_ptr() + .add(self.size + core::mem::size_of::()) as *mut MemoryBlock + } + + /// Mark a block as free + pub fn free(&mut self) { + self.status + .store(MemoryStatus::Free as u8, Ordering::Release); + } +} + +// Extism functions - these functions should be + +/// Allocate a block of memory and return the offset +#[no_mangle] +pub unsafe fn extism_alloc(n: Length) -> Pointer { + let region = MemoryRoot::new(); + let block = region.alloc(n); + match block { + Some(block) => block.data.as_mut_ptr() as Pointer, + None => 0, + } +} + +/// Free allocated memory +#[no_mangle] +pub unsafe fn extism_free(p: Pointer) { + let block = MemoryRoot::new().find_block(p); + if let Some(block) = block { + block.free(); + } +} + +/// Get the length of an allocated memory block +#[no_mangle] +pub unsafe fn extism_length(p: Pointer) -> Length { + if p == 0 { + return 0; + } + if let Some(block) = MemoryRoot::new().find_block(p) { + block.used as Length + } else { + 0 + } +} + +/// Load a byte from Extism-managed memory +#[no_mangle] +pub unsafe fn extism_load_u8(p: Pointer) -> u8 { + *(p as *mut u8) +} + +/// Load a u64 from Extism-managed memory +#[no_mangle] +pub unsafe fn extism_load_u64(p: Pointer) -> u64 { + *(p as *mut u64) +} + +/// Load a byte from the input data +#[no_mangle] +pub unsafe fn extism_input_load_u8(p: Pointer) -> u8 { + *((INPUT_OFFSET + p) as *mut u8) +} + +/// Load a u64 from the input data +#[no_mangle] +pub unsafe fn extism_input_load_u64(p: Pointer) -> u64 { + *((INPUT_OFFSET + p) as *mut u64) +} + +/// Write a byte in Extism-managed memory +#[no_mangle] +pub unsafe fn extism_store_u8(p: Pointer, x: u8) { + *(p as *mut u8) = x; +} + +/// Write a u64 in Extism-managed memory +#[no_mangle] +pub unsafe fn extism_store_u64(p: Pointer, x: u64) { + unsafe { + *(p as *mut u64) = x; + } +} + +/// Set the range of the input data in memory +#[no_mangle] +pub fn extism_input_set(p: Pointer, len: Length) { + unsafe { + INPUT_OFFSET = p; + INPUT_LENGTH = len; + } +} + +/// Set the range of the output data in memory +#[no_mangle] +pub fn extism_output_set(p: Pointer, len: Length) { + unsafe { + OUTPUT_OFFSET = p; + OUTPUT_LENGTH = len; + } +} + +/// Get the input length +#[no_mangle] +pub fn extism_input_length() -> Length { + unsafe { INPUT_LENGTH } +} + +/// Get the input offset in Exitsm-managed memory +#[no_mangle] +pub fn extism_input_offset() -> Length { + unsafe { INPUT_OFFSET } +} + +/// Get the output length +#[no_mangle] +pub fn extism_output_length() -> Length { + unsafe { OUTPUT_LENGTH } +} + +/// Get the output offset in Extism-managed memory +#[no_mangle] +pub fn extism_output_offset() -> Length { + unsafe { OUTPUT_OFFSET } +} + +/// Reset the allocator +#[no_mangle] +pub unsafe fn extism_reset() { + ERROR.store(0, Ordering::SeqCst); + MemoryRoot::new().reset() +} + +/// Set the error message offset +#[no_mangle] +pub unsafe fn extism_error_set(ptr: Pointer) { + ERROR.store(ptr, Ordering::SeqCst); +} + +/// Get the error message offset, if it's `0` then no error has been set +#[no_mangle] +pub unsafe fn extism_error_get() -> Pointer { + ERROR.load(Ordering::SeqCst) +} + +/// Get the position of the allocator, this can be used as an indication of how many bytes are currently in-use +#[no_mangle] +pub unsafe fn extism_memory_bytes() -> Length { + MemoryRoot::new().position.load(Ordering::Acquire) +} diff --git a/libextism/Cargo.toml b/libextism/Cargo.toml index 5d31f9d54..b2ec3442e 100644 --- a/libextism/Cargo.toml +++ b/libextism/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libextism" -version = "0.3.0" +version = "0.4.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" diff --git a/manifest/Cargo.toml b/manifest/Cargo.toml index 1a8cc1ba6..987cd632c 100644 --- a/manifest/Cargo.toml +++ b/manifest/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extism-manifest" -version = "0.3.0" +version = "0.4.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" diff --git a/manifest/src/lib.rs b/manifest/src/lib.rs index 31fcf7470..dd57c1ce7 100644 --- a/manifest/src/lib.rs +++ b/manifest/src/lib.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; #[deprecated] pub type ManifestMemory = MemoryOptions; -#[derive(Default, serde::Serialize, serde::Deserialize)] +#[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct MemoryOptions { @@ -12,7 +12,7 @@ pub struct MemoryOptions { pub max_pages: Option, } -#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct HttpRequest { @@ -43,7 +43,7 @@ impl HttpRequest { } } -#[derive(Default, serde::Serialize, serde::Deserialize)] +#[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct WasmMetadata { @@ -81,7 +81,7 @@ impl From> for Wasm { #[deprecated] pub type ManifestWasm = Wasm; -#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(untagged)] #[serde(deny_unknown_fields)] @@ -153,7 +153,7 @@ fn base64_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema:: schema.into() } -#[derive(Default, serde::Serialize, serde::Deserialize)] +#[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct Manifest { diff --git a/python/example.py b/python/example.py index 2104527f2..b5021424e 100644 --- a/python/example.py +++ b/python/example.py @@ -5,7 +5,9 @@ import pathlib sys.path.append(".") -from extism import Function, host_fn, ValType, Plugin +from extism import Function, host_fn, ValType, Plugin, set_log_file + +set_log_file("stderr", "trace") @host_fn @@ -26,7 +28,7 @@ def main(args): if len(args) > 1: data = args[1].encode() else: - data = b"some data from python!" + data = b"a" * 1024 wasm_file_path = ( pathlib.Path(__file__).parent.parent / "wasm" / "code-functions.wasm" @@ -46,11 +48,13 @@ def main(args): ] plugin = Plugin(manifest, wasi=True, functions=functions) # Call `count_vowels` - wasm_vowel_count = json.loads(plugin.call("count_vowels", data)) + wasm_vowel_count = plugin.call("count_vowels", data) + print(wasm_vowel_count) + j = json.loads(wasm_vowel_count) - print("Number of vowels:", wasm_vowel_count["count"]) + print("Number of vowels:", j["count"]) - assert wasm_vowel_count["count"] == count_vowels(data) + assert j["count"] == count_vowels(data) if __name__ == "__main__": diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 51cd93d86..477811861 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -22,8 +22,7 @@ log4rs = "1.1" url = "2" glob = "0.3" ureq = {version = "2.5", optional=true} -extism-manifest = { version = "0.3.0", path = "../manifest" } -pretty-hex = { version = "0.3" } +extism-manifest = { version = "0.4.0", path = "../manifest" } uuid = { version = "1", features = ["v4"] } libc = "0.2" diff --git a/runtime/build.rs b/runtime/build.rs index 9d026fc7e..6017e4467 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -1,4 +1,16 @@ fn main() { + println!("cargo:rerun-if-changed=src/extism-runtime.wasm"); + let dir = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()); + + // Attempt to build the kernel, this is only done as a convenience when developing the + // kernel an should not be relied on. When changes are made to the kernel run + // `sh build.sh` in the `kernel/` directory to ensure it run successfully. + let _ = std::process::Command::new("bash") + .args(&["build.sh"]) + .current_dir(dir.join("../kernel")) + .status() + .unwrap(); + let fn_macro = " #define EXTISM_FUNCTION(N) extern void N(ExtismCurrentPlugin*, const ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, void*) #define EXTISM_GO_FUNCTION(N) extern void N(void*, ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, uintptr_t) diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm new file mode 100755 index 0000000000000000000000000000000000000000..fcf2f89b0b697add18c3a09cf2f158d4b0ff923b GIT binary patch literal 2743 zcmdT`J#ZUE6n?vVl25mib4i@w#1yN8!YKj`k(m_W)dU6xm{2k4WF!bb z-0a+-vd))l-8iP1TE5zhZ{O_SB7e46ciOA1-RG%tVv5mtj)J+IvwnMfx8K^#1@)Of zVMDxH9MJ1`x-lPF3v*oQUeuSM%&lMnbV^%&>_!D=#oo;6P>@@2pq@E}YJEU9J@ATsy%?GX4YP;WV#kW_L z(5=?3xV_!F-tNUpR(wHLXsJrU7vVV%HKIQiLZxz9E*oi2yjCMabyXGGkOjG6)lTFk z^%Azdm)xdWHp+<0L`GSWM9P$2t&!HIWTf#nBF_$XBAL`xcA|I%O2QtC9lN)G*Wav5 zs6(@L?xq~x(8ErsacB+DT6age`SmGEW9(q$Z&5o8j+TyUl$^M3X2h0vk}Rs zGZI0;)p@uk8gdRVYRC{wRP6|4bwc_e{Upq^NLQ)(?GFzhe)HjXqniHSD+405iX6&R z3?@c|Gh%_&MLOamBiJ)?;j&vfSZmm}Vi|i4`7;Y;$fPeLN@>G>q?)v(5OMS9SS=|Z zu!db|+!NtGM{~X^H6WZzEJ9!~pG+)VXX?I-A_RHQk@Fz2>Eq=m_7i4?cli|3mKL3P z*sLpU)CJ|&J$A8pm_?is8zxctAetFOzL~kkX@5|!m@+5N$r^c)XjYX;kT!Brdi8*7 zhN&npm8&(J@0$QQwDUy2B>} zQdnWcRNllmZy0dJfD|rog7YR^4U3|N!F;TSX*?ilJRoT@ATdtak%pY-i;Y{7{(eAW zn!yYvkP(a05BIZ4Y;sR{FCi!(>X(T76fwir$tdW_5e5)2er9RqC~xsh7G zfqxUYNl9N3Zt4=hCB9d8`=+yI+#eIHLp(LSd)*t)ZmwT{rrRT01TO&ZeSCTEcLma4 A=>Px# literal 0 HcmV?d00001 diff --git a/runtime/src/internal.rs b/runtime/src/internal.rs index 93654aa15..84db6b2c4 100644 --- a/runtime/src/internal.rs +++ b/runtime/src/internal.rs @@ -2,19 +2,23 @@ use std::collections::BTreeMap; use crate::*; -/// Internal stores data that is available to the caller in PDK functions -pub struct Internal { - /// Call input length - pub input_length: usize, +/// WASI context +pub struct Wasi { + /// wasi + pub ctx: wasmtime_wasi::WasiCtx, - /// Pointer to call input - pub input: *const u8, + /// wasi-nn + #[cfg(feature = "nn")] + pub nn: wasmtime_wasi_nn::WasiNnCtx, +} - /// Memory offset that points to the output - pub output_offset: usize, +/// Internal stores data that is available to the caller in PDK functions +pub struct Internal { + /// Store + pub store: *mut Store, - /// Length of output in memory - pub output_length: usize, + /// Linker + pub linker: *mut wasmtime::Linker, /// WASI context pub wasi: Option, @@ -22,30 +26,27 @@ pub struct Internal { /// Keep track of the status from the last HTTP request pub http_status: u16, - /// Store plugin-specific error messages - pub last_error: std::cell::RefCell>, - /// Plugin variables pub vars: BTreeMap>, - /// A pointer to the plugin memory, this should mostly be used from the PDK - pub memory: *mut PluginMemory, + pub manifest: Manifest, + + pub available_pages: Option, - pub(crate) available_pages: Option, + pub(crate) memory_limiter: Option, } /// InternalExt provides a unified way of acessing `memory`, `store` and `internal` values pub trait InternalExt { - fn memory(&self) -> &PluginMemory; - fn memory_mut(&mut self) -> &mut PluginMemory; + fn store(&self) -> &Store; - fn store(&self) -> &Store { - self.memory().store() - } + fn store_mut(&mut self) -> &mut Store; - fn store_mut(&mut self) -> &mut Store { - self.memory_mut().store_mut() - } + fn linker(&self) -> &Linker; + + fn linker_mut(&mut self) -> &mut Linker; + + fn linker_and_store(&mut self) -> (&mut Linker, &mut Store); fn internal(&self) -> &Internal { self.store().data() @@ -54,23 +55,166 @@ pub trait InternalExt { fn internal_mut(&mut self) -> &mut Internal { self.store_mut().data_mut() } -} -/// WASI context -pub struct Wasi { - /// wasi - pub ctx: wasmtime_wasi::WasiCtx, + fn memory_ptr(&mut self) -> *mut u8 { + let (linker, mut store) = self.linker_and_store(); + if let Some(mem) = linker.get(&mut store, "env", "memory") { + if let Some(mem) = mem.into_memory() { + return mem.data_ptr(&mut store); + } + } - /// wasi-nn - #[cfg(feature = "nn")] - pub nn: wasmtime_wasi_nn::WasiNnCtx, - #[cfg(not(feature = "nn"))] - pub nn: (), + std::ptr::null_mut() + } + + fn memory(&mut self) -> &mut [u8] { + let (linker, mut store) = self.linker_and_store(); + let mem = linker + .get(&mut store, "env", "memory") + .unwrap() + .into_memory() + .unwrap(); + let ptr = mem.data_ptr(&store); + if ptr.is_null() { + return &mut []; + } + let size = mem.data_size(&store); + unsafe { std::slice::from_raw_parts_mut(ptr, size) } + } + + fn memory_read(&mut self, offs: u64, len: Size) -> &[u8] { + let offs = offs as usize; + let len = len as usize; + let mem = self.memory(); + &mem[offs..offs + len] + } + + fn memory_read_str(&mut self, offs: u64) -> Result<&str, std::str::Utf8Error> { + let len = self.memory_length(offs); + std::str::from_utf8(self.memory_read(offs, len)) + } + + fn memory_write(&mut self, offs: u64, bytes: impl AsRef<[u8]>) { + let b = bytes.as_ref(); + let offs = offs as usize; + let len = b.len(); + self.memory()[offs..offs + len].copy_from_slice(bytes.as_ref()); + } + + fn memory_alloc(&mut self, n: Size) -> Result { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_alloc") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(n as i64)], output)?; + let offs = output[0].unwrap_i64() as u64; + if offs == 0 { + anyhow::bail!("out of memory") + } + Ok(offs) + } + + fn memory_alloc_bytes(&mut self, bytes: impl AsRef<[u8]>) -> Result { + let b = bytes.as_ref(); + let offs = self.memory_alloc(b.len() as Size)?; + self.memory_write(offs, b); + Ok(offs) + } + + fn memory_free(&mut self, offs: u64) { + let (linker, mut store) = self.linker_and_store(); + linker + .get(&mut store, "env", "extism_free") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(offs as i64)], &mut []) + .unwrap(); + } + + fn memory_length(&mut self, offs: u64) -> u64 { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_length") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(offs as i64)], output) + .unwrap(); + output[0].unwrap_i64() as u64 + } + + // A convenience method to set the plugin error and return a value + fn error(&mut self, e: impl std::fmt::Debug, x: E) -> E { + let s = format!("{e:?}"); + debug!("Set error: {:?}", s); + if let Ok(offs) = self.memory_alloc_bytes(&s) { + let (linker, mut store) = self.linker_and_store(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { + f.into_func() + .unwrap() + .call(&mut store, &[Val::I64(offs as i64)], &mut []) + .unwrap(); + } + } + x + } + + fn clear_error(&mut self) { + let (linker, mut store) = self.linker_and_store(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { + f.into_func() + .unwrap() + .call(&mut store, &[Val::I64(0)], &mut []) + .unwrap(); + } + } + + fn has_error(&mut self) -> bool { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_error_get") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], output) + .unwrap(); + output[0].unwrap_i64() != 0 + } + + fn get_error(&mut self) -> Option<&str> { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_error_get") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], output) + .unwrap(); + let offs = output[0].unwrap_i64() as u64; + if offs == 0 { + return None; + } + + let length = self.memory_length(offs); + let data = self.memory_read(offs, length); + let s = std::str::from_utf8(data); + match s { + Ok(s) => Some(s), + Err(_) => None, + } + } } impl Internal { pub(crate) fn new( - manifest: &Manifest, + manifest: Manifest, wasi: bool, available_pages: Option, ) -> Result { @@ -91,49 +235,106 @@ impl Internal { #[cfg(feature = "nn")] let nn = wasmtime_wasi_nn::WasiNnCtx::new()?; - #[cfg(not(feature = "nn"))] - #[allow(clippy::let_unit_value)] - let nn = (); - Some(Wasi { ctx: ctx.build(), + #[cfg(feature = "nn")] nn, }) } else { None }; + let memory_limiter = if let Some(pgs) = available_pages { + let n = pgs as usize * 65536; + Some(MemoryLimiter { + max_bytes: n, + bytes_left: n, + }) + } else { + None + }; + Ok(Internal { - input_length: 0, - output_offset: 0, - output_length: 0, - input: std::ptr::null(), wasi, - memory: std::ptr::null_mut(), + manifest, http_status: 0, - last_error: std::cell::RefCell::new(None), vars: BTreeMap::new(), + linker: std::ptr::null_mut(), + store: std::ptr::null_mut(), available_pages, + memory_limiter, }) } - pub fn set_error(&self, e: impl std::fmt::Debug) { - debug!("Set error: {:?}", e); - *self.last_error.borrow_mut() = Some(error_string(e)); + pub fn linker(&self) -> &wasmtime::Linker { + unsafe { &*self.linker } } - /// Unset `last_error` field - pub fn clear_error(&self) { - *self.last_error.borrow_mut() = None; + pub fn linker_mut(&mut self) -> &mut wasmtime::Linker { + unsafe { &mut *self.linker } } } impl InternalExt for Internal { - fn memory(&self) -> &PluginMemory { - unsafe { &*self.memory } + fn store(&self) -> &Store { + unsafe { &*self.store } } - fn memory_mut(&mut self) -> &mut PluginMemory { - unsafe { &mut *self.memory } + fn store_mut(&mut self) -> &mut Store { + unsafe { &mut *self.store } + } + + fn linker(&self) -> &Linker { + unsafe { &*self.linker } + } + + fn linker_mut(&mut self) -> &mut Linker { + unsafe { &mut *self.linker } + } + + fn linker_and_store(&mut self) -> (&mut Linker, &mut Store) { + unsafe { (&mut *self.linker, &mut *self.store) } + } +} + +pub(crate) struct MemoryLimiter { + bytes_left: usize, + max_bytes: usize, +} + +impl MemoryLimiter { + pub(crate) fn reset(&mut self) { + self.bytes_left = self.max_bytes; + } +} + +impl wasmtime::ResourceLimiter for MemoryLimiter { + fn memory_growing( + &mut self, + current: usize, + desired: usize, + maximum: Option, + ) -> Result { + if let Some(max) = maximum { + if desired > max { + return Ok(false); + } + } + + let d = desired - current; + if d > self.bytes_left { + return Ok(false); + } + + self.bytes_left -= d; + Ok(true) + } + + fn table_growing(&mut self, _current: u32, desired: u32, maximum: Option) -> Result { + if let Some(max) = maximum { + return Ok(desired <= max); + } + + Ok(true) } } diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 2ef5d15c4..da4f39bf1 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -5,7 +5,6 @@ mod context; mod function; mod internal; pub mod manifest; -mod memory; pub(crate) mod pdk; mod plugin; mod plugin_ref; @@ -16,7 +15,6 @@ pub use context::Context; pub use function::{Function, UserData, Val, ValType}; pub use internal::{Internal, InternalExt, Wasi}; pub use manifest::Manifest; -pub use memory::{MemoryBlock, PluginMemory, ToMemoryBlock}; pub use plugin::Plugin; pub use plugin_ref::PluginRef; pub(crate) use timer::{Timer, TimerAction}; diff --git a/runtime/src/manifest.rs b/runtime/src/manifest.rs index b22970b5a..42d09488b 100644 --- a/runtime/src/manifest.rs +++ b/runtime/src/manifest.rs @@ -7,7 +7,7 @@ use sha2::Digest; use crate::*; /// Manifest wraps the manifest exported by `extism_manifest` -#[derive(Default, serde::Serialize, serde::Deserialize)] +#[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[serde(transparent)] pub struct Manifest(extism_manifest::Manifest); @@ -60,6 +60,8 @@ fn check_hash(hash: &Option, data: &[u8]) -> Result<(), Error> { } } +const WASM: &[u8] = include_bytes!("extism-runtime.wasm"); + /// Convert from manifest to a wasmtime Module fn to_module(engine: &Engine, wasm: &extism_manifest::Wasm) -> Result<(String, Module), Error> { match wasm { @@ -167,6 +169,7 @@ const WASM_MAGIC: [u8; 4] = [0x00, 0x61, 0x73, 0x6d]; impl Manifest { /// Create a new Manifest, returns the manifest and a map of modules pub fn new(engine: &Engine, data: &[u8]) -> Result<(Self, BTreeMap), Error> { + let extism_module = Module::new(engine, WASM)?; let has_magic = data.len() >= 4 && data[0..4] == WASM_MAGIC; let is_wast = data.starts_with(b"(module") || data.starts_with(b";;"); if !has_magic && !is_wast { @@ -178,12 +181,14 @@ impl Manifest { } let t = serde_json::from_slice::(data)?; - let m = t.modules(engine)?; + let mut m = t.modules(engine)?; + m.insert("env".to_string(), extism_module); return Ok((t, m)); } let m = Module::new(engine, data)?; let mut modules = BTreeMap::new(); + modules.insert("env".to_string(), extism_module); modules.insert("main".to_string(), m); Ok((Manifest::default(), modules)) } diff --git a/runtime/src/memory.rs b/runtime/src/memory.rs deleted file mode 100644 index ac453f1ce..000000000 --- a/runtime/src/memory.rs +++ /dev/null @@ -1,376 +0,0 @@ -use std::collections::BTreeMap; - -use crate::*; - -use pretty_hex::PrettyHex; - -/// Handles memory for plugins -pub struct PluginMemory { - /// wasmtime Store - pub store: Option>, - - /// WASM memory - pub memory: Memory, - - /// Tracks allocated blocks - pub live_blocks: BTreeMap, - - /// Tracks free blocks - pub free: Vec, - - /// Tracks current offset in memory - pub position: usize, - - /// Extism manifest - pub manifest: Manifest, -} - -/// `ToMemoryBlock` is used to convert from Rust values to blocks of WASM memory -pub trait ToMemoryBlock { - fn to_memory_block(&self, mem: &PluginMemory) -> Result; -} - -impl ToMemoryBlock for MemoryBlock { - fn to_memory_block(&self, _mem: &PluginMemory) -> Result { - Ok(*self) - } -} - -impl ToMemoryBlock for (usize, usize) { - fn to_memory_block(&self, _mem: &PluginMemory) -> Result { - Ok(MemoryBlock { - offset: self.0, - length: self.1, - }) - } -} - -impl ToMemoryBlock for usize { - fn to_memory_block(&self, mem: &PluginMemory) -> Result { - match mem.at_offset(*self) { - Some(x) => Ok(x), - None => Err(Error::msg(format!("Invalid memory offset: {}", self))), - } - } -} - -const PAGE_SIZE: u32 = 65536; - -// BLOCK_SIZE_THRESHOLD exists to ensure that free blocks are never split up any -// smaller than this value -const BLOCK_SIZE_THRESHOLD: usize = 32; - -impl PluginMemory { - /// Create memory for a plugin - pub fn new(store: Store, memory: Memory, manifest: Manifest) -> Self { - PluginMemory { - free: Vec::new(), - live_blocks: BTreeMap::new(), - store: Some(store), - memory, - position: 1, - manifest, - } - } - - pub fn store(&self) -> &Store { - self.store.as_ref().unwrap() - } - - pub fn store_mut(&mut self) -> &mut Store { - self.store.as_mut().unwrap() - } - - /// Moves module to a new store - pub fn reinstantiate(&mut self) -> Result<(), Error> { - if let Some(store) = self.store.take() { - let engine = store.engine().clone(); - let internal = store.into_data(); - let pages = internal.available_pages; - let mut store = Store::new(&engine, internal); - store.epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); - self.memory = Memory::new(&mut store, MemoryType::new(2, pages))?; - self.store = Some(store); - } - - self.reset(); - - Ok(()) - } - - /// Write byte to memory - pub(crate) fn store_u8(&mut self, offs: usize, data: u8) -> Result<(), MemoryAccessError> { - trace!("store_u8: offset={offs} data={data:#04x}"); - if offs >= self.size() { - // This should raise MemoryAccessError - let buf = &mut [0]; - self.memory.read(&self.store.as_ref().unwrap(), offs, buf)?; - return Ok(()); - } - self.memory.data_mut(&mut self.store.as_mut().unwrap())[offs] = data; - Ok(()) - } - - /// Read byte from memory - pub(crate) fn load_u8(&self, offs: usize) -> Result { - trace!("load_u8: offset={offs}"); - if offs >= self.size() { - // This should raise MemoryAccessError - let buf = &mut [0]; - self.memory.read(&self.store.as_ref().unwrap(), offs, buf)?; - return Ok(0); - } - Ok(self.memory.data(&self.store.as_ref().unwrap())[offs]) - } - - /// Write u64 to memory - pub(crate) fn store_u64(&mut self, offs: usize, data: u64) -> Result<(), Error> { - trace!("store_u64: offset={offs} data={data:#18x}"); - let handle = MemoryBlock { - offset: offs, - length: 8, - }; - self.write(handle, data.to_ne_bytes())?; - Ok(()) - } - - /// Read u64 from memory - pub(crate) fn load_u64(&self, offs: usize) -> Result { - trace!("load_u64: offset={offs}"); - let mut buf = [0; 8]; - let handle = MemoryBlock { - offset: offs, - length: 8, - }; - self.read(handle, &mut buf)?; - Ok(u64::from_ne_bytes(buf)) - } - - /// Write slice to memory - pub fn write(&mut self, pos: impl ToMemoryBlock, data: impl AsRef<[u8]>) -> Result<(), Error> { - let pos = pos.to_memory_block(self)?; - assert!(data.as_ref().len() <= pos.length); - self.memory - .write(&mut self.store.as_mut().unwrap(), pos.offset, data.as_ref())?; - Ok(()) - } - - /// Read slice from memory - pub fn read(&self, pos: impl ToMemoryBlock, mut data: impl AsMut<[u8]>) -> Result<(), Error> { - let pos = pos.to_memory_block(self)?; - assert!(data.as_mut().len() <= pos.length); - self.memory - .read(&self.store.as_ref().unwrap(), pos.offset, data.as_mut())?; - Ok(()) - } - - /// Size of memory in bytes - pub fn size(&self) -> usize { - self.memory.data_size(&self.store.as_ref().unwrap()) - } - - /// Size of memory in pages - pub fn pages(&self) -> u32 { - self.memory.size(&self.store.as_ref().unwrap()) as u32 - } - - /// Reserve `n` bytes of memory - pub fn alloc(&mut self, n: usize) -> Result { - debug!("Allocating {n} bytes"); - - for (i, block) in self.free.iter_mut().enumerate() { - if block.length == n { - let block = self.free.swap_remove(i); - self.live_blocks.insert(block.offset, block.length); - debug!("Found block with exact size at offset {}", block.offset); - return Ok(block); - } else if block.length.saturating_sub(n) >= BLOCK_SIZE_THRESHOLD { - let handle = MemoryBlock { - offset: block.offset, - length: n, - }; - debug!( - "Using block with size {} at offset {}", - block.length, block.offset - ); - - block.offset += n; - block.length -= n; - self.live_blocks.insert(handle.offset, handle.length); - return Ok(handle); - } - } - - let new_offset = self.position.saturating_add(n); - - // If there aren't enough bytes, try to grow the memory size - if new_offset >= self.size() { - debug!("Need more memory"); - - let bytes_needed = (new_offset as f64 - self.size() as f64) / PAGE_SIZE as f64; - let mut pages_needed = bytes_needed.ceil() as u64; - if pages_needed == 0 { - pages_needed = 1 - } - - debug!("Requesting {pages_needed} more pages"); - // This will fail if we've already allocated the maximum amount of memory allowed - self.memory - .grow(&mut self.store.as_mut().unwrap(), pages_needed)?; - } - - let mem = MemoryBlock { - offset: self.position, - length: n, - }; - - debug!( - "Allocated new block: {} bytes at offset {}", - mem.length, mem.offset - ); - - self.live_blocks.insert(mem.offset, mem.length); - self.position += n; - Ok(mem) - } - - /// Allocate and copy `data` into the wasm memory - pub fn alloc_bytes(&mut self, data: impl AsRef<[u8]>) -> Result { - let handle = self.alloc(data.as_ref().len())?; - self.write(handle, data)?; - Ok(handle) - } - - /// Free the block allocated at `offset` - pub fn free(&mut self, offset: usize) { - debug!("Freeing block at {offset}"); - if let Some(length) = self.live_blocks.remove(&offset) { - self.free.push(MemoryBlock { offset, length }); - } else { - return; - } - - let free_size: usize = self.free.iter().map(|x| x.length).sum(); - - // Perform compaction if there is at least 1kb of free memory available - if free_size >= 1024 { - let mut last: Option = None; - let mut free = Vec::new(); - for block in self.free.iter() { - match last { - None => { - free.push(*block); - } - Some(last) => { - if last.offset + last.length == block.offset { - free.push(MemoryBlock { - offset: last.offset, - length: last.length + block.length, - }); - } - } - } - last = Some(*block); - } - self.free = free; - } - } - - /// Log entire memory as hexdump using the `trace` log level - pub fn dump(&self) { - let data = self.memory.data(self.store.as_ref().unwrap()); - - trace!("{:?}", data[..self.position].hex_dump()); - } - - /// Reset memory - clears free-list and live blocks and resets position - pub fn reset(&mut self) { - self.free.clear(); - self.live_blocks.clear(); - self.position = 1; - } - - /// Get memory as a slice of bytes - pub fn data(&self) -> &[u8] { - self.memory.data(self.store.as_ref().unwrap()) - } - - /// Get memory as a mutable slice of bytes - pub fn data_mut(&mut self) -> &mut [u8] { - self.memory.data_mut(self.store.as_mut().unwrap()) - } - - /// Get bytes occupied by the provided memory handle - pub fn get(&self, handle: impl ToMemoryBlock) -> Result<&[u8], Error> { - let handle = handle.to_memory_block(self)?; - Ok(&self.memory.data(self.store.as_ref().unwrap()) - [handle.offset..handle.offset + handle.length]) - } - - /// Get mutable bytes occupied by the provided memory handle - pub fn get_mut(&mut self, handle: impl ToMemoryBlock) -> Result<&mut [u8], Error> { - let handle = handle.to_memory_block(self)?; - Ok(&mut self.memory.data_mut(self.store.as_mut().unwrap()) - [handle.offset..handle.offset + handle.length]) - } - - /// Get str occupied by the provided memory handle - pub fn get_str(&self, handle: impl ToMemoryBlock) -> Result<&str, Error> { - let handle = handle.to_memory_block(self)?; - Ok(std::str::from_utf8( - &self.memory.data(self.store.as_ref().unwrap()) - [handle.offset..handle.offset + handle.length], - )?) - } - - /// Get mutable str occupied by the provided memory handle - pub fn get_mut_str(&mut self, handle: impl ToMemoryBlock) -> Result<&mut str, Error> { - let handle = handle.to_memory_block(self)?; - Ok(std::str::from_utf8_mut( - &mut self.memory.data_mut(self.store.as_mut().unwrap()) - [handle.offset..handle.offset + handle.length], - )?) - } - - /// Pointer to the provided memory handle - pub fn ptr(&self, handle: impl ToMemoryBlock) -> Result<*mut u8, Error> { - let handle = handle.to_memory_block(self)?; - Ok(unsafe { - self.memory - .data_ptr(&self.store.as_ref().unwrap()) - .add(handle.offset) - }) - } - - /// Get the length of the block starting at `offs` - pub fn block_length(&self, offs: usize) -> Option { - self.live_blocks.get(&offs).cloned() - } - - /// Get the block at the specified offset - pub fn at_offset(&self, offset: usize) -> Option { - let block_length = self.block_length(offset); - block_length.map(|length| MemoryBlock { offset, length }) - } -} - -#[derive(Clone, Copy)] -pub struct MemoryBlock { - pub offset: usize, - pub length: usize, -} - -impl From<(usize, usize)> for MemoryBlock { - fn from(x: (usize, usize)) -> Self { - MemoryBlock { - offset: x.0, - length: x.1, - } - } -} - -impl MemoryBlock { - pub fn new(offset: usize, length: usize) -> Self { - MemoryBlock { offset, length } - } -} diff --git a/runtime/src/pdk.rs b/runtime/src/pdk.rs index ac2bb3109..853f79199 100644 --- a/runtime/src/pdk.rs +++ b/runtime/src/pdk.rs @@ -18,177 +18,6 @@ macro_rules! args { }; } -/// Get the input length -/// Params: none -/// Returns: i64 (length) -pub(crate) fn input_length( - caller: Caller, - _input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &Internal = caller.data(); - output[0] = Val::I64(data.input_length as i64); - Ok(()) -} - -/// Load a byte from input -/// Params: i64 (offset) -/// Returns: i32 (byte) -pub(crate) fn input_load_u8( - caller: Caller, - input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &Internal = caller.data(); - if data.input.is_null() { - return Ok(()); - } - output[0] = unsafe { Val::I32(*data.input.add(input[0].unwrap_i64() as usize) as i32) }; - Ok(()) -} - -/// Load an unsigned 64 bit integer from input -/// Params: i64 (offset) -/// Returns: i64 (int) -pub(crate) fn input_load_u64( - caller: Caller, - input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &Internal = caller.data(); - if data.input.is_null() { - return Ok(()); - } - let offs = args!(input, 0, i64) as usize; - let slice = unsafe { std::slice::from_raw_parts(data.input.add(offs), 8) }; - let byte = u64::from_ne_bytes(slice.try_into().unwrap()); - output[0] = Val::I64(byte as i64); - Ok(()) -} - -/// Store a byte in memory -/// Params: i64 (offset), i32 (byte) -/// Returns: none -pub(crate) fn store_u8( - mut caller: Caller, - input: &[Val], - _output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let (offset, byte) = args!(input, (0, i64), (1, i32)); - data.memory_mut().store_u8(offset as usize, byte as u8)?; - Ok(()) -} - -/// Load a byte from memory -/// Params: i64 (offset) -/// Returns: i32 (byte) -pub(crate) fn load_u8( - caller: Caller, - input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &Internal = caller.data(); - let offset = args!(input, 0, i64) as usize; - let byte = data.memory().load_u8(offset)?; - output[0] = Val::I32(byte as i32); - Ok(()) -} - -/// Store an unsigned 64 bit integer in memory -/// Params: i64 (offset), i64 (int) -/// Returns: none -pub(crate) fn store_u64( - mut caller: Caller, - input: &[Val], - _output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let (offset, b) = args!(input, (0, i64), (1, i64)); - data.memory_mut().store_u64(offset as usize, b as u64)?; - Ok(()) -} - -/// Load an unsigned 64 bit integer from memory -/// Params: i64 (offset) -/// Returns: i64 (int) -pub(crate) fn load_u64( - caller: Caller, - input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &Internal = caller.data(); - let offset = args!(input, 0, i64) as usize; - let byte = data.memory().load_u64(offset)?; - output[0] = Val::I64(byte as i64); - Ok(()) -} - -/// Set output offset and length -/// Params: i64 (offset), i64 (length) -/// Returns: none -pub(crate) fn output_set( - mut caller: Caller, - input: &[Val], - _output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let (offset, length) = args!(input, (0, i64), (1, i64)); - data.output_offset = offset as usize; - data.output_length = length as usize; - Ok(()) -} - -/// Allocate bytes -/// Params: i64 (length) -/// Returns: i64 (offset) -pub(crate) fn alloc( - mut caller: Caller, - input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let offs = data.memory_mut().alloc(input[0].unwrap_i64() as _)?; - output[0] = Val::I64(offs.offset as i64); - - Ok(()) -} - -/// Free memory -/// Params: i64 (offset) -/// Returns: none -pub(crate) fn free( - mut caller: Caller, - input: &[Val], - _output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let offset = args!(input, 0, i64) as usize; - data.memory_mut().free(offset); - Ok(()) -} - -/// Set the error message, this can be checked by the host program -/// Params: i64 (offset) -/// Returns: none -pub(crate) fn error_set( - mut caller: Caller, - input: &[Val], - _output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let offset = args!(input, 0, i64) as usize; - - if offset == 0 { - *data.last_error.borrow_mut() = None; - return Ok(()); - } - - let s = data.memory().get_str(offset)?; - data.set_error(s); - Ok(()) -} - /// Get a configuration value /// Params: i64 (offset) /// Returns: i64 (offset) @@ -199,21 +28,24 @@ pub(crate) fn config_get( ) -> Result<(), Error> { let data: &mut Internal = caller.data_mut(); - let offset = args!(input, 0, i64) as usize; - let key = data.memory().get_str(offset)?; - let val = data.memory().manifest.as_ref().config.get(key); + let offset = args!(input, 0, i64) as u64; + let key = data.memory_read_str(offset)?; + let key = unsafe { + std::str::from_utf8_unchecked(std::slice::from_raw_parts(key.as_ptr(), key.len())) + }; + let val = data.internal().manifest.as_ref().config.get(key); let ptr = val.map(|x| (x.len(), x.as_ptr())); let mem = match ptr { Some((len, ptr)) => { let bytes = unsafe { std::slice::from_raw_parts(ptr, len) }; - data.memory_mut().alloc_bytes(bytes)? + data.memory_alloc_bytes(bytes)? } None => { output[0] = Val::I64(0); return Ok(()); } }; - output[0] = Val::I64(mem.offset as i64); + output[0] = Val::I64(mem as i64); Ok(()) } @@ -227,23 +59,24 @@ pub(crate) fn var_get( ) -> Result<(), Error> { let data: &mut Internal = caller.data_mut(); - let offset = args!(input, 0, i64) as usize; - let key = data.memory().get_str(offset)?; - let val = data.vars.get(key); + let offset = args!(input, 0, i64) as u64; + let key = data.memory_read_str(offset)?; + let key = unsafe { + std::str::from_utf8_unchecked(std::slice::from_raw_parts(key.as_ptr(), key.len())) + }; + let val = data.internal().vars.get(key); let ptr = val.map(|x| (x.len(), x.as_ptr())); - let mem = match ptr { Some((len, ptr)) => { let bytes = unsafe { std::slice::from_raw_parts(ptr, len) }; - data.memory_mut().alloc_bytes(bytes)? + data.memory_alloc_bytes(bytes)? } None => { output[0] = Val::I64(0); return Ok(()); } }; - - output[0] = Val::I64(mem.offset as i64); + output[0] = Val::I64(mem as i64); Ok(()) } @@ -262,16 +95,16 @@ pub(crate) fn var_set( size += v.len(); } - let voffset = args!(input, 1, i64) as usize; + let voffset = args!(input, 1, i64) as u64; // If the store is larger than 100MB then stop adding things if size > 1024 * 1024 * 100 && voffset != 0 { return Err(Error::msg("Variable store is full")); } - let key_offs = args!(input, 0, i64) as usize; + let key_offs = args!(input, 0, i64) as u64; let key = { - let key = data.memory().get_str(key_offs)?; + let key = data.memory_read_str(key_offs)?; let key_len = key.len(); let key_ptr = key.as_ptr(); unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key_ptr, key_len)) } @@ -283,10 +116,11 @@ pub(crate) fn var_set( return Ok(()); } - let value = data.memory().get(voffset)?; + let vlen = data.memory_length(voffset); + let value = data.memory_read(voffset, vlen).to_vec(); // Insert the value from memory into the `vars` map - data.vars.insert(key.to_string(), value.to_vec()); + data.vars.insert(key.to_string(), value); Ok(()) } @@ -312,18 +146,19 @@ pub(crate) fn http_request( { use std::io::Read; let data: &mut Internal = caller.data_mut(); - let http_req_offset = args!(input, 0, i64) as usize; + let http_req_offset = args!(input, 0, i64) as u64; + let http_req_len = data.memory_length(http_req_offset); let req: extism_manifest::HttpRequest = - serde_json::from_slice(data.memory().get(http_req_offset)?)?; + serde_json::from_slice(data.memory_read(http_req_offset, http_req_len))?; - let body_offset = args!(input, 1, i64) as usize; + let body_offset = args!(input, 1, i64) as u64; let url = match url::Url::parse(&req.url) { Ok(u) => u, Err(e) => return Err(Error::msg(format!("Invalid URL: {e:?}"))), }; - let allowed_hosts = &data.memory().manifest.as_ref().allowed_hosts; + let allowed_hosts = &data.internal().manifest.as_ref().allowed_hosts; let host_str = url.host_str().unwrap_or_default(); let host_matches = if let Some(allowed_hosts) = allowed_hosts { allowed_hosts.iter().any(|url| { @@ -352,7 +187,8 @@ pub(crate) fn http_request( } let res = if body_offset > 0 { - let buf = data.memory().get(body_offset)?; + let len = data.memory_length(body_offset); + let buf = data.memory_read(body_offset, len); r.send_bytes(buf) } else { r.call() @@ -379,9 +215,8 @@ pub(crate) fn http_request( .take(1024 * 1024 * 50) // TODO: make this limit configurable .read_to_end(&mut buf)?; - let mem = data.memory_mut().alloc_bytes(buf)?; - - output[0] = Val::I64(mem.offset as i64); + let mem = data.memory_alloc_bytes(buf)?; + output[0] = Val::I64(mem as i64); } else { output[0] = Val::I64(0); } @@ -403,39 +238,17 @@ pub(crate) fn http_status_code( Ok(()) } -/// Get the length of an allocated block given the offset -/// Params: i64 (offset) -/// Returns: i64 (length or 0) -pub(crate) fn length( - mut caller: Caller, - input: &[Val], - output: &mut [Val], -) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); - let offset = args!(input, 0, i64) as usize; - if offset == 0 { - output[0] = Val::I64(0); - return Ok(()); - } - let length = match data.memory().block_length(offset) { - Some(x) => x, - None => return Err(Error::msg("Unable to find length for offset")), - }; - output[0] = Val::I64(length as i64); - Ok(()) -} - pub fn log( level: log::Level, - caller: Caller, + mut caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { - let data: &Internal = caller.data(); - let offset = args!(input, 0, i64) as usize; - let buf = data.memory().get(offset)?; + let data: &mut Internal = caller.data_mut(); + let offset = args!(input, 0, i64) as u64; + let buf = data.memory_read_str(offset); - match std::str::from_utf8(buf) { + match buf { Ok(buf) => log::log!(level, "{}", buf), Err(_) => log::log!(level, "{:?}", buf), } diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 9d2a15fc9..b7e04ecf2 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -9,6 +9,7 @@ pub struct Plugin { /// Used to define functions and create new instances pub linker: Linker, + pub store: Store, /// Instance provides the ability to call functions in a module pub instance: Instance, @@ -18,9 +19,6 @@ pub struct Plugin { /// actually cleaned up along with a `Store` pub instantiations: usize, - /// Handles interactions with WASM memory - pub memory: std::cell::UnsafeCell, - /// The ID used to identify this plugin with the `Timer` pub timer_id: uuid::Uuid, @@ -33,12 +31,24 @@ pub struct Plugin { } impl InternalExt for Plugin { - fn memory(&self) -> &PluginMemory { - unsafe { &*self.memory.get() } + fn store(&self) -> &Store { + &self.store + } + + fn store_mut(&mut self) -> &mut Store { + &mut self.store + } + + fn linker(&self) -> &Linker { + &self.linker + } + + fn linker_mut(&mut self) -> &mut Linker { + &mut self.linker } - fn memory_mut(&mut self) -> &mut PluginMemory { - self.memory.get_mut() + fn linker_and_store(&mut self) -> (&mut Linker, &mut Store) { + (&mut self.linker, &mut self.store) } } @@ -68,9 +78,13 @@ fn calculate_available_memory( let mut fail_memory_check = false; let mut total_memory_needed = 0; for (name, module) in modules.iter() { + if name == "env" { + continue; + } let mut memories = 0; for export in module.exports() { if let Some(memory) = export.ty().memory() { + memories += 1; let memory_max = memory.maximum(); match memory_max { None => anyhow::bail!("Unbounded memory in module {name}, when `memory.max_pages` is set in the manifest all modules \ @@ -78,16 +92,15 @@ fn calculate_available_memory( Some(m) => { total_memory_needed += m; if !fail_memory_check { - continue + continue; } *available_pages = available_pages.saturating_sub(m as u32); if *available_pages == 0 { fail_memory_check = true; } - }, + } } - memories += 1; } } @@ -132,14 +145,13 @@ impl Plugin { let mut store = Store::new( &engine, - Internal::new(&manifest, with_wasi, available_pages)?, + Internal::new(manifest, with_wasi, available_pages)?, ); store.epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); - // Create memory - let memory = Memory::new(&mut store, MemoryType::new(2, available_pages))?; - let mut memory = PluginMemory::new(store, memory, manifest); - + if available_pages.is_some() { + store.limiter(|internal| internal.memory_limiter.as_mut().unwrap()); + } let mut linker = Linker::new(&engine); linker.allow_shadowing(true); @@ -177,7 +189,10 @@ impl Plugin { } // Add builtins - for (_name, module) in modules.iter() { + for (name, module) in modules.iter() { + if name != main_name { + linker.module(&mut store, name, module)?; + } for import in module.imports() { let module_name = import.module(); let name = import.name(); @@ -185,23 +200,11 @@ impl Plugin { if module_name == EXPORT_MODULE_NAME { define_funcs!(name, { - alloc(I64) -> I64; - free(I64); - load_u8(I64) -> I32; - load_u64(I64) -> I64; - store_u8(I64, I32); - store_u64(I64, I64); - input_length() -> I64; - input_load_u8(I64) -> I32; - input_load_u64(I64) -> I64; - output_set(I64, I64); - error_set(I64); config_get(I64) -> I64; var_get(I64) -> I64; var_set(I64, I64); http_request(I64, I64) -> I64; http_status_code() -> I32; - length(I64) -> I64; log_warn(I64); log_info(I64); log_debug(I64); @@ -219,20 +222,13 @@ impl Plugin { } } - // Add modules to linker - for (name, module) in modules.iter() { - if name != main_name { - linker.module(&mut memory.store_mut(), name, module)?; - } - } - - let instance = linker.instantiate(&mut memory.store_mut(), main)?; + let instance = linker.instantiate(&mut store, main)?; let timer_id = uuid::Uuid::new_v4(); let mut plugin = Plugin { modules, linker, - memory: std::cell::UnsafeCell::new(memory), instance, + store, instantiations: 1, runtime: None, timer_id, @@ -242,8 +238,8 @@ impl Plugin { }, }; - // Make sure `Internal::memory` is initialized - plugin.internal_mut().memory = plugin.memory.get(); + plugin.internal_mut().store = &mut plugin.store; + plugin.internal_mut().linker = &mut plugin.linker; // Then detect runtime before returning the new plugin plugin.detect_runtime(); @@ -252,35 +248,55 @@ impl Plugin { /// Get a function by name pub fn get_func(&mut self, function: impl AsRef) -> Option { - self.instance - .get_func(&mut self.memory.get_mut().store_mut(), function.as_ref()) - } - - // A convenience method to set the plugin error and return a value - pub fn error(&self, e: impl std::fmt::Debug, x: E) -> E { - self.store().data().set_error(e); - x + self.instance.get_func(&mut self.store, function.as_ref()) } /// Store input in memory and initialize `Internal` pointer - pub fn set_input(&mut self, input: *const u8, mut len: usize) { + pub(crate) fn set_input( + &mut self, + input: *const u8, + mut len: usize, + tx: std::sync::mpsc::SyncSender, + ) -> Result<(), Error> { if input.is_null() { len = 0; } - let ptr = self.memory.get(); - let internal = self.internal_mut(); - internal.input = input; - internal.input_length = len; - internal.memory = ptr - } - /// Dump memory using trace! logging - pub fn dump_memory(&self) { - self.memory().dump(); + { + let store = &mut self.store as *mut _; + let linker = &mut self.linker as *mut _; + let internal = self.internal_mut(); + internal.store = store; + internal.linker = linker; + } + + let bytes = unsafe { std::slice::from_raw_parts(input, len) }; + trace!("Input size: {}", bytes.len()); + + self.start_timer(&tx)?; + if let Some(f) = self.linker.get(&mut self.store, "env", "extism_reset") { + f.into_func().unwrap().call(&mut self.store, &[], &mut [])?; + } + + let offs = self.memory_alloc_bytes(bytes)?; + + if let Some(f) = self.linker.get(&mut self.store, "env", "extism_input_set") { + f.into_func().unwrap().call( + &mut self.store, + &[Val::I64(offs as i64), Val::I64(len as i64)], + &mut [], + )?; + } + + Ok(()) } /// Create a new instance from the same modules pub fn reinstantiate(&mut self) -> Result<(), Error> { + if let Some(limiter) = self.internal_mut().memory_limiter.as_mut() { + limiter.reset(); + } + let (main_name, main) = self .modules .get("main") @@ -290,24 +306,34 @@ impl Plugin { (entry.0.as_str(), entry.1) }); - // Avoid running into resource limits, after 5 instantiations reset the store. This will - // release any old `Instance` objects if self.instantiations > 5 { - self.memory.get_mut().reinstantiate()?; + let engine = self.store.engine().clone(); + let internal = self.internal(); + self.store = Store::new( + &engine, + Internal::new( + internal.manifest.clone(), + internal.wasi.is_some(), + internal.available_pages, + )?, + ); + self.store + .epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); + + if self.internal().available_pages.is_some() { + self.store + .limiter(|internal| internal.memory_limiter.as_mut().unwrap()); + } - // Get the `main` module, or the last one if `main` doesn't exist for (name, module) in self.modules.iter() { if name != main_name { - self.linker - .module(&mut self.memory.get_mut().store_mut(), name, module)?; + self.linker.module(&mut self.store, name, module)?; } } self.instantiations = 0; } - let instance = self - .linker - .instantiate(&mut self.memory.get_mut().store_mut(), &main)?; + let instance = self.linker.instantiate(&mut self.store, main)?; self.instance = instance; self.detect_runtime(); self.instantiations += 1; @@ -316,7 +342,7 @@ impl Plugin { /// Determine if wasi is enabled pub fn has_wasi(&self) -> bool { - self.memory().store().data().wasi.is_some() + self.internal().wasi.is_some() } fn detect_runtime(&mut self) { @@ -325,13 +351,10 @@ impl Plugin { // by calling the `hs_init` export if let Some(init) = self.get_func("hs_init") { if let Some(cleanup) = self.get_func("hs_exit") { - if init - .typed::<(i32, i32), ()>(&self.memory().store()) - .is_err() - { + if init.typed::<(i32, i32), ()>(&self.store()).is_err() { trace!( "hs_init function found with type {:?}", - init.ty(&self.memory().store()) + init.ty(self.store()) ); } self.runtime = Some(Runtime::Haskell { init, cleanup }); @@ -339,38 +362,48 @@ impl Plugin { return; } - // Check for `__wasm__call_ctors` and `__wasm_call_dtors`, this is used by WASI to + // Check for `__wasm_call_ctors` and `__wasm_call_dtors`, this is used by WASI to // initialize certain interfaces. if self.has_wasi() { - if let Some(init) = self.get_func("__wasm_call_ctors") { - if init.typed::<(), ()>(&self.memory().store()).is_err() { + let init = if let Some(init) = self.get_func("__wasm_call_ctors") { + if init.typed::<(), ()>(&self.store()).is_err() { trace!( "__wasm_call_ctors function found with type {:?}", - init.ty(&self.memory().store()) + init.ty(self.store()) ); return; } trace!("WASI runtime detected"); - if let Some(cleanup) = self.get_func("__wasm_call_dtors") { - if cleanup.typed::<(), ()>(&self.memory().store()).is_err() { - trace!( - "__wasm_call_dtors function found with type {:?}", - cleanup.ty(&self.memory().store()) - ); - return; - } - self.runtime = Some(Runtime::Wasi { - init, - cleanup: Some(cleanup), - }); + init + } else if let Some(init) = self.get_func("_initialize") { + if init.typed::<(), ()>(&self.store()).is_err() { + trace!( + "_initialize function found with type {:?}", + init.ty(self.store()) + ); return; } + trace!("WASI reactor module detected"); + init + } else { + return; + }; - self.runtime = Some(Runtime::Wasi { - init, - cleanup: None, - }); - } + let cleanup = if let Some(cleanup) = self.get_func("__wasm_call_dtors") { + if cleanup.typed::<(), ()>(&self.store()).is_err() { + trace!( + "__wasm_call_dtors function found with type {:?}", + cleanup.ty(self.store()) + ); + None + } else { + Some(cleanup) + } + } else { + None + }; + + self.runtime = Some(Runtime::Wasi { init, cleanup }); return; } @@ -378,22 +411,22 @@ impl Plugin { } pub(crate) fn initialize_runtime(&mut self) -> Result<(), Error> { + let mut store = &mut self.store; if let Some(runtime) = &self.runtime { trace!("Plugin::initialize_runtime"); match runtime { Runtime::Haskell { init, cleanup: _ } => { - let mut results = - vec![Val::null(); init.ty(&self.memory().store()).results().len()]; + let mut results = vec![Val::null(); init.ty(&store).results().len()]; init.call( - &mut self.memory.get_mut().store_mut(), + &mut store, &[Val::I32(0), Val::I32(0)], results.as_mut_slice(), )?; debug!("Initialized Haskell language runtime"); } Runtime::Wasi { init, cleanup: _ } => { - debug!("Calling __wasm_call_ctors"); - init.call(&mut self.memory.get_mut().store_mut(), &[], &mut [])?; + init.call(&mut store, &[], &mut [])?; + debug!("Initialied WASI runtime"); } } } @@ -411,7 +444,7 @@ impl Plugin { cleanup: Some(cleanup), } => { debug!("Calling __wasm_call_dtors"); - cleanup.call(&mut self.memory_mut().store_mut(), &[], &mut [])?; + cleanup.call(self.store_mut(), &[], &mut [])?; } Runtime::Wasi { init: _, @@ -420,13 +453,8 @@ impl Plugin { // Cleanup Haskell runtime if `hs_exit` and `hs_exit` are present, // by calling the `hs_exit` export Runtime::Haskell { init: _, cleanup } => { - let mut results = - vec![Val::null(); cleanup.ty(&self.memory().store()).results().len()]; - cleanup.call( - &mut self.memory_mut().store_mut(), - &[], - results.as_mut_slice(), - )?; + let mut results = vec![Val::null(); cleanup.ty(self.store()).results().len()]; + cleanup.call(self.store_mut(), &[], results.as_mut_slice())?; debug!("Cleaned up Haskell language runtime"); } } @@ -442,14 +470,14 @@ impl Plugin { tx: &std::sync::mpsc::SyncSender, ) -> Result<(), Error> { let duration = self - .memory() + .internal() .manifest .as_ref() .timeout_ms .map(std::time::Duration::from_millis); self.cancel_handle.epoch_timer_tx = Some(tx.clone()); - self.memory_mut().store_mut().set_epoch_deadline(1); - let engine: Engine = self.memory().store().engine().clone(); + self.store_mut().set_epoch_deadline(1); + let engine: Engine = self.store().engine().clone(); tx.send(TimerAction::Start { id: self.timer_id, duration, diff --git a/runtime/src/plugin_ref.rs b/runtime/src/plugin_ref.rs index 9d6478db4..5e6e67248 100644 --- a/runtime/src/plugin_ref.rs +++ b/runtime/src/plugin_ref.rs @@ -3,6 +3,7 @@ use crate::*; // PluginRef is used to access a plugin from a context-scoped plugin registry pub struct PluginRef<'a> { pub id: PluginIndex, + running: bool, pub(crate) epoch_timer_tx: std::sync::mpsc::SyncSender, plugin: *mut Plugin, _t: std::marker::PhantomData<&'a ()>, @@ -10,23 +11,18 @@ pub struct PluginRef<'a> { impl<'a> PluginRef<'a> { /// Initialize the plugin for a new call - /// - /// - Resets memory offsets - /// - Updates `input` pointer - pub fn init(mut self, data: *const u8, data_len: usize) -> Self { - trace!("PluginRef::init: {}", self.id,); + pub fn start_call(mut self) -> Self { + trace!("PluginRef::start_call: {}", self.id,); let plugin = self.as_mut(); - plugin.memory_mut().reset(); + if plugin.has_wasi() || plugin.runtime.is_some() { if let Err(e) = plugin.reinstantiate() { error!("Failed to reinstantiate: {e:?}"); - plugin - .internal() - .set_error(format!("Failed to reinstantiate: {e:?}")); + plugin.error(format!("Failed to reinstantiate: {e:?}"), ()); return self; } } - plugin.set_input(data, data_len); + self.running = true; self } @@ -45,12 +41,25 @@ impl<'a> PluginRef<'a> { return ctx.error(format!("Plugin does not exist: {plugin_id}"), None); }; + { + let plugin = unsafe { &mut *plugin }; + // Start timer + if let Err(e) = plugin.start_timer(&epoch_timer_tx) { + let id = plugin.timer_id; + plugin.error( + format!("Unable to start timeout manager for {id}: {e:?}"), + (), + ); + return None; + } + } + if clear_error { trace!("Clearing context error"); ctx.error = None; trace!("Clearing plugin error: {plugin_id}"); unsafe { - (&*plugin).internal().clear_error(); + (*plugin).clear_error(); } } @@ -59,6 +68,7 @@ impl<'a> PluginRef<'a> { plugin, epoch_timer_tx, _t: std::marker::PhantomData, + running: false, }) } } @@ -78,6 +88,14 @@ impl<'a> AsMut for PluginRef<'a> { impl<'a> Drop for PluginRef<'a> { fn drop(&mut self) { trace!("Dropping PluginRef {}", self.id); - // Cleanup? + if self.running { + let plugin = self.as_mut(); + + // Stop timer + if let Err(e) = plugin.stop_timer() { + let id = plugin.timer_id; + error!("Failed to stop timeout manager for {id}: {e:?}"); + } + } } } diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index 7c2795007..c26db7717 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -99,7 +99,7 @@ pub unsafe extern "C" fn extism_current_plugin_memory(plugin: *mut Internal) -> } let plugin = &mut *plugin; - plugin.memory_mut().data_mut().as_mut_ptr() + plugin.memory_ptr() } /// Allocate a memory block in the currently running plugin @@ -111,16 +111,7 @@ pub unsafe extern "C" fn extism_current_plugin_memory_alloc(plugin: *mut Interna } let plugin = &mut *plugin; - - let mem = match plugin.memory_mut().alloc(n as usize) { - Ok(x) => x, - Err(e) => { - plugin.set_error(e); - return 0; - } - }; - - mem.offset as u64 + plugin.memory_alloc(n as u64).unwrap_or_default() } /// Get the length of an allocated block @@ -135,11 +126,7 @@ pub unsafe extern "C" fn extism_current_plugin_memory_length( } let plugin = &mut *plugin; - - match plugin.memory().block_length(n as usize) { - Some(x) => x as Size, - None => 0, - } + plugin.memory_length(n) } /// Free an allocated memory block @@ -151,7 +138,7 @@ pub unsafe extern "C" fn extism_current_plugin_memory_free(plugin: *mut Internal } let plugin = &mut *plugin; - plugin.memory_mut().free(ptr as usize); + plugin.memory_free(ptr); } /// Create a new host function @@ -436,21 +423,21 @@ pub unsafe extern "C" fn extism_plugin_config( } }; - let wasi = &mut plugin.memory.get_mut().store_mut().data_mut().wasi; + let wasi = &mut plugin.internal_mut().wasi; if let Some(Wasi { ctx, .. }) = wasi { for (k, v) in json.iter() { match v { Some(v) => { - let _ = ctx.push_env(&k, &v); + let _ = ctx.push_env(k, v); } None => { - let _ = ctx.push_env(&k, ""); + let _ = ctx.push_env(k, ""); } } } } - let config = &mut plugin.memory.get_mut().manifest.as_mut().config; + let config = &mut plugin.internal_mut().manifest.as_mut().config; for (k, v) in json.into_iter() { match v { Some(v) => { @@ -512,15 +499,11 @@ pub unsafe extern "C" fn extism_plugin_call( // needed before a new call let mut plugin_ref = match PluginRef::new(ctx, plugin_id, true) { None => return -1, - Some(p) => p.init(data, data_len as usize), + Some(p) => p.start_call(), }; let tx = plugin_ref.epoch_timer_tx.clone(); let plugin = plugin_ref.as_mut(); - if plugin.internal().last_error.borrow().is_some() { - return -1; - } - // Find function let name = std::ffi::CStr::from_ptr(func_name); let name = match name.to_str() { @@ -534,15 +517,6 @@ pub unsafe extern "C" fn extism_plugin_call( None => return plugin.error(format!("Function not found: {name}"), -1), }; - // Start timer - if let Err(e) = plugin.start_timer(&tx) { - let id = plugin.timer_id; - return plugin.error( - format!("Unable to start timeout manager for {id}: {e:?}"), - -1, - ); - } - // Check the number of results, reject functions with more than 1 result let n_results = func.ty(plugin.store()).results().len(); if n_results > 1 { @@ -559,13 +533,19 @@ pub unsafe extern "C" fn extism_plugin_call( } } + if let Err(e) = plugin.set_input(data, data_len as usize, tx) { + return plugin.error(e, -1); + } + + if plugin.has_error() { + return -1; + } + debug!("Calling function: {name} in plugin {plugin_id}"); // Call the function let mut results = vec![wasmtime::Val::null(); n_results]; - let res = func.call(&mut plugin.store_mut(), &[], results.as_mut_slice()); - - plugin.dump_memory(); + let res = func.call(plugin.store_mut(), &[], results.as_mut_slice()); // Cleanup runtime if !is_start { @@ -574,18 +554,10 @@ pub unsafe extern "C" fn extism_plugin_call( } } - // Stop timer - if let Err(e) = plugin.stop_timer() { - let id = plugin.timer_id; - return plugin.error( - format!("Failed to stop timeout manager for {id}: {e:?}"), - -1, - ); - } - match res { Ok(()) => (), Err(e) => { + plugin.store.set_epoch_deadline(1); if let Some(exit) = e.downcast_ref::() { trace!("WASI return code: {}", exit.0); if exit.0 != 0 { @@ -635,20 +607,27 @@ pub unsafe extern "C" fn extism_error(ctx: *mut Context, plugin: PluginIndex) -> return get_context_error(ctx); } - let plugin_ref = match PluginRef::new(ctx, plugin, false) { + let mut plugin_ref = match PluginRef::new(ctx, plugin, false) { None => return std::ptr::null(), Some(p) => p, }; - let plugin = plugin_ref.as_ref(); - - let err = plugin.internal().last_error.borrow(); - match err.as_ref() { - Some(e) => e.as_ptr() as *const _, - None => { - trace!("Error is NULL"); - std::ptr::null() - } + let plugin = plugin_ref.as_mut(); + let output = &mut [Val::I64(0)]; + if let Some(f) = plugin + .linker + .get(&mut plugin.store, "env", "extism_error_get") + { + f.into_func() + .unwrap() + .call(&mut plugin.store, &[], output) + .unwrap(); } + if output[0].unwrap_i64() == 0 { + trace!("Error is NULL"); + return std::ptr::null(); + } + + plugin.memory_ptr().add(output[0].unwrap_i64() as usize) as *const _ } /// Get the length of a plugin's output data @@ -660,13 +639,20 @@ pub unsafe extern "C" fn extism_plugin_output_length( trace!("Call to extism_plugin_output_length for plugin {plugin}"); let ctx = &mut *ctx; - let plugin_ref = match PluginRef::new(ctx, plugin, true) { + let mut plugin_ref = match PluginRef::new(ctx, plugin, true) { None => return 0, Some(p) => p, }; - let plugin = plugin_ref.as_ref(); - - let len = plugin.internal().output_length as Size; + let plugin = plugin_ref.as_mut(); + let out = &mut [Val::I64(0)]; + let _ = plugin + .linker + .get(&mut plugin.store, "env", "extism_output_length") + .unwrap() + .into_func() + .unwrap() + .call(&mut plugin.store_mut(), &[], out); + let len = out[0].unwrap_i64() as Size; trace!("Output length: {len}"); len } @@ -680,20 +666,23 @@ pub unsafe extern "C" fn extism_plugin_output_data( trace!("Call to extism_plugin_output_data for plugin {plugin}"); let ctx = &mut *ctx; - let plugin_ref = match PluginRef::new(ctx, plugin, true) { + let mut plugin_ref = match PluginRef::new(ctx, plugin, true) { None => return std::ptr::null(), Some(p) => p, }; - let plugin = plugin_ref.as_ref(); - let internal = plugin.internal(); + let plugin = plugin_ref.as_mut(); + let ptr = plugin.memory_ptr(); + let out = &mut [Val::I64(0)]; + let mut store = &mut *(plugin.store_mut() as *mut Store<_>); plugin - .memory() - .ptr(MemoryBlock::new( - internal.output_offset, - internal.output_length, - )) - .map(|x| x as *const _) - .unwrap_or(std::ptr::null()) + .linker + .get(&mut store, "env", "extism_output_offset") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], out) + .unwrap(); + ptr.add(out[0].unwrap_i64() as usize) } /// Set log file and level diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 59242b329..3bbd28eb9 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -9,7 +9,7 @@ repository = "https://github.com/extism/extism" description = "Extism Host SDK for Rust" [dependencies] -extism-manifest = { version = "0.3.0", path = "../manifest" } +extism-manifest = { version = "0.4.0", path = "../manifest" } extism-runtime = { version = "0.4.0", path = "../runtime"} serde_json = "1" log = "0.4" diff --git a/rust/src/lib.rs b/rust/src/lib.rs index fb65f9011..0961938fe 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1,6 +1,6 @@ pub use extism_manifest::{self as manifest, Manifest}; pub use extism_runtime::{ - sdk as bindings, Function, Internal as CurrentPlugin, MemoryBlock, UserData, Val, ValType, + sdk as bindings, Function, Internal as CurrentPlugin, UserData, Val, ValType, }; mod context; diff --git a/wasm/code-functions.wasm b/wasm/code-functions.wasm index 8301227b6bf1260cb4721cf21df440ad4d0ca4e5..8b293dbc43421eed99bdfb9802cf67e14d0c30ac 100755 GIT binary patch literal 18635 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 diff --git a/zig/src/current_plugin.zig b/zig/src/current_plugin.zig index 3fdf5ac0d..b965d92e1 100644 --- a/zig/src/current_plugin.zig +++ b/zig/src/current_plugin.zig @@ -13,7 +13,7 @@ pub fn getMemory(self: Self, offset: u64) []const u8 { const len = c.extism_current_plugin_memory_length(self.c_currplugin, offset); const c_data = c.extism_current_plugin_memory(self.c_currplugin); const data: [*:0]u8 = std.mem.span(c_data); - return data[offset .. len + 1]; + return data[offset .. offset + len]; } pub fn alloc(self: *Self, n: u64) u64 { diff --git a/zig/src/utils.zig b/zig/src/utils.zig index 7578cdc06..c50cea970 100644 --- a/zig/src/utils.zig +++ b/zig/src/utils.zig @@ -81,7 +81,7 @@ fn stringify( try out_stream.writeByte('{'); var field_output = false; var child_options = options; - child_options.whitespace.indent_level += 1; + child_options.whitespace = .indent_2; inline for (S.fields) |Field| { // don't include void fields if (Field.type == void) continue; @@ -103,18 +103,14 @@ fn stringify( } else { try out_stream.writeByte(','); } - try child_options.whitespace.outputIndent(out_stream); try json.encodeJsonString(Field.name, options, out_stream); try out_stream.writeByte(':'); - if (child_options.whitespace.separator) { + if (child_options.whitespace != .minified) { try out_stream.writeByte(' '); } try stringify(@field(value, Field.name), child_options, out_stream); } } - if (field_output) { - try options.whitespace.outputIndent(out_stream); - } try out_stream.writeByte('}'); return; }, @@ -133,24 +129,19 @@ fn stringify( }, // TODO: .Many when there is a sentinel (waiting for https://github.com/ziglang/zig/pull/3972) .Slice => { - if (ptr_info.child == u8 and options.string == .String and std.unicode.utf8ValidateSlice(value)) { + if (ptr_info.child == u8 and std.unicode.utf8ValidateSlice(value)) { try json.encodeJsonString(value, options, out_stream); return; } try out_stream.writeByte('['); var child_options = options; - child_options.whitespace.indent_level += 1; for (value, 0..) |x, i| { if (i != 0) { try out_stream.writeByte(','); } - try child_options.whitespace.outputIndent(out_stream); try stringify(x, child_options, out_stream); } - if (value.len != 0) { - try options.whitespace.outputIndent(out_stream); - } try out_stream.writeByte(']'); return; }, From ab4995dac2b6376e9d402b5680cd835eba1a665f Mon Sep 17 00:00:00 2001 From: zach Date: Fri, 28 Jul 2023 15:08:10 -0700 Subject: [PATCH 006/176] fix(python): store reference to host functions on Plugin (#399) This should fix the issue @neuronicnobody ran into with a segfault depending on the scope of the host function definition --- python/extism/extism.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/extism/extism.py b/python/extism/extism.py index e0dc38f7e..32a04a63e 100644 --- a/python/extism/extism.py +++ b/python/extism/extism.py @@ -263,6 +263,7 @@ def __init__( context = Context() wasm = _wasm(plugin) + self.functions = functions # Register plugin if functions is not None: @@ -310,6 +311,7 @@ def update( """ wasm = _wasm(manifest) if functions is not None: + self.functions = functions functions = [f.pointer for f in functions] ptr = _ffi.new("ExtismFunction*[]", functions) ok = _lib.extism_plugin_update( From 26b34ed90683816ddfa8f2bc7877c97dfe636da0 Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 31 Jul 2023 11:25:47 -0700 Subject: [PATCH 007/176] fix: Update more SDKs to store a reference to host functions in the Plugin type (#401) Similar to https://github.com/extism/extism/pull/399 --- extism.go | 10 ++++++---- ocaml/lib/plugin.ml | 4 +++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/extism.go b/extism.go index 15319cb8f..1c0e0cd5a 100644 --- a/extism.go +++ b/extism.go @@ -173,8 +173,9 @@ func (ctx *Context) Free() { // Plugin is used to call WASM functions type Plugin struct { - ctx *Context - id int32 + ctx *Context + id int32 + functions []Function } type WasmData struct { @@ -272,7 +273,7 @@ func register(ctx *Context, data []byte, functions []Function, wasi bool) (Plugi ) } - return Plugin{id: int32(plugin), ctx: ctx}, nil + return Plugin{id: int32(plugin), ctx: ctx, functions: functions}, nil } func update(ctx *Context, plugin int32, data []byte, functions []Function, wasi bool) error { @@ -361,7 +362,7 @@ func (p *Plugin) Update(module io.Reader, functions []Function, wasi bool) error if err != nil { return err } - + p.functions = functions return update(p.ctx, p.id, wasm, functions, wasi) } @@ -372,6 +373,7 @@ func (p *Plugin) UpdateManifest(manifest Manifest, functions []Function, wasi bo return err } + p.functions = functions return update(p.ctx, p.id, data, functions, wasi) } diff --git a/ocaml/lib/plugin.ml b/ocaml/lib/plugin.ml index 8cdc5a3fd..712e20522 100644 --- a/ocaml/lib/plugin.ml +++ b/ocaml/lib/plugin.ml @@ -77,7 +77,9 @@ let update plugin ?config ?(wasi = false) ?(functions = []) wasm = | Some msg -> Error (`Msg msg) else if not (set_config plugin config) then Error (`Msg "call to set_config failed") - else Ok () + else + let () = plugin.functions <- functions in + Ok () let update_manifest plugin ?wasi manifest = let data = Manifest.to_json manifest in From 41450a03a9e441ce8a21035a285558e5ca30a926 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 14:59:19 -0500 Subject: [PATCH 008/176] chore(deps-dev): Update minitest requirement from ~> 5.18.0 to ~> 5.19.0 in /ruby (#402) Updates the requirements on [minitest](https://github.com/minitest/minitest) to permit the latest version.
Changelog

Sourced from minitest's changelog.

=== 5.19.0 / 2023-07-26

  • 2 minor enhancements:

    • Add metadata lazy accessor to Runnable / Result. (matteeyah)
    • Only load minitest/unit (aka ancient MiniTest compatibility layer) if ENV["MT_COMPAT"]
  • 1 bug fix:

    • Minitest::TestTask enthusiastically added itself to default. (ParadoxV5)

=== 5.18.1 / 2023-06-16

  • 3 bug fixes:

    • Avoid extra string allocations when filtering tests. (tenderlove)
    • Only mention deprecated ENV['N'] if it is an integer string.
    • Push up test_order to Minitest::Runnable to fix minitest/hell. (koic)

=== 5.18.0 / 2023-03-04

  • 2 major enhancements:

    • Added assert_pattern & refute_pattern for pattern matching. (flavorjones)
    • Added matching must_pattern_match & wont_pattern_match to minitest/spec.
  • 1 bug fix:

    • Support the new message format of NameError in Ruby 3.3 (mame)

=== 5.17.0 / 2022-12-31

  • 1 minor enhancement:

    • Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)
  • 3 bug fixes:

    • Fix kwargs for Mock calls to delegator. (blowmage)
    • Fix kwargs for expectations. (bobmazanec, blowmage)
    • Remove check for .b method. (tenderlove)

=== 5.16.3 / 2022-08-17

  • 2 bug fixes:

    • Fixed exception sanitization by removing TypeError restriction on rescue.
    • Use A instead of deprecated TESTOPTS in rake test:slow. (davidstosik)

=== 5.16.2 / 2022-07-03

... (truncated)

Commits
  • 96a9972 prepped for release
  • de80282 + Add metadata lazy accessor to Runnable / Result. (matteeyah)
  • 4795997 - Minitest::TestTask enthusiastically added itself to default. (ParadoxV5)
  • a2c6c18 + Only load minitest/unit (aka ancient MiniTest compatibility layer) if ENV["...
  • 5f05692 Replace 'MiniTest' with 'Minitest' in example code. (sambostock)
  • 31da3c6 prepped for release
  • a90720a Removed 2.6 from CI.
  • ca42951 - Avoid extra string allocations when filtering tests. (tenderlove)
  • e6f4a85 - Only mention deprecated ENV['N'] if it is an integer string.
  • a9fa045 - Push up test_order to Minitest::Runnable to fix minitest/hell. (koic)
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- ruby/Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/Gemfile b/ruby/Gemfile index 6c6f203c0..c3c43cae3 100644 --- a/ruby/Gemfile +++ b/ruby/Gemfile @@ -11,5 +11,5 @@ gem "ffi", "~> 1.15.5" group :development do gem "yard", "~> 0.9.28" gem "rufo", "~> 0.13.0" - gem "minitest", "~> 5.18.0" + gem "minitest", "~> 5.19.0" end From a3053a9ecc8ec1d3943343c3feede996210e5b1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 14:59:43 -0500 Subject: [PATCH 009/176] chore(deps-dev): Bump jest from 29.6.1 to 29.6.2 in /node (#403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.6.1 to 29.6.2.
Release notes

Sourced from jest's releases.

v29.6.2

Fixes

  • [jest-circus] Fix snapshot matchers in concurrent tests when nr of tests exceeds maxConcurrency (#14335)
  • [@jest/core] When running global setup and teardown, do not try to change the message property of the thrown error object when the message property is unwritable (#14113)
  • [jest-snapshot] Move @types/prettier from dependencies to devDependencies (#14328)
  • [jest-snapshot] Throw an explicit error if Prettier v3 is used (#14367)
  • [jest-reporters] Add "skipped" and "todo" symbols to Github Actions Reporter (#14309)

Chore & Maintenance

  • [@jest/core] Use pluralize from jest-util rather than own internal (#14322)

New Contributors

Full Changelog: https://github.com/jestjs/jest/compare/v29.6.1...v29.6.2

Changelog

Sourced from jest's changelog.

29.6.2

Fixes

  • [jest-circus] Fix snapshot matchers in concurrent tests when nr of tests exceeds maxConcurrency (#14335)
  • [@jest/core] When running global setup and teardown, do not try to change the message property of the thrown error object when the message property is unwritable (#14113)
  • [jest-snapshot] Move @types/prettier from dependencies to devDependencies (#14328)
  • [jest-snapshot] Throw an explicit error if Prettier v3 is used (#14367)
  • [jest-reporters] Add "skipped" and "todo" symbols to Github Actions Reporter (#14309)

Chore & Maintenance

  • [@jest/core] Use pluralize from jest-util rather than own internal (#14322)
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=jest&package-manager=npm_and_yarn&previous-version=29.6.1&new-version=29.6.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 524 +++++++++++++++++++++-------------------- 1 file changed, 270 insertions(+), 254 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 990252fbf..2b3173133 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -654,16 +654,16 @@ } }, "node_modules/@jest/console": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz", - "integrity": "sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.2.tgz", + "integrity": "sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "slash": "^3.0.0" }, "engines": { @@ -671,15 +671,15 @@ } }, "node_modules/@jest/core": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz", - "integrity": "sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.2.tgz", + "integrity": "sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg==", "dev": true, "dependencies": { - "@jest/console": "^29.6.1", - "@jest/reporters": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", + "@jest/console": "^29.6.2", + "@jest/reporters": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -688,20 +688,20 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^29.5.0", - "jest-config": "^29.6.1", - "jest-haste-map": "^29.6.1", - "jest-message-util": "^29.6.1", + "jest-config": "^29.6.2", + "jest-haste-map": "^29.6.2", + "jest-message-util": "^29.6.2", "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.1", - "jest-resolve-dependencies": "^29.6.1", - "jest-runner": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-snapshot": "^29.6.1", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", - "jest-watcher": "^29.6.1", + "jest-resolve": "^29.6.2", + "jest-resolve-dependencies": "^29.6.2", + "jest-runner": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", + "jest-watcher": "^29.6.2", "micromatch": "^4.0.4", - "pretty-format": "^29.6.1", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -718,37 +718,37 @@ } }, "node_modules/@jest/environment": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz", - "integrity": "sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", + "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.6.1", + "@jest/fake-timers": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^29.6.1" + "jest-mock": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz", - "integrity": "sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", "dev": true, "dependencies": { - "expect": "^29.6.1", - "jest-snapshot": "^29.6.1" + "expect": "^29.6.2", + "jest-snapshot": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz", - "integrity": "sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", + "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", "dev": true, "dependencies": { "jest-get-type": "^29.4.3" @@ -758,47 +758,47 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz", - "integrity": "sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", + "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.6.1", - "jest-mock": "^29.6.1", - "jest-util": "^29.6.1" + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz", - "integrity": "sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", + "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/expect": "^29.6.1", + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", "@jest/types": "^29.6.1", - "jest-mock": "^29.6.1" + "jest-mock": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz", - "integrity": "sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.2.tgz", + "integrity": "sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", + "@jest/console": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", "@jest/types": "^29.6.1", "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", @@ -812,9 +812,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1", - "jest-worker": "^29.6.1", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -859,12 +859,12 @@ } }, "node_modules/@jest/test-result": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz", - "integrity": "sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.2.tgz", + "integrity": "sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==", "dev": true, "dependencies": { - "@jest/console": "^29.6.1", + "@jest/console": "^29.6.2", "@jest/types": "^29.6.1", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" @@ -874,14 +874,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz", - "integrity": "sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz", + "integrity": "sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.1", + "@jest/test-result": "^29.6.2", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", + "jest-haste-map": "^29.6.2", "slash": "^3.0.0" }, "engines": { @@ -889,9 +889,9 @@ } }, "node_modules/@jest/transform": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz", - "integrity": "sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", + "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -902,9 +902,9 @@ "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", + "jest-haste-map": "^29.6.2", "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.1", + "jest-util": "^29.6.2", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1132,12 +1132,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, "node_modules/@types/ref-array-di": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/ref-array-di/-/ref-array-di-1.2.5.tgz", @@ -1304,12 +1298,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/babel-jest": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz", - "integrity": "sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.2.tgz", + "integrity": "sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==", "dev": true, "dependencies": { - "@jest/transform": "^29.6.1", + "@jest/transform": "^29.6.2", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.5.0", @@ -1654,10 +1648,18 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.0.tgz", + "integrity": "sha512-3sSQTYoWKGcRHmHl6Y6opLpRJH55bxeGQ0Y1LCI5pZzUXvokVkj0FC4bi7uEwazxA9FQZ0Nv067Zt5kSUvXxEA==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deepmerge": { "version": "4.3.1", @@ -1825,17 +1827,17 @@ } }, "node_modules/expect": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz", - "integrity": "sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.6.1", + "@jest/expect-utils": "^29.6.2", "@types/node": "*", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1" + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2193,17 +2195,17 @@ } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps": { @@ -2221,9 +2223,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -2234,15 +2236,15 @@ } }, "node_modules/jest": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz", - "integrity": "sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.2.tgz", + "integrity": "sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==", "dev": true, "dependencies": { - "@jest/core": "^29.6.1", + "@jest/core": "^29.6.2", "@jest/types": "^29.6.1", "import-local": "^3.0.2", - "jest-cli": "^29.6.1" + "jest-cli": "^29.6.2" }, "bin": { "jest": "bin/jest.js" @@ -2273,28 +2275,28 @@ } }, "node_modules/jest-circus": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz", - "integrity": "sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.2.tgz", + "integrity": "sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/expect": "^29.6.1", - "@jest/test-result": "^29.6.1", + "@jest/environment": "^29.6.2", + "@jest/expect": "^29.6.2", + "@jest/test-result": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.6.1", - "jest-matcher-utils": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-snapshot": "^29.6.1", - "jest-util": "^29.6.1", + "jest-each": "^29.6.2", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", "p-limit": "^3.1.0", - "pretty-format": "^29.6.1", + "pretty-format": "^29.6.2", "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" @@ -2304,21 +2306,21 @@ } }, "node_modules/jest-cli": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz", - "integrity": "sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.2.tgz", + "integrity": "sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==", "dev": true, "dependencies": { - "@jest/core": "^29.6.1", - "@jest/test-result": "^29.6.1", + "@jest/core": "^29.6.2", + "@jest/test-result": "^29.6.2", "@jest/types": "^29.6.1", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.6.1", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", + "jest-config": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -2338,31 +2340,31 @@ } }, "node_modules/jest-config": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz", - "integrity": "sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.2.tgz", + "integrity": "sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.6.1", + "@jest/test-sequencer": "^29.6.2", "@jest/types": "^29.6.1", - "babel-jest": "^29.6.1", + "babel-jest": "^29.6.2", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.6.1", - "jest-environment-node": "^29.6.1", + "jest-circus": "^29.6.2", + "jest-environment-node": "^29.6.2", "jest-get-type": "^29.4.3", "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.1", - "jest-runner": "^29.6.1", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", + "jest-resolve": "^29.6.2", + "jest-runner": "^29.6.2", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.6.1", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -2383,15 +2385,15 @@ } }, "node_modules/jest-diff": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz", - "integrity": "sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", + "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.4.3", "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2410,33 +2412,33 @@ } }, "node_modules/jest-each": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz", - "integrity": "sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.2.tgz", + "integrity": "sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", "chalk": "^4.0.0", "jest-get-type": "^29.4.3", - "jest-util": "^29.6.1", - "pretty-format": "^29.6.1" + "jest-util": "^29.6.2", + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz", - "integrity": "sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.2.tgz", + "integrity": "sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/fake-timers": "^29.6.1", + "@jest/environment": "^29.6.2", + "@jest/fake-timers": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", - "jest-mock": "^29.6.1", - "jest-util": "^29.6.1" + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2452,9 +2454,9 @@ } }, "node_modules/jest-haste-map": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz", - "integrity": "sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", + "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", @@ -2464,8 +2466,8 @@ "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.1", - "jest-worker": "^29.6.1", + "jest-util": "^29.6.2", + "jest-worker": "^29.6.2", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -2477,37 +2479,37 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz", - "integrity": "sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz", + "integrity": "sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==", "dev": true, "dependencies": { "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz", - "integrity": "sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", + "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.6.1", + "jest-diff": "^29.6.2", "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.1" + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz", - "integrity": "sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", + "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", @@ -2516,7 +2518,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.6.1", + "pretty-format": "^29.6.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -2525,14 +2527,14 @@ } }, "node_modules/jest-mock": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz", - "integrity": "sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", + "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", "@types/node": "*", - "jest-util": "^29.6.1" + "jest-util": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2565,17 +2567,17 @@ } }, "node_modules/jest-resolve": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz", - "integrity": "sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.2.tgz", + "integrity": "sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", + "jest-haste-map": "^29.6.2", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.6.1", - "jest-validate": "^29.6.1", + "jest-util": "^29.6.2", + "jest-validate": "^29.6.2", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -2585,43 +2587,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz", - "integrity": "sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz", + "integrity": "sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w==", "dev": true, "dependencies": { "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.6.1" + "jest-snapshot": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz", - "integrity": "sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.2.tgz", + "integrity": "sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==", "dev": true, "dependencies": { - "@jest/console": "^29.6.1", - "@jest/environment": "^29.6.1", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", + "@jest/console": "^29.6.2", + "@jest/environment": "^29.6.2", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.6.1", - "jest-haste-map": "^29.6.1", - "jest-leak-detector": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-resolve": "^29.6.1", - "jest-runtime": "^29.6.1", - "jest-util": "^29.6.1", - "jest-watcher": "^29.6.1", - "jest-worker": "^29.6.1", + "jest-environment-node": "^29.6.2", + "jest-haste-map": "^29.6.2", + "jest-leak-detector": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-resolve": "^29.6.2", + "jest-runtime": "^29.6.2", + "jest-util": "^29.6.2", + "jest-watcher": "^29.6.2", + "jest-worker": "^29.6.2", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -2630,17 +2632,17 @@ } }, "node_modules/jest-runtime": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz", - "integrity": "sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.2.tgz", + "integrity": "sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.1", - "@jest/fake-timers": "^29.6.1", - "@jest/globals": "^29.6.1", + "@jest/environment": "^29.6.2", + "@jest/fake-timers": "^29.6.2", + "@jest/globals": "^29.6.2", "@jest/source-map": "^29.6.0", - "@jest/test-result": "^29.6.1", - "@jest/transform": "^29.6.1", + "@jest/test-result": "^29.6.2", + "@jest/transform": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", "chalk": "^4.0.0", @@ -2648,13 +2650,13 @@ "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-mock": "^29.6.1", + "jest-haste-map": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.1", - "jest-snapshot": "^29.6.1", - "jest-util": "^29.6.1", + "jest-resolve": "^29.6.2", + "jest-snapshot": "^29.6.2", + "jest-util": "^29.6.2", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -2663,9 +2665,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz", - "integrity": "sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", + "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -2673,21 +2675,20 @@ "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.6.1", - "@jest/transform": "^29.6.1", + "@jest/expect-utils": "^29.6.2", + "@jest/transform": "^29.6.2", "@jest/types": "^29.6.1", - "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.6.1", + "expect": "^29.6.2", "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.1", + "jest-diff": "^29.6.2", "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.1", - "jest-message-util": "^29.6.1", - "jest-util": "^29.6.1", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", "natural-compare": "^1.4.0", - "pretty-format": "^29.6.1", + "pretty-format": "^29.6.2", "semver": "^7.5.3" }, "engines": { @@ -2710,9 +2711,9 @@ } }, "node_modules/jest-util": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz", - "integrity": "sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", + "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", @@ -2727,9 +2728,9 @@ } }, "node_modules/jest-validate": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz", - "integrity": "sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.2.tgz", + "integrity": "sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==", "dev": true, "dependencies": { "@jest/types": "^29.6.1", @@ -2737,7 +2738,7 @@ "chalk": "^4.0.0", "jest-get-type": "^29.4.3", "leven": "^3.1.0", - "pretty-format": "^29.6.1" + "pretty-format": "^29.6.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2756,18 +2757,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz", - "integrity": "sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.2.tgz", + "integrity": "sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.1", + "@jest/test-result": "^29.6.2", "@jest/types": "^29.6.1", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.6.1", + "jest-util": "^29.6.2", "string-length": "^4.0.1" }, "engines": { @@ -2775,13 +2776,13 @@ } }, "node_modules/jest-worker": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz", - "integrity": "sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", + "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.6.1", + "jest-util": "^29.6.2", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -2920,20 +2921,35 @@ "dev": true }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -3246,9 +3262,9 @@ } }, "node_modules/pretty-format": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz", - "integrity": "sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==", + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", + "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", "dev": true, "dependencies": { "@jest/schemas": "^29.6.0", From 3219d79a8f3c01583d4f93207f148e9fa81d48ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 14:59:52 -0500 Subject: [PATCH 010/176] chore(deps-dev): Bump @types/node from 20.4.2 to 20.4.5 in /node (#404) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.2 to 20.4.5.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.2&new-version=20.4.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 2b3173133..5d6db9ced 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1128,9 +1128,9 @@ } }, "node_modules/@types/node": { - "version": "20.4.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.2.tgz", - "integrity": "sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==" + "version": "20.4.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", + "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From baa060d062e46b27fce0f50868ec1b3d1644bcf1 Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 31 Jul 2023 16:52:01 -0700 Subject: [PATCH 011/176] feat: Haskell host functions (#400) --- haskell/Example.hs | 19 ++- haskell/extism.cabal | 4 +- haskell/manifest/Extism/JSON.hs | 6 +- haskell/manifest/extism-manifest.cabal | 2 +- haskell/src/Extism.hs | 162 +++++++++++++++++++------ haskell/src/Extism/Bindings.hs | 92 ++++++++++++++ haskell/src/Extism/CurrentPlugin.hs | 48 ++++++++ haskell/test/Test.hs | 20 ++- runtime/extism.h | 2 +- runtime/src/internal.rs | 7 +- runtime/src/sdk.rs | 7 +- 11 files changed, 315 insertions(+), 54 deletions(-) create mode 100644 haskell/src/Extism/CurrentPlugin.hs diff --git a/haskell/Example.hs b/haskell/Example.hs index 9dd3c9d07..04eaea99f 100644 --- a/haskell/Example.hs +++ b/haskell/Example.hs @@ -1,15 +1,24 @@ module Main where import Extism +import Extism.CurrentPlugin import Extism.Manifest(manifest, wasmFile) unwrap (Right x) = x unwrap (Left (ExtismError msg)) = do error msg +hello plugin params msg = do + putStrLn "Hello from Haskell!" + putStrLn msg + offs <- allocBytes plugin (toByteString "{\"count\": 999}") + return [toI64 offs] + main = do - let m = manifest [wasmFile "../wasm/code.wasm"] - plugin <- unwrap <$> Extism.createPluginFromManifest m False - res <- unwrap <$> Extism.call plugin "count_vowels" (Extism.toByteString "this is a test") - putStrLn (Extism.fromByteString res) - Extism.free plugin + setLogFile "stdout" Error + let m = manifest [wasmFile "../wasm/code-functions.wasm"] + f <- hostFunction "hello_world" [I64] [I64] hello "Hello, again" + plugin <- unwrap <$> createPluginFromManifest m [f] True + res <- unwrap <$> call plugin "count_vowels" (toByteString "this is a test") + putStrLn (fromByteString res) + free plugin diff --git a/haskell/extism.cabal b/haskell/extism.cabal index e1c3859ce..1a5d4c3c2 100644 --- a/haskell/extism.cabal +++ b/haskell/extism.cabal @@ -8,10 +8,10 @@ bug-reports: https://github.com/extism/extism synopsis: Extism bindings description: Bindings to Extism, the universal plugin system category: Plugins, WebAssembly -extra-source-files: CHANGELOG.md +extra-doc-files: CHANGELOG.md library - exposed-modules: Extism + exposed-modules: Extism Extism.CurrentPlugin reexported-modules: Extism.Manifest hs-source-dirs: src other-modules: Extism.Bindings diff --git a/haskell/manifest/Extism/JSON.hs b/haskell/manifest/Extism/JSON.hs index 5a8a708fc..506ea3ddb 100644 --- a/haskell/manifest/Extism/JSON.hs +++ b/haskell/manifest/Extism/JSON.hs @@ -16,8 +16,8 @@ isNull JSNull = True isNull _ = False filterNulls obj = [(a, b) | (a, b) <- obj, not (isNull b)] object x = makeObj $ filterNulls x -objectWithNulls x = makeObj x -nonNull x = NotNull x +objectWithNulls = makeObj +nonNull = NotNull null' = Null (.=) a b = (a, showJSON b) toNullable (Just x) = NotNull x @@ -40,7 +40,7 @@ find :: JSON a => String -> JSValue -> Nullable a find k obj = obj .? k update :: JSON a => String -> a -> JSValue -> JSValue -update k v (JSObject obj) = object $ (fromJSObject obj) ++ [k .= v] +update k v (JSObject obj) = object $ fromJSObject obj ++ [k .= v] instance JSON a => JSON (Nullable a) where showJSON (NotNull x) = showJSON x diff --git a/haskell/manifest/extism-manifest.cabal b/haskell/manifest/extism-manifest.cabal index 529d758f7..398d9bd53 100644 --- a/haskell/manifest/extism-manifest.cabal +++ b/haskell/manifest/extism-manifest.cabal @@ -8,7 +8,7 @@ bug-reports: https://github.com/extism/extism synopsis: Extism manifest bindings description: Bindings to Extism WebAssembly manifest category: Plugins, WebAssembly -extra-source-files: CHANGELOG.md +extra-doc-files: CHANGELOG.md library exposed-modules: Extism.Manifest Extism.JSON diff --git a/haskell/src/Extism.hs b/haskell/src/Extism.hs index f8de37cfc..3c910976c 100644 --- a/haskell/src/Extism.hs +++ b/haskell/src/Extism.hs @@ -1,10 +1,21 @@ -module Extism (module Extism, module Extism.Manifest) where +module Extism ( + module Extism, + module Extism.Manifest, + ValType(..), + Val(..) +) where + import Data.Int import Data.Word import Control.Monad (void) import Foreign.ForeignPtr import Foreign.C.String import Foreign.Ptr +import Foreign.Marshal.Array +import Foreign.Storable +import Foreign.StablePtr +import Foreign.Concurrent +import Foreign.Marshal.Utils (copyBytes, moveBytes) import Data.ByteString as B import Data.ByteString.Internal (c2w, w2c) import Data.ByteString.Unsafe (unsafeUseAsCString) @@ -16,10 +27,17 @@ import Extism.Bindings -- | Context for managing plugins newtype Context = Context (ForeignPtr ExtismContext) +-- | Host function +data Function = Function (ForeignPtr ExtismFunction) (StablePtr ()) + -- | Plugins can be used to call WASM function -data Plugin = Plugin Context Int32 +data Plugin = Plugin Context Int32 [Function] + +-- | Cancellation handle for Plugins +newtype CancelHandle = CancelHandle (Ptr ExtismCancelHandle) -data CancelHandle = CancelHandle (Ptr ExtismCancelHandle) +-- | Access the plugin that is currently executing from inside a host function +type CurrentPlugin = Ptr ExtismCurrentPlugin -- | Log level data LogLevel = Error | Warn | Info | Debug | Trace deriving (Show) @@ -53,80 +71,94 @@ reset (Context ctx) = newContext :: IO Context newContext = do ptr <- extism_context_new - fptr <- newForeignPtr extism_context_free ptr + fptr <- Foreign.ForeignPtr.newForeignPtr extism_context_free ptr return (Context fptr) - + -- | Execute a function with a new 'Context' that is destroyed when it returns withContext :: (Context -> IO a) -> IO a withContext f = do ctx <- newContext f ctx +-- | Execute a function with the provided 'Plugin' as a parameter, then frees the 'Plugin' +-- | before returning the result. +withPlugin :: (Plugin -> IO a) -> Plugin -> IO a +withPlugin f plugin = do + res <- f plugin + free plugin + return res + -- | Create a 'Plugin' from a WASM module, `useWasi` determines if WASI should -- | be linked -plugin :: Context -> B.ByteString -> Bool -> IO (Result Plugin) -plugin c wasm useWasi = +plugin :: Context -> B.ByteString -> [Function] -> Bool -> IO (Result Plugin) +plugin c wasm functions useWasi = + let nfunctions = fromIntegral (Prelude.length functions) in let length = fromIntegral (B.length wasm) in let wasi = fromInteger (if useWasi then 1 else 0) in let Context ctx = c in do + funcs <- Prelude.mapM (\(Function ptr _) -> withForeignPtr ptr (\x -> do return x)) functions withForeignPtr ctx (\ctx -> do p <- unsafeUseAsCString wasm (\s -> - extism_plugin_new ctx (castPtr s) length nullPtr 0 wasi ) + withArray funcs (\funcs -> + extism_plugin_new ctx (castPtr s) length funcs nfunctions wasi )) if p < 0 then do err <- extism_error ctx (-1) e <- peekCString err return $ Left (ExtismError e) else - return $ Right (Plugin c p)) - + return $ Right (Plugin c p functions)) + -- | Create a 'Plugin' with its own 'Context' -createPlugin :: B.ByteString -> Bool -> IO (Result Plugin) -createPlugin c useWasi = do +createPlugin :: B.ByteString -> [Function] -> Bool -> IO (Result Plugin) +createPlugin c functions useWasi = do ctx <- newContext - plugin ctx c useWasi + plugin ctx c functions useWasi -- | Create a 'Plugin' from a 'Manifest' -pluginFromManifest :: Context -> Manifest -> Bool -> IO (Result Plugin) -pluginFromManifest ctx manifest useWasi = +pluginFromManifest :: Context -> Manifest -> [Function] -> Bool -> IO (Result Plugin) +pluginFromManifest ctx manifest functions useWasi = let wasm = toByteString $ toString manifest in - plugin ctx wasm useWasi + plugin ctx wasm functions useWasi -- | Create a 'Plugin' with its own 'Context' from a 'Manifest' -createPluginFromManifest :: Manifest -> Bool -> IO (Result Plugin) -createPluginFromManifest manifest useWasi = do +createPluginFromManifest :: Manifest -> [Function] -> Bool -> IO (Result Plugin) +createPluginFromManifest manifest functions useWasi = do ctx <- newContext - pluginFromManifest ctx manifest useWasi + pluginFromManifest ctx manifest functions useWasi -- | Update a 'Plugin' with a new WASM module -update :: Plugin -> B.ByteString -> Bool -> IO (Result ()) -update (Plugin (Context ctx) id) wasm useWasi = +update :: Plugin -> B.ByteString -> [Function] -> Bool -> IO (Result Plugin) +update (Plugin (Context ctx) id _) wasm functions useWasi = + let nfunctions = fromIntegral (Prelude.length functions) in let length = fromIntegral (B.length wasm) in let wasi = fromInteger (if useWasi then 1 else 0) in do - withForeignPtr ctx (\ctx -> do + funcs <- Prelude.mapM (\(Function ptr _ ) -> withForeignPtr ptr (\x -> do return x)) functions + withForeignPtr ctx (\ctx' -> do b <- unsafeUseAsCString wasm (\s -> - extism_plugin_update ctx id (castPtr s) length nullPtr 0 wasi) + withArray funcs (\funcs -> + extism_plugin_update ctx' id (castPtr s) length funcs nfunctions wasi)) if b <= 0 then do - err <- extism_error ctx (-1) + err <- extism_error ctx' (-1) e <- peekCString err return $ Left (ExtismError e) else - return (Right ())) + return (Right (Plugin (Context ctx) id functions))) -- | Update a 'Plugin' with a new 'Manifest' -updateManifest :: Plugin -> Manifest -> Bool -> IO (Result ()) -updateManifest plugin manifest useWasi = +updateManifest :: Plugin -> Manifest -> [Function] -> Bool -> IO (Result Plugin) +updateManifest plugin manifest functions useWasi = let wasm = toByteString $ toString manifest in - update plugin wasm useWasi + update plugin wasm functions useWasi -- | Check if a 'Plugin' is valid isValid :: Plugin -> Bool -isValid (Plugin _ p) = p >= 0 +isValid (Plugin _ p _) = p >= 0 -- | Set configuration values for a plugin setConfig :: Plugin -> [(String, Maybe String)] -> IO Bool -setConfig (Plugin (Context ctx) plugin) x = +setConfig (Plugin (Context ctx) plugin _) x = if plugin < 0 then return False else @@ -155,14 +187,14 @@ setLogFile filename level = -- | Check if a function exists in the given plugin functionExists :: Plugin -> String -> IO Bool -functionExists (Plugin (Context ctx) plugin) name = do +functionExists (Plugin (Context ctx) plugin _) name = do withForeignPtr ctx (\ctx -> do b <- withCString name (extism_plugin_function_exists ctx plugin) if b == 1 then return True else return False) --- | Call a function provided by the given plugin call :: Plugin -> String -> B.ByteString -> IO (Result B.ByteString) -call (Plugin (Context ctx) plugin) name input = +call (Plugin (Context ctx) plugin _) name input = let length = fromIntegral (B.length input) in do withForeignPtr ctx (\ctx -> do @@ -184,15 +216,73 @@ call (Plugin (Context ctx) plugin) name input = -- | Free a 'Plugin', this will automatically be called for every plugin -- | associated with a 'Context' when that 'Context' is freed free :: Plugin -> IO () -free (Plugin (Context ctx) plugin) = +free (Plugin (Context ctx) plugin _) = withForeignPtr ctx (`extism_plugin_free` plugin) +-- | Create a new 'CancelHandle' that can be used to cancel a running plugin +-- | from another thread. cancelHandle :: Plugin -> IO CancelHandle -cancelHandle (Plugin (Context ctx) plugin) = do - handle <- withForeignPtr ctx (\ctx -> extism_plugin_cancel_handle ctx plugin) +cancelHandle (Plugin (Context ctx) plugin _) = do + handle <- withForeignPtr ctx (`extism_plugin_cancel_handle` plugin) return (CancelHandle handle) +-- | Cancel a running plugin using a 'CancelHandle' cancel :: CancelHandle -> IO Bool -cancel (CancelHandle handle) = +cancel (CancelHandle handle) = extism_plugin_cancel handle + +-- | Create a new 'Function' that can be called from a 'Plugin' +hostFunction :: String -> [ValType] -> [ValType] -> (CurrentPlugin -> [Val] -> a -> IO [Val]) -> a -> IO Function +hostFunction name params results f v = + let nparams = fromIntegral $ Prelude.length params in + let nresults = fromIntegral $ Prelude.length results in + do + cb <- callbackWrap (callback f :: CCallback) + free <- freePtrWrap freePtr + userData <- newStablePtr (v, free, cb) + let userDataPtr = castStablePtrToPtr userData + x <- withCString name (\name -> do + withArray params (\params -> + withArray results (\results -> do + extism_function_new name params nparams results nresults cb userDataPtr free))) + let freeFn = extism_function_free x + fptr <- Foreign.Concurrent.newForeignPtr x freeFn + return $ Function fptr (castPtrToStablePtr userDataPtr) + + +-- | Create a new I32 'Val' +toI32 :: Integral a => a -> Val +toI32 x = ValI32 (fromIntegral x) + +-- | Create a new I64 'Val' +toI64 :: Integral a => a -> Val +toI64 x = ValI64 (fromIntegral x) + +-- | Create a new F32 'Val' +toF32 :: Float -> Val +toF32 = ValF32 + +-- | Create a new F64 'Val' +toF64 :: Double -> Val +toF64 = ValF64 + +-- | Get I32 'Val' +fromI32 :: Integral a => Val -> Maybe a +fromI32 (ValI32 x) = Just (fromIntegral x) +fromI32 _ = Nothing + +-- | Get I64 'Val' +fromI64 :: Integral a => Val -> Maybe a +fromI64 (ValI64 x) = Just (fromIntegral x) +fromI64 _ = Nothing + +-- | Get F32 'Val' +fromF32 :: Val -> Maybe Float +fromF32 (ValF32 x) = Just x +fromF32 _ = Nothing + +-- | Get F64 'Val' +fromF64 :: Val -> Maybe Double +fromF64 (ValF64 x) = Just x +fromF64 _ = Nothing \ No newline at end of file diff --git a/haskell/src/Extism/Bindings.hs b/haskell/src/Extism/Bindings.hs index fadebe113..2632934b7 100644 --- a/haskell/src/Extism/Bindings.hs +++ b/haskell/src/Extism/Bindings.hs @@ -7,10 +7,77 @@ import Foreign.Ptr import Foreign.C.String import Data.Int import Data.Word +import Foreign.Storable +import Foreign.Marshal.Array +import Foreign.StablePtr + +type FreeCallback = Ptr () -> IO () newtype ExtismContext = ExtismContext () deriving Show newtype ExtismFunction = ExtismFunction () deriving Show newtype ExtismCancelHandle = ExtismCancelHandle () deriving Show +newtype ExtismCurrentPlugin = ExtismCurrentPlugin () deriving Show +data ValType = I32 | I64 | F32 | F64 | V128 | FuncRef | ExternRef deriving (Show, Eq) +data Val = ValI32 Int32 | ValI64 Int64 | ValF32 Float | ValF64 Double deriving (Show, Eq) + +typeOfVal (ValI32 _) = I32 +typeOfVal (ValI64 _) = I64 +typeOfVal (ValF32 _) = F32 +typeOfVal (ValF64 _) = F64 + +type CCallback = Ptr ExtismCurrentPlugin -> Ptr Val -> Word64 -> Ptr Val -> Word64 -> Ptr () -> IO () + +_32Bit = sizeOf (undefined :: Int) == 4 + +instance Storable Val where + sizeOf _ = + if _32Bit then 12 else 16 + alignment _ = 1 + peek ptr = do + let offs = if _32Bit then 4 else 8 + t <- valTypeOfInt <$> peekByteOff ptr 0 + case t of + I32 -> ValI32 <$> peekByteOff ptr offs + I64 -> ValI64 <$> peekByteOff ptr offs + F32 -> ValF32 <$> peekByteOff ptr offs + F64 -> ValF64 <$> peekByteOff ptr offs + poke ptr x = do + let offs = if _32Bit then 4 else 8 + pokeByteOff ptr 0 (typeOfVal x) + case x of + ValI32 x -> pokeByteOff ptr offs x + ValI64 x -> pokeByteOff ptr offs x + ValF32 x -> pokeByteOff ptr offs x + ValF64 x -> pokeByteOff ptr offs x + + +intOfValType :: ValType -> CInt +intOfValType I32 = 0 +intOfValType I64 = 1 +intOfValType F32 = 2 +intOfValType F64 = 3 +intOfValType V128 = 4 +intOfValType FuncRef = 5 +intOfValType ExternRef = 6 + +valTypeOfInt :: CInt -> ValType +valTypeOfInt 0 = I32 +valTypeOfInt 1 = I64 +valTypeOfInt 2 = F32 +valTypeOfInt 3 = F64 +valTypeOfInt 4 = V128 +valTypeOfInt 5 = FuncRef +valTypeOfInt 6 = ExternRef +valTypeOfInt _ = error "Invalid ValType" + +instance Storable ValType where + sizeOf _ = 4 + alignment _ = 1 + peek ptr = do + x <- peekByteOff ptr 0 + return $ valTypeOfInt (x :: CInt) + poke ptr x = do + pokeByteOff ptr 0 (intOfValType x) foreign import ccall safe "extism.h extism_context_new" extism_context_new :: IO (Ptr ExtismContext) foreign import ccall safe "extism.h &extism_context_free" extism_context_free :: FunPtr (Ptr ExtismContext -> IO ()) @@ -28,3 +95,28 @@ foreign import ccall safe "extism.h extism_context_reset" extism_context_reset : foreign import ccall safe "extism.h extism_version" extism_version :: IO CString foreign import ccall safe "extism.h extism_plugin_cancel_handle" extism_plugin_cancel_handle :: Ptr ExtismContext -> Int32 -> IO (Ptr ExtismCancelHandle) foreign import ccall safe "extism.h extism_plugin_cancel" extism_plugin_cancel :: Ptr ExtismCancelHandle -> IO Bool + +foreign import ccall safe "extism.h extism_function_new" extism_function_new :: CString -> Ptr ValType -> Word64 -> Ptr ValType -> Word64 -> FunPtr CCallback -> Ptr () -> FunPtr FreeCallback -> IO (Ptr ExtismFunction) +foreign import ccall safe "extism.h extism_function_free" extism_function_free :: Ptr ExtismFunction -> IO () +foreign import ccall safe "extism.h extism_current_plugin_memory" extism_current_plugin_memory :: Ptr ExtismCurrentPlugin -> IO (Ptr Word8) +foreign import ccall safe "extism.h extism_current_plugin_memory_alloc" extism_current_plugin_memory_alloc :: Ptr ExtismCurrentPlugin -> Word64 -> IO Word64 +foreign import ccall safe "extism.h extism_current_plugin_memory_length" extism_current_plugin_memory_length :: Ptr ExtismCurrentPlugin -> Word64 -> IO Word64 +foreign import ccall safe "extism.h extism_current_plugin_memory_free" extism_current_plugin_memory_free :: Ptr ExtismCurrentPlugin -> Word64 -> IO () + +freePtr ptr = do + let s = castPtrToStablePtr ptr + (a, b, c) <- deRefStablePtr s + freeHaskellFunPtr b + freeHaskellFunPtr c + freeStablePtr s + +foreign import ccall "wrapper" freePtrWrap :: FreeCallback -> IO (FunPtr FreeCallback) + +foreign import ccall "wrapper" callbackWrap :: CCallback -> IO (FunPtr CCallback) + +callback :: (Ptr ExtismCurrentPlugin -> [Val] -> a -> IO [Val]) -> (Ptr ExtismCurrentPlugin -> Ptr Val -> Word64 -> Ptr Val -> Word64 -> Ptr () -> IO ()) +callback f plugin params nparams results nresults ptr = do + p <- peekArray (fromIntegral nparams) params + (userData, _, _) <- deRefStablePtr (castPtrToStablePtr ptr) + res <- f plugin p userData + pokeArray results res diff --git a/haskell/src/Extism/CurrentPlugin.hs b/haskell/src/Extism/CurrentPlugin.hs new file mode 100644 index 000000000..a9c4fc94c --- /dev/null +++ b/haskell/src/Extism/CurrentPlugin.hs @@ -0,0 +1,48 @@ +module Extism.CurrentPlugin where + +import Extism +import Extism.Bindings +import Data.Word +import Data.ByteString as B +import Foreign.Ptr +import Foreign.Marshal.Array + +-- | Allocate a new handle of the given size +memoryAlloc :: CurrentPlugin -> Word64 -> IO Word64 +memoryAlloc = extism_current_plugin_memory_alloc + +-- | Get the length of a handle, returns 0 if the handle is invalid +memoryLength :: CurrentPlugin -> Word64 -> IO Word64 +memoryLength = extism_current_plugin_memory_length + +-- | Free allocated memory +memoryFree :: CurrentPlugin -> Word64 -> IO () +memoryFree = extism_current_plugin_memory_free + +-- | Access a pointer to the entire memory region +memory :: CurrentPlugin -> IO (Ptr Word8) +memory = extism_current_plugin_memory + +-- | Access a pointer the a specific offset in memory +memoryOffset :: CurrentPlugin -> Word64 -> IO (Ptr Word8) +memoryOffset plugin offs = do + x <- extism_current_plugin_memory plugin + return $ plusPtr x (fromIntegral offs) + +-- | Access the data associated with a handle as a 'ByteString' +memoryBytes :: CurrentPlugin -> Word64 -> IO B.ByteString +memoryBytes plugin offs = do + ptr <- memoryOffset plugin offs + len <- memoryLength plugin offs + arr <- peekArray (fromIntegral len) ptr + return $ B.pack arr + +-- | Allocate memory and copy an existing 'ByteString' into it +allocBytes :: CurrentPlugin -> B.ByteString -> IO Word64 +allocBytes plugin s = do + let length = B.length s + offs <- memoryAlloc plugin (fromIntegral length) + ptr <- memoryOffset plugin offs + pokeArray ptr (B.unpack s) + return offs + diff --git a/haskell/test/Test.hs b/haskell/test/Test.hs index 88190fbbf..eddddc96e 100644 --- a/haskell/test/Test.hs +++ b/haskell/test/Test.hs @@ -1,6 +1,7 @@ import Test.HUnit import Extism import Extism.Manifest +import Extism.CurrentPlugin unwrap (Right x) = return x @@ -8,12 +9,13 @@ unwrap (Left (ExtismError msg)) = assertFailure msg defaultManifest = manifest [wasmFile "../../wasm/code.wasm"] +hostFunctionManifest = manifest [wasmFile "../../wasm/code-functions.wasm"] initPlugin :: Maybe Context -> IO Plugin initPlugin Nothing = - Extism.createPluginFromManifest defaultManifest False >>= unwrap + Extism.createPluginFromManifest defaultManifest [] False >>= unwrap initPlugin (Just ctx) = - Extism.pluginFromManifest ctx defaultManifest False >>= unwrap + Extism.pluginFromManifest ctx defaultManifest [] False >>= unwrap pluginFunctionExists = do p <- initPlugin Nothing @@ -30,6 +32,17 @@ pluginCall = do p <- initPlugin Nothing checkCallResult p + +hello plugin params () = do + putStrLn "Hello from Haskell!" + offs <- allocBytes plugin (toByteString "{\"count\": 999}") + return [toI64 offs] + +pluginCallHostFunction = do + p <- Extism.createPluginFromManifest hostFunctionManifest [] False >>= unwrap + res <- call p "count_vowels" (toByteString "this is a test") >>= unwrap + assertEqual "count vowels output" "{\"count\": 999}" (fromByteString res) + pluginMultiple = do withContext(\ctx -> do p <- initPlugin (Just ctx) @@ -42,7 +55,7 @@ pluginMultiple = do pluginUpdate = do withContext (\ctx -> do p <- initPlugin (Just ctx) - updateManifest p defaultManifest True >>= unwrap + updateManifest p defaultManifest [] True >>= unwrap checkCallResult p) pluginConfig = do @@ -62,6 +75,7 @@ main = do [ t "Plugin.FunctionExists" pluginFunctionExists , t "Plugin.Call" pluginCall + , t "Plugin.CallHostFunction" pluginCallHostFunction , t "Plugin.Multiple" pluginMultiple , t "Plugin.Update" pluginUpdate , t "Plugin.Config" pluginConfig diff --git a/runtime/extism.h b/runtime/extism.h index e7544e6f7..9df283f02 100644 --- a/runtime/extism.h +++ b/runtime/extism.h @@ -250,7 +250,7 @@ const char *extism_error(ExtismContext *ctx, ExtismPlugin plugin); ExtismSize extism_plugin_output_length(ExtismContext *ctx, ExtismPlugin plugin); /** - * Get the length of a plugin's output data + * Get a pointer to the output data */ const uint8_t *extism_plugin_output_data(ExtismContext *ctx, ExtismPlugin plugin); diff --git a/runtime/src/internal.rs b/runtime/src/internal.rs index 84db6b2c4..a43dfe58d 100644 --- a/runtime/src/internal.rs +++ b/runtime/src/internal.rs @@ -83,6 +83,7 @@ pub trait InternalExt { } fn memory_read(&mut self, offs: u64, len: Size) -> &[u8] { + trace!("memory_read: {}, {}", offs, len); let offs = offs as usize; let len = len as usize; let mem = self.memory(); @@ -95,6 +96,7 @@ pub trait InternalExt { } fn memory_write(&mut self, offs: u64, bytes: impl AsRef<[u8]>) { + trace!("memory_write: {}", offs); let b = bytes.as_ref(); let offs = offs as usize; let len = b.len(); @@ -114,6 +116,7 @@ pub trait InternalExt { if offs == 0 { anyhow::bail!("out of memory") } + trace!("memory_alloc: {}, {}", offs, n); Ok(offs) } @@ -145,7 +148,9 @@ pub trait InternalExt { .unwrap() .call(&mut store, &[Val::I64(offs as i64)], output) .unwrap(); - output[0].unwrap_i64() as u64 + let len = output[0].unwrap_i64() as u64; + trace!("memory_length: {}, {}", offs, len); + len } // A convenience method to set the plugin error and return a value diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index c26db7717..215dfbf6c 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -657,7 +657,7 @@ pub unsafe extern "C" fn extism_plugin_output_length( len } -/// Get the length of a plugin's output data +/// Get a pointer to the output data #[no_mangle] pub unsafe extern "C" fn extism_plugin_output_data( ctx: *mut Context, @@ -682,7 +682,10 @@ pub unsafe extern "C" fn extism_plugin_output_data( .unwrap() .call(&mut store, &[], out) .unwrap(); - ptr.add(out[0].unwrap_i64() as usize) + + let offs = out[0].unwrap_i64() as usize; + trace!("Output offset: {}", offs); + ptr.add(offs) } /// Set log file and level From 3420960d7f4633109cbbb44b62f71b8155212039 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 1 Aug 2023 10:28:53 -0700 Subject: [PATCH 012/176] chore(zig): use LazyPath in build.zig (#406) --- zig/build.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/zig/build.zig b/zig/build.zig index b5160a449..26240b8d9 100644 --- a/zig/build.zig +++ b/zig/build.zig @@ -30,8 +30,8 @@ pub fn build(b: *std.Build) void { tests.addAnonymousModule("extism", .{ .source_file = .{ .path = "src/main.zig" } }); tests.linkLibC(); - tests.addIncludePath("/usr/local/include"); - tests.addLibraryPath("/usr/local/lib"); + tests.addIncludePath(.{ .path = "/usr/local/include" }); + tests.addLibraryPath(.{ .path = "/usr/local/lib" }); tests.linkSystemLibrary("extism"); const tests_run_step = b.addRunArtifact(tests); @@ -47,8 +47,8 @@ pub fn build(b: *std.Build) void { example.addAnonymousModule("extism", .{ .source_file = .{ .path = "src/main.zig" } }); example.linkLibC(); - example.addIncludePath("/usr/local/include"); - example.addLibraryPath("/usr/local/lib"); + example.addIncludePath(.{ .path = "/usr/local/include" }); + example.addLibraryPath(.{ .path = "/usr/local/lib" }); example.linkSystemLibrary("extism"); const example_run_step = b.addRunArtifact(example); From c7c7f9d0248642de1e9bbf256f8a2ae6f9ea18f7 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 1 Aug 2023 11:12:02 -0700 Subject: [PATCH 013/176] chore: update wasmtime bounds to include 11.0 (#405) --- runtime/Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 477811861..fd18b2bd8 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,9 +9,9 @@ repository = "https://github.com/extism/extism" description = "Extism runtime component" [dependencies] -wasmtime = ">= 8.0.0, < 11.0.0" -wasmtime-wasi = ">= 8.0.0, < 11.0.0" -wasmtime-wasi-nn = {version = ">= 8.0.0, < 11.0.0", optional=true} +wasmtime = ">= 8.0.0, < 12.0.0" +wasmtime-wasi = ">= 8.0.0, < 12.0.0" +wasmtime-wasi-nn = {version = ">= 8.0.0, < 12.0.0", optional=true} anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" From 07623ef2daf39682a258de3b81a279a118fa6274 Mon Sep 17 00:00:00 2001 From: zach Date: Fri, 4 Aug 2023 13:44:24 -0700 Subject: [PATCH 014/176] fix: avoid timeout errors outside of `extism_plugin_call` (#407) - Delays instantiation to right before a call by using `instantiate_pre` instead. This fixes an issue with the assemblyscript PDK. - Makes timeouts only apply to calls - Also bumps the wasmtime lower-bounds to 10.0, because the return type of the epoch callback has changed --- runtime/Cargo.toml | 6 ++--- runtime/src/plugin.rs | 51 ++++++++++++++++++++++++--------------- runtime/src/plugin_ref.rs | 17 ++----------- runtime/src/sdk.rs | 13 +++++++--- rust/src/lib.rs | 20 +++++++++++++++ 5 files changed, 66 insertions(+), 41 deletions(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index fd18b2bd8..6deff2fa6 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,9 +9,9 @@ repository = "https://github.com/extism/extism" description = "Extism runtime component" [dependencies] -wasmtime = ">= 8.0.0, < 12.0.0" -wasmtime-wasi = ">= 8.0.0, < 12.0.0" -wasmtime-wasi-nn = {version = ">= 8.0.0, < 12.0.0", optional=true} +wasmtime = ">= 10.0.0, < 12.0.0" +wasmtime-wasi = ">= 10.0.0, < 12.0.0" +wasmtime-wasi-nn = {version = ">= 10.0.0, < 12.0.0", optional=true} anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index b7e04ecf2..44d77b8de 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -12,7 +12,8 @@ pub struct Plugin { pub store: Store, /// Instance provides the ability to call functions in a module - pub instance: Instance, + pub instance: Option, + pub instance_pre: InstancePre, /// Keep track of the number of times we're instantiated, this exists /// to avoid issues with memory piling up since `Instance`s are only @@ -147,7 +148,7 @@ impl Plugin { &engine, Internal::new(manifest, with_wasi, available_pages)?, ); - store.epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); + store.epoch_deadline_callback(|_internal| Ok(wasmtime::UpdateDeadline::Continue(1))); if available_pages.is_some() { store.limiter(|internal| internal.memory_limiter.as_mut().unwrap()); @@ -222,12 +223,13 @@ impl Plugin { } } - let instance = linker.instantiate(&mut store, main)?; + let instance_pre = linker.instantiate_pre(&main)?; let timer_id = uuid::Uuid::new_v4(); let mut plugin = Plugin { modules, linker, - instance, + instance: None, + instance_pre, store, instantiations: 1, runtime: None, @@ -240,24 +242,27 @@ impl Plugin { plugin.internal_mut().store = &mut plugin.store; plugin.internal_mut().linker = &mut plugin.linker; - - // Then detect runtime before returning the new plugin - plugin.detect_runtime(); Ok(plugin) } /// Get a function by name pub fn get_func(&mut self, function: impl AsRef) -> Option { - self.instance.get_func(&mut self.store, function.as_ref()) + if let None = &self.instance { + if let Ok(x) = self.instance_pre.instantiate(&mut self.store) { + self.instance = Some(x); + self.detect_runtime(); + } + } + + if let Some(instance) = &mut self.instance { + instance.get_func(&mut self.store, function.as_ref()) + } else { + None + } } /// Store input in memory and initialize `Internal` pointer - pub(crate) fn set_input( - &mut self, - input: *const u8, - mut len: usize, - tx: std::sync::mpsc::SyncSender, - ) -> Result<(), Error> { + pub(crate) fn set_input(&mut self, input: *const u8, mut len: usize) -> Result<(), Error> { if input.is_null() { len = 0; } @@ -273,7 +278,6 @@ impl Plugin { let bytes = unsafe { std::slice::from_raw_parts(input, len) }; trace!("Input size: {}", bytes.len()); - self.start_timer(&tx)?; if let Some(f) = self.linker.get(&mut self.store, "env", "extism_reset") { f.into_func().unwrap().call(&mut self.store, &[], &mut [])?; } @@ -318,7 +322,7 @@ impl Plugin { )?, ); self.store - .epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); + .epoch_deadline_callback(|_internal| Ok(UpdateDeadline::Continue(1))); if self.internal().available_pages.is_some() { self.store @@ -331,11 +335,16 @@ impl Plugin { } } self.instantiations = 0; + self.instance_pre = self.linker.instantiate_pre(&main)?; + + let store = &mut self.store as *mut _; + let linker = &mut self.linker as *mut _; + let internal = self.internal_mut(); + internal.store = store; + internal.linker = linker; } - let instance = self.linker.instantiate(&mut self.store, main)?; - self.instance = instance; - self.detect_runtime(); + self.instance = None; self.instantiations += 1; Ok(()) } @@ -477,6 +486,8 @@ impl Plugin { .map(std::time::Duration::from_millis); self.cancel_handle.epoch_timer_tx = Some(tx.clone()); self.store_mut().set_epoch_deadline(1); + self.store + .epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); let engine: Engine = self.store().engine().clone(); tx.send(TimerAction::Start { id: self.timer_id, @@ -491,6 +502,8 @@ impl Plugin { if let Some(tx) = &self.cancel_handle.epoch_timer_tx { tx.send(TimerAction::Stop { id: self.timer_id })?; } + self.store + .epoch_deadline_callback(|_internal| Ok(wasmtime::UpdateDeadline::Continue(1))); Ok(()) } } diff --git a/runtime/src/plugin_ref.rs b/runtime/src/plugin_ref.rs index 5e6e67248..164d15168 100644 --- a/runtime/src/plugin_ref.rs +++ b/runtime/src/plugin_ref.rs @@ -41,26 +41,13 @@ impl<'a> PluginRef<'a> { return ctx.error(format!("Plugin does not exist: {plugin_id}"), None); }; - { - let plugin = unsafe { &mut *plugin }; - // Start timer - if let Err(e) = plugin.start_timer(&epoch_timer_tx) { - let id = plugin.timer_id; - plugin.error( - format!("Unable to start timeout manager for {id}: {e:?}"), - (), - ); - return None; - } - } + let plugin = unsafe { &mut *plugin }; if clear_error { trace!("Clearing context error"); ctx.error = None; trace!("Clearing plugin error: {plugin_id}"); - unsafe { - (*plugin).clear_error(); - } + plugin.clear_error(); } Some(PluginRef { diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index 215dfbf6c..124fca5dc 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -526,6 +526,10 @@ pub unsafe extern "C" fn extism_plugin_call( ); } + if let Err(e) = plugin.set_input(data, data_len as usize) { + return plugin.error(e, -1); + } + // Initialize runtime if !is_start { if let Err(e) = plugin.initialize_runtime() { @@ -533,14 +537,15 @@ pub unsafe extern "C" fn extism_plugin_call( } } - if let Err(e) = plugin.set_input(data, data_len as usize, tx) { - return plugin.error(e, -1); - } - if plugin.has_error() { return -1; } + // Start timer, this will be stopped when PluginRef goes out of scope + if let Err(e) = plugin.start_timer(&tx) { + return plugin.error(e, -1); + } + debug!("Calling function: {name} in plugin {plugin_id}"); // Call the function diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 0961938fe..8777d63da 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -283,4 +283,24 @@ mod tests { println!("Cancelled plugin ran for {:?}", time); // std::io::stdout().write_all(output).unwrap(); } + + #[test] + fn test_multiple_instantiations() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let context = Context::new(); + let mut plugin = Plugin::new(&context, WASM, [f], true).unwrap(); + + // This is 10,001 because the wasmtime store limit is 10,000 - we want to test + // that our reinstantiation process is working and that limit is never hit. + for _ in 0..10001 { + let _output = plugin.call("count_vowels", "abc123").unwrap(); + } + } } From d80584600bde51f0673bf3752f94ef355cbc0fa0 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 8 Aug 2023 14:12:09 -0700 Subject: [PATCH 015/176] refactor: Simplify runtime handling (#411) It seems like our runtime initialization process is a little too aggressive, this PR scales it back to initialize the runtime once if it exists and only reinitializes when `_start` is called. This prevents globals from being wiped out between plugin calls. - Removes Runtime::cleanup - Only initializes runtime once, or if `_start` is called - Improves Haskell reactor support See https://github.com/extism/go-sdk/pull/11 for the go-sdk PR. --- haskell/extism.cabal | 6 +- haskell/manifest/extism-manifest.cabal | 6 +- runtime/src/plugin.rs | 249 +++++++++++-------------- runtime/src/plugin_ref.rs | 21 ++- runtime/src/sdk.rs | 32 +--- rust/src/bindings.rs | 236 ++++++++++++++++++++++- rust/src/lib.rs | 12 ++ wasm/globals.wasm | Bin 0 -> 18011 bytes 8 files changed, 381 insertions(+), 181 deletions(-) create mode 100755 wasm/globals.wasm diff --git a/haskell/extism.cabal b/haskell/extism.cabal index 1a5d4c3c2..518c73a87 100644 --- a/haskell/extism.cabal +++ b/haskell/extism.cabal @@ -19,9 +19,9 @@ library extra-libraries: extism extra-lib-dirs: /usr/local/lib build-depends: - base >= 4.16.1 && < 4.19.0, - bytestring >= 0.11.3 && < 0.12, - json >= 0.10 && < 0.11, + base >= 4.16.1 && < 5, + bytestring >= 0.11.3 && <= 0.12, + json >= 0.10 && <= 0.11, extism-manifest >= 0.0.0 && < 0.3.0 test-suite extism-example diff --git a/haskell/manifest/extism-manifest.cabal b/haskell/manifest/extism-manifest.cabal index 398d9bd53..941910b25 100644 --- a/haskell/manifest/extism-manifest.cabal +++ b/haskell/manifest/extism-manifest.cabal @@ -15,7 +15,7 @@ library hs-source-dirs: . default-language: Haskell2010 build-depends: - base >= 4.16.1 && < 4.19.0, - bytestring >= 0.11.3 && < 0.12, - json >= 0.10 && < 0.11, + base >= 4.16.1 && < 5, + bytestring >= 0.11.3 && <= 0.12, + json >= 0.10 && <= 0.11, base64-bytestring >= 1.2.1 && < 1.3, diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 44d77b8de..01635919a 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -18,7 +18,7 @@ pub struct Plugin { /// Keep track of the number of times we're instantiated, this exists /// to avoid issues with memory piling up since `Instance`s are only /// actually cleaned up along with a `Store` - pub instantiations: usize, + instantiations: usize, /// The ID used to identify this plugin with the `Timer` pub timer_id: uuid::Uuid, @@ -26,7 +26,7 @@ pub struct Plugin { /// A handle used to cancel execution of a plugin pub(crate) cancel_handle: sdk::ExtismCancelHandle, - /// Runtime determines any initialization and cleanup functions needed + /// Runtime determines any initialization functions needed /// to run a module pub(crate) runtime: Option, } @@ -231,13 +231,13 @@ impl Plugin { instance: None, instance_pre, store, - instantiations: 1, runtime: None, timer_id, cancel_handle: sdk::ExtismCancelHandle { id: timer_id, epoch_timer_tx: None, }, + instantiations: 0, }; plugin.internal_mut().store = &mut plugin.store; @@ -245,12 +245,71 @@ impl Plugin { Ok(plugin) } + pub(crate) fn reset_store(&mut self) -> Result<(), Error> { + self.instance = None; + if self.instantiations > 5 { + let (main_name, main) = self + .modules + .get("main") + .map(|x| ("main", x)) + .unwrap_or_else(|| { + let entry = self.modules.iter().last().unwrap(); + (entry.0.as_str(), entry.1) + }); + + let engine = self.store.engine().clone(); + let internal = self.internal(); + self.store = Store::new( + &engine, + Internal::new( + internal.manifest.clone(), + internal.wasi.is_some(), + internal.available_pages, + )?, + ); + self.store + .epoch_deadline_callback(|_internal| Ok(UpdateDeadline::Continue(1))); + + if self.internal().available_pages.is_some() { + self.store + .limiter(|internal| internal.memory_limiter.as_mut().unwrap()); + } + + for (name, module) in self.modules.iter() { + if name != main_name { + self.linker.module(&mut self.store, name, module)?; + } + } + self.instantiations = 0; + self.instance_pre = self.linker.instantiate_pre(&main)?; + + let store = &mut self.store as *mut _; + let linker = &mut self.linker as *mut _; + let internal = self.internal_mut(); + internal.store = store; + internal.linker = linker; + } + + Ok(()) + } + + pub(crate) fn instantiate(&mut self) -> Result<(), Error> { + self.instance = Some(self.instance_pre.instantiate(&mut self.store)?); + self.instantiations += 1; + if let Some(limiter) = &mut self.internal_mut().memory_limiter { + limiter.reset(); + } + self.detect_runtime(); + self.initialize_runtime()?; + Ok(()) + } + /// Get a function by name pub fn get_func(&mut self, function: impl AsRef) -> Option { if let None = &self.instance { - if let Ok(x) = self.instance_pre.instantiate(&mut self.store) { - self.instance = Some(x); - self.detect_runtime(); + if let Err(e) = self.instantiate() { + error!("Unable to instantiate: {e}"); + return None; } } @@ -280,6 +339,8 @@ impl Plugin { if let Some(f) = self.linker.get(&mut self.store, "env", "extism_reset") { f.into_func().unwrap().call(&mut self.store, &[], &mut [])?; + } else { + error!("Call to extism_reset failed"); } let offs = self.memory_alloc_bytes(bytes)?; @@ -295,60 +356,6 @@ impl Plugin { Ok(()) } - /// Create a new instance from the same modules - pub fn reinstantiate(&mut self) -> Result<(), Error> { - if let Some(limiter) = self.internal_mut().memory_limiter.as_mut() { - limiter.reset(); - } - - let (main_name, main) = self - .modules - .get("main") - .map(|x| ("main", x)) - .unwrap_or_else(|| { - let entry = self.modules.iter().last().unwrap(); - (entry.0.as_str(), entry.1) - }); - - if self.instantiations > 5 { - let engine = self.store.engine().clone(); - let internal = self.internal(); - self.store = Store::new( - &engine, - Internal::new( - internal.manifest.clone(), - internal.wasi.is_some(), - internal.available_pages, - )?, - ); - self.store - .epoch_deadline_callback(|_internal| Ok(UpdateDeadline::Continue(1))); - - if self.internal().available_pages.is_some() { - self.store - .limiter(|internal| internal.memory_limiter.as_mut().unwrap()); - } - - for (name, module) in self.modules.iter() { - if name != main_name { - self.linker.module(&mut self.store, name, module)?; - } - } - self.instantiations = 0; - self.instance_pre = self.linker.instantiate_pre(&main)?; - - let store = &mut self.store as *mut _; - let linker = &mut self.linker as *mut _; - let internal = self.internal_mut(); - internal.store = store; - internal.linker = linker; - } - - self.instance = None; - self.instantiations += 1; - Ok(()) - } - /// Determine if wasi is enabled pub fn has_wasi(&self) -> bool { self.internal().wasi.is_some() @@ -356,66 +363,55 @@ impl Plugin { fn detect_runtime(&mut self) { // Check for Haskell runtime initialization functions - // Initialize Haskell runtime if `hs_init` and `hs_exit` are present, + // Initialize Haskell runtime if `hs_init` is present, // by calling the `hs_init` export if let Some(init) = self.get_func("hs_init") { - if let Some(cleanup) = self.get_func("hs_exit") { - if init.typed::<(i32, i32), ()>(&self.store()).is_err() { - trace!( - "hs_init function found with type {:?}", - init.ty(self.store()) - ); - } - self.runtime = Some(Runtime::Haskell { init, cleanup }); - } - return; - } - - // Check for `__wasm_call_ctors` and `__wasm_call_dtors`, this is used by WASI to - // initialize certain interfaces. - if self.has_wasi() { - let init = if let Some(init) = self.get_func("__wasm_call_ctors") { - if init.typed::<(), ()>(&self.store()).is_err() { - trace!( - "__wasm_call_ctors function found with type {:?}", - init.ty(self.store()) - ); - return; - } - trace!("WASI runtime detected"); - init - } else if let Some(init) = self.get_func("_initialize") { + let reactor_init = if let Some(init) = self.get_func("_initialize") { if init.typed::<(), ()>(&self.store()).is_err() { trace!( "_initialize function found with type {:?}", init.ty(self.store()) ); - return; - } - trace!("WASI reactor module detected"); - init - } else { - return; - }; - - let cleanup = if let Some(cleanup) = self.get_func("__wasm_call_dtors") { - if cleanup.typed::<(), ()>(&self.store()).is_err() { - trace!( - "__wasm_call_dtors function found with type {:?}", - cleanup.ty(self.store()) - ); None } else { - Some(cleanup) + trace!("WASI reactor module detected"); + Some(init) } } else { None }; - - self.runtime = Some(Runtime::Wasi { init, cleanup }); + self.runtime = Some(Runtime::Haskell { init, reactor_init }); return; } + // Check for `__wasm_call_ctors` or `_initialize`, this is used by WASI to + // initialize certain interfaces. + let init = if let Some(init) = self.get_func("__wasm_call_ctors") { + if init.typed::<(), ()>(&self.store()).is_err() { + trace!( + "__wasm_call_ctors function found with type {:?}", + init.ty(self.store()) + ); + return; + } + trace!("WASI runtime detected"); + init + } else if let Some(init) = self.get_func("_initialize") { + if init.typed::<(), ()>(&self.store()).is_err() { + trace!( + "_initialize function found with type {:?}", + init.ty(self.store()) + ); + return; + } + trace!("Reactor module detected"); + init + } else { + return; + }; + + self.runtime = Some(Runtime::Wasi { init }); + trace!("No runtime detected"); } @@ -424,7 +420,10 @@ impl Plugin { if let Some(runtime) = &self.runtime { trace!("Plugin::initialize_runtime"); match runtime { - Runtime::Haskell { init, cleanup: _ } => { + Runtime::Haskell { init, reactor_init } => { + if let Some(reactor_init) = reactor_init { + reactor_init.call(&mut store, &[], &mut [])?; + } let mut results = vec![Val::null(); init.ty(&store).results().len()]; init.call( &mut store, @@ -433,7 +432,7 @@ impl Plugin { )?; debug!("Initialized Haskell language runtime"); } - Runtime::Wasi { init, cleanup: _ } => { + Runtime::Wasi { init } => { init.call(&mut store, &[], &mut [])?; debug!("Initialied WASI runtime"); } @@ -443,35 +442,6 @@ impl Plugin { Ok(()) } - #[inline(always)] - pub(crate) fn cleanup_runtime(&mut self) -> Result<(), Error> { - if let Some(runtime) = self.runtime.clone() { - trace!("Plugin::cleanup_runtime"); - match runtime { - Runtime::Wasi { - init: _, - cleanup: Some(cleanup), - } => { - debug!("Calling __wasm_call_dtors"); - cleanup.call(self.store_mut(), &[], &mut [])?; - } - Runtime::Wasi { - init: _, - cleanup: None, - } => (), - // Cleanup Haskell runtime if `hs_exit` and `hs_exit` are present, - // by calling the `hs_exit` export - Runtime::Haskell { init: _, cleanup } => { - let mut results = vec![Val::null(); cleanup.ty(self.store()).results().len()]; - cleanup.call(self.store_mut(), &[], results.as_mut_slice())?; - debug!("Cleaned up Haskell language runtime"); - } - } - } - - Ok(()) - } - /// Start the timer for a Plugin - this is used for both timeouts /// and cancellation pub(crate) fn start_timer( @@ -511,6 +481,11 @@ impl Plugin { // Enumerates the supported PDK language runtimes #[derive(Clone)] pub(crate) enum Runtime { - Haskell { init: Func, cleanup: Func }, - Wasi { init: Func, cleanup: Option }, + Haskell { + init: Func, + reactor_init: Option, + }, + Wasi { + init: Func, + }, } diff --git a/runtime/src/plugin_ref.rs b/runtime/src/plugin_ref.rs index 164d15168..de5c114fc 100644 --- a/runtime/src/plugin_ref.rs +++ b/runtime/src/plugin_ref.rs @@ -11,17 +11,24 @@ pub struct PluginRef<'a> { impl<'a> PluginRef<'a> { /// Initialize the plugin for a new call - pub fn start_call(mut self) -> Self { + pub(crate) fn start_call(mut self, is_start: bool) -> Self { trace!("PluginRef::start_call: {}", self.id,); - let plugin = self.as_mut(); - if plugin.has_wasi() || plugin.runtime.is_some() { - if let Err(e) = plugin.reinstantiate() { - error!("Failed to reinstantiate: {e:?}"); - plugin.error(format!("Failed to reinstantiate: {e:?}"), ()); - return self; + let plugin = unsafe { &mut *self.plugin }; + if is_start { + if let Err(e) = plugin.reset_store() { + error!("Call to Plugin::reset_store failed: {e:?}"); } } + + if plugin.instance.is_none() { + trace!("Plugin::instance is none, instantiating"); + if let Err(e) = plugin.instantiate() { + error!("Plugin::instantiate failed: {e:?}"); + plugin.error(e, ()); + } + } + self.running = true; self } diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index 124fca5dc..f686a8734 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -495,23 +495,23 @@ pub unsafe extern "C" fn extism_plugin_call( ) -> i32 { let ctx = &mut *ctx; + // Get function name + let name = std::ffi::CStr::from_ptr(func_name); + let name = match name.to_str() { + Ok(name) => name, + Err(e) => return ctx.error(e, -1), + }; + let is_start = name == "_start"; + // Get a `PluginRef` and call `init` to set up the plugin input and memory, this is only // needed before a new call let mut plugin_ref = match PluginRef::new(ctx, plugin_id, true) { None => return -1, - Some(p) => p.start_call(), + Some(p) => p.start_call(is_start), }; let tx = plugin_ref.epoch_timer_tx.clone(); let plugin = plugin_ref.as_mut(); - // Find function - let name = std::ffi::CStr::from_ptr(func_name); - let name = match name.to_str() { - Ok(name) => name, - Err(e) => return plugin.error(e, -1), - }; - let is_start = name == "_start"; - let func = match plugin.get_func(name) { Some(x) => x, None => return plugin.error(format!("Function not found: {name}"), -1), @@ -530,13 +530,6 @@ pub unsafe extern "C" fn extism_plugin_call( return plugin.error(e, -1); } - // Initialize runtime - if !is_start { - if let Err(e) = plugin.initialize_runtime() { - return plugin.error(format!("Failed to initialize runtime: {e:?}"), -1); - } - } - if plugin.has_error() { return -1; } @@ -552,13 +545,6 @@ pub unsafe extern "C" fn extism_plugin_call( let mut results = vec![wasmtime::Val::null(); n_results]; let res = func.call(plugin.store_mut(), &[], results.as_mut_slice()); - // Cleanup runtime - if !is_start { - if let Err(e) = plugin.cleanup_runtime() { - return plugin.error(format!("Failed to cleanup runtime: {e:?}"), -1); - } - } - match res { Ok(()) => (), Err(e) => { diff --git a/rust/src/bindings.rs b/rust/src/bindings.rs index 71d8f589c..c1e136d24 100644 --- a/rust/src/bindings.rs +++ b/rust/src/bindings.rs @@ -1,45 +1,260 @@ -/* automatically generated by rust-bindgen 0.60.1 */ +/* automatically generated by rust-bindgen 0.65.1 */ -pub type __uint8_t = ::std::os::raw::c_uchar; -pub type __int32_t = ::std::os::raw::c_int; -pub type __uint64_t = ::std::os::raw::c_ulong; +#[doc = " Signed 32 bit integer."] +pub const ExtismValType_I32: ExtismValType = 0; +#[doc = " Signed 64 bit integer."] +pub const ExtismValType_I64: ExtismValType = 1; +#[doc = " Floating point 32 bit integer."] +pub const ExtismValType_F32: ExtismValType = 2; +#[doc = " Floating point 64 bit integer."] +pub const ExtismValType_F64: ExtismValType = 3; +#[doc = " A 128 bit number."] +pub const ExtismValType_V128: ExtismValType = 4; +#[doc = " A reference to a Wasm function."] +pub const ExtismValType_FuncRef: ExtismValType = 5; +#[doc = " A reference to opaque data in the Wasm instance."] +pub const ExtismValType_ExternRef: ExtismValType = 6; +#[doc = " A list of all possible value types in WebAssembly."] +pub type ExtismValType = ::std::os::raw::c_uint; #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct ExtismContext { _unused: [u8; 0], } -pub type ExtismPlugin = i32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ExtismCancelHandle { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ExtismFunction { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ExtismCurrentPlugin { + _unused: [u8; 0], +} pub type ExtismSize = u64; +#[doc = " A union type for host function argument/return values"] +#[repr(C)] +#[derive(Copy, Clone)] +pub union ExtismValUnion { + pub i32_: i32, + pub i64_: i64, + pub f32_: f32, + pub f64_: f64, +} +#[test] +fn bindgen_test_layout_ExtismValUnion() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(ExtismValUnion)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ExtismValUnion)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).i32_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ExtismValUnion), + "::", + stringify!(i32_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).i64_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ExtismValUnion), + "::", + stringify!(i64_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).f32_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ExtismValUnion), + "::", + stringify!(f32_) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).f64_) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ExtismValUnion), + "::", + stringify!(f64_) + ) + ); +} +#[doc = " `ExtismVal` holds the type and value of a function argument/return"] +#[repr(C)] +#[derive(Copy, Clone)] +pub struct ExtismVal { + pub t: ExtismValType, + pub v: ExtismValUnion, +} +#[test] +fn bindgen_test_layout_ExtismVal() { + const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); + let ptr = UNINIT.as_ptr(); + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ExtismVal)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ExtismVal)) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).t) as usize - ptr as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ExtismVal), + "::", + stringify!(t) + ) + ); + assert_eq!( + unsafe { ::std::ptr::addr_of!((*ptr).v) as usize - ptr as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ExtismVal), + "::", + stringify!(v) + ) + ); +} +#[doc = " Host function signature"] +pub type ExtismFunctionType = ::std::option::Option< + unsafe extern "C" fn( + plugin: *mut ExtismCurrentPlugin, + inputs: *const ExtismVal, + n_inputs: ExtismSize, + outputs: *mut ExtismVal, + n_outputs: ExtismSize, + data: *mut ::std::os::raw::c_void, + ), +>; +pub type ExtismPlugin = i32; extern "C" { + #[doc = " Create a new context"] pub fn extism_context_new() -> *mut ExtismContext; } extern "C" { + #[doc = " Free a context"] pub fn extism_context_free(ctx: *mut ExtismContext); } extern "C" { + #[doc = " Returns a pointer to the memory of the currently running plugin\n NOTE: this should only be called from host functions."] + pub fn extism_current_plugin_memory(plugin: *mut ExtismCurrentPlugin) -> *mut u8; +} +extern "C" { + #[doc = " Allocate a memory block in the currently running plugin\n NOTE: this should only be called from host functions."] + pub fn extism_current_plugin_memory_alloc( + plugin: *mut ExtismCurrentPlugin, + n: ExtismSize, + ) -> u64; +} +extern "C" { + #[doc = " Get the length of an allocated block\n NOTE: this should only be called from host functions."] + pub fn extism_current_plugin_memory_length( + plugin: *mut ExtismCurrentPlugin, + n: ExtismSize, + ) -> ExtismSize; +} +extern "C" { + #[doc = " Free an allocated memory block\n NOTE: this should only be called from host functions."] + pub fn extism_current_plugin_memory_free(plugin: *mut ExtismCurrentPlugin, ptr: u64); +} +extern "C" { + #[doc = " Create a new host function\n\n Arguments\n - `name`: function name, this should be valid UTF-8\n - `inputs`: argument types\n - `n_inputs`: number of argument types\n - `outputs`: return types\n - `n_outputs`: number of return types\n - `func`: the function to call\n - `user_data`: a pointer that will be passed to the function when it's called\n this value should live as long as the function exists\n - `free_user_data`: a callback to release the `user_data` value when the resulting\n `ExtismFunction` is freed.\n\n Returns a new `ExtismFunction` or `null` if the `name` argument is invalid."] + pub fn extism_function_new( + name: *const ::std::os::raw::c_char, + inputs: *const ExtismValType, + n_inputs: ExtismSize, + outputs: *const ExtismValType, + n_outputs: ExtismSize, + func: ExtismFunctionType, + user_data: *mut ::std::os::raw::c_void, + free_user_data: ::std::option::Option< + unsafe extern "C" fn(__: *mut ::std::os::raw::c_void), + >, + ) -> *mut ExtismFunction; +} +extern "C" { + #[doc = " Set the namespace of an `ExtismFunction`"] + pub fn extism_function_set_namespace( + ptr: *mut ExtismFunction, + namespace_: *const ::std::os::raw::c_char, + ); +} +extern "C" { + #[doc = " Free an `ExtismFunction`"] + pub fn extism_function_free(ptr: *mut ExtismFunction); +} +extern "C" { + #[doc = " Create a new plugin with additional host functions\n\n `wasm`: is a WASM module (wat or wasm) or a JSON encoded manifest\n `wasm_size`: the length of the `wasm` parameter\n `functions`: an array of `ExtismFunction*`\n `n_functions`: the number of functions provided\n `with_wasi`: enables/disables WASI"] pub fn extism_plugin_new( ctx: *mut ExtismContext, wasm: *const u8, wasm_size: ExtismSize, + functions: *mut *const ExtismFunction, + n_functions: ExtismSize, with_wasi: bool, ) -> ExtismPlugin; } extern "C" { + #[doc = " Update a plugin, keeping the existing ID\n\n Similar to `extism_plugin_new` but takes an `index` argument to specify\n which plugin to update\n\n Memory for this plugin will be reset upon update"] pub fn extism_plugin_update( ctx: *mut ExtismContext, index: ExtismPlugin, wasm: *const u8, wasm_size: ExtismSize, + functions: *mut *const ExtismFunction, + nfunctions: ExtismSize, with_wasi: bool, ) -> bool; } extern "C" { + #[doc = " Remove a plugin from the registry and free associated memory"] pub fn extism_plugin_free(ctx: *mut ExtismContext, plugin: ExtismPlugin); } extern "C" { + #[doc = " Get plugin ID for cancellation"] + pub fn extism_plugin_cancel_handle( + ctx: *mut ExtismContext, + plugin: ExtismPlugin, + ) -> *const ExtismCancelHandle; +} +extern "C" { + #[doc = " Cancel a running plugin"] + pub fn extism_plugin_cancel(handle: *const ExtismCancelHandle) -> bool; +} +extern "C" { + #[doc = " Remove all plugins from the registry"] pub fn extism_context_reset(ctx: *mut ExtismContext); } extern "C" { + #[doc = " Update plugin config values, this will merge with the existing values"] pub fn extism_plugin_config( ctx: *mut ExtismContext, plugin: ExtismPlugin, @@ -48,6 +263,7 @@ extern "C" { ) -> bool; } extern "C" { + #[doc = " Returns true if `func_name` exists"] pub fn extism_plugin_function_exists( ctx: *mut ExtismContext, plugin: ExtismPlugin, @@ -55,6 +271,7 @@ extern "C" { ) -> bool; } extern "C" { + #[doc = " Call a function\n\n `func_name`: is the function to call\n `data`: is the input data\n `data_len`: is the length of `data`"] pub fn extism_plugin_call( ctx: *mut ExtismContext, plugin_id: ExtismPlugin, @@ -64,26 +281,29 @@ extern "C" { ) -> i32; } extern "C" { + #[doc = " Get the error associated with a `Context` or `Plugin`, if `plugin` is `-1` then the context\n error will be returned"] pub fn extism_error( ctx: *mut ExtismContext, plugin: ExtismPlugin, ) -> *const ::std::os::raw::c_char; } extern "C" { + #[doc = " Get the length of a plugin's output data"] pub fn extism_plugin_output_length(ctx: *mut ExtismContext, plugin: ExtismPlugin) -> ExtismSize; } extern "C" { + #[doc = " Get a pointer to the output data"] pub fn extism_plugin_output_data(ctx: *mut ExtismContext, plugin: ExtismPlugin) -> *const u8; } extern "C" { + #[doc = " Set log file and level"] pub fn extism_log_file( filename: *const ::std::os::raw::c_char, log_level: *const ::std::os::raw::c_char, ) -> bool; } - extern "C" { - pub fn extism_version( - ) -> *const ::std::os::raw::c_char; + #[doc = " Get the Extism version string"] + pub fn extism_version() -> *const ::std::os::raw::c_char; } diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 8777d63da..ea9b3ddab 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -44,6 +44,7 @@ mod tests { const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); + const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); fn hello_world( _plugin: &mut CurrentPlugin, @@ -303,4 +304,15 @@ mod tests { let _output = plugin.call("count_vowels", "abc123").unwrap(); } } + + #[test] + fn test_globals() { + let context = Context::new(); + let mut plugin = Plugin::new(&context, WASM_GLOBALS, [], true).unwrap(); + for i in 0..1000 { + let output = plugin.call("globals", "").unwrap(); + let count: serde_json::Value = serde_json::from_slice(&output).unwrap(); + assert_eq!(count.get("count").unwrap().as_i64().unwrap(), i); + } + } } diff --git a/wasm/globals.wasm b/wasm/globals.wasm new file mode 100755 index 0000000000000000000000000000000000000000..8474a40d07ff6847dae60a5d20dc2f160a3410d9 GIT binary patch literal 18011 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 Wq4r?7*l#vw>~8X4K=I6gsQ(Y+rBY}B literal 0 HcmV?d00001 From 0e1a8677c5ce2704a5cd237f2abcf8aa4a9d6685 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 21:54:12 -0500 Subject: [PATCH 016/176] chore(deps-dev): Bump ex_doc from 0.30.3 to 0.30.4 in /elixir (#410) Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.3 to 0.30.4.
Changelog

Sourced from ex_doc's changelog.

v0.30.4 (2023-08-03)

  • Bug fixes
    • Fix style for anchors in headers
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.3&new-version=0.30.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- elixir/mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elixir/mix.lock b/elixir/mix.lock index 35033e6c6..a897f02af 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -1,6 +1,6 @@ %{ "earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"}, - "ex_doc": {:hex, :ex_doc, "0.30.3", "bfca4d340e3b95f2eb26e72e4890da83e2b3a5c5b0e52607333bf5017284b063", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "fbc8702046c1d25edf79de376297e608ac78cdc3a29f075484773ad1718918b6"}, + "ex_doc": {:hex, :ex_doc, "0.30.4", "e8395c8e3c007321abb30a334f9f7c0858d80949af298302daf77553468c0c39", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "9a19f0c50ffaa02435668f5242f2b2a61d46b541ebf326884505dfd3dd7af5e4"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, From cfc9fb06a4399a9c5badce8f669e7a3c4ee5346f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 21:54:22 -0500 Subject: [PATCH 017/176] chore(deps-dev): Bump prettier from 3.0.0 to 3.0.1 in /node (#409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [prettier](https://github.com/prettier/prettier) from 3.0.0 to 3.0.1.
Release notes

Sourced from prettier's releases.

3.0.1

🔗 Changelog

Changelog

Sourced from prettier's changelog.

3.0.1

diff

Fix cursor positioning for a special case (#14812 by @​fisker)

// <|> is the cursor position

/* Input */ // All messages are represented in JSON. // So, the prettier.py controls a subprocess which spawns "node {this_file}". import {<|> } from "fs"

/* Prettier 3.0.0 */ // All messages are represented in JSON. // So, the prettier.py <|>controls a subprocess which spawns "node {this_file}". import {} from "fs"

/* Prettier 3.0.1 */ // All messages are represented in JSON. // So, the prettier.py controls a subprocess which spawns "node {this_file}". import {<|>} from "fs"

Fix plugins/estree.d.ts to make it a module (#15018 by @​kingyue737)

Add export {} in plugins/estree.d.ts to fix the "File is not a module" error

Add parenthesis around leading multiline comment in return statement (#15037 by @​auvred)

// Input
function fn() {
  return (
    /**
     * @type {...}
     */ expresssion
  )
}

// Prettier 3.0.0 function fn() { return /**

</tr></table>

... (truncated)

Commits
  • afee0db Release 3.0.1
  • c3d53dc Fix runYarn function in release script (#15200)
  • 825425c chore(deps): update dependency eslint-plugin-import to v2.28.0 (#15184)
  • 448217d chore(deps): update dependency eslint to v8.46.0 (#15182)
  • f35e9e6 chore(deps): update dependency @​angular/compiler to v16.1.7 (#15173)
  • d14e893 chore(deps): update dependency c8 to v8.0.1 (#15174)
  • c44d4b7 chore(deps): update dependency eslint-plugin-react to v7.33.1 (#15176)
  • 57e8c87 chore(deps): update dependency esbuild to v0.18.17 (#15175)
  • 36c3738 chore(deps): update dependency eslint-plugin-unicorn to v48.0.1 (#15177)
  • 2d274df chore(deps): update dependency flow-parser to v0.213.1 (#15178)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.0.0&new-version=3.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 8 ++++---- node/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 5d6db9ced..1b9bca746 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -21,7 +21,7 @@ "@types/jest": "^29.2.0", "@types/node": "^20.1.0", "jest": "^29.2.2", - "prettier": "3.0.0", + "prettier": "3.0.1", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.24.1", @@ -3247,9 +3247,9 @@ } }, "node_modules/prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.1.tgz", + "integrity": "sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" diff --git a/node/package.json b/node/package.json index c0389478d..a5d4e209a 100644 --- a/node/package.json +++ b/node/package.json @@ -41,7 +41,7 @@ "@types/jest": "^29.2.0", "@types/node": "^20.1.0", "jest": "^29.2.2", - "prettier": "3.0.0", + "prettier": "3.0.1", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.24.1", From 8dd4992633a8b5579d52827b0fdc69cf79a9fd6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 21:54:36 -0500 Subject: [PATCH 018/176] chore(deps-dev): Bump @types/node from 20.4.5 to 20.4.8 in /node (#408) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.5 to 20.4.8.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.5&new-version=20.4.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 1b9bca746..60ac0c7b5 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1128,9 +1128,9 @@ } }, "node_modules/@types/node": { - "version": "20.4.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.5.tgz", - "integrity": "sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==" + "version": "20.4.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", + "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From fa909fd53dfb37e57e2c875d46ba533cc8b2a5d4 Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 10 Aug 2023 18:31:02 -0700 Subject: [PATCH 019/176] fix(rust): ensure InternalExt is exported (#413) Also adds a test that uses `InternalExt` in the host function --- rust/src/lib.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/rust/src/lib.rs b/rust/src/lib.rs index ea9b3ddab..fa1828832 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -1,6 +1,6 @@ pub use extism_manifest::{self as manifest, Manifest}; pub use extism_runtime::{ - sdk as bindings, Function, Internal as CurrentPlugin, UserData, Val, ValType, + sdk as bindings, Function, Internal as CurrentPlugin, InternalExt, UserData, Val, ValType, }; mod context; @@ -47,12 +47,16 @@ mod tests { const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); fn hello_world( - _plugin: &mut CurrentPlugin, + plugin: &mut CurrentPlugin, inputs: &[Val], outputs: &mut [Val], _user_data: UserData, ) -> Result<(), Error> { - outputs[0] = inputs[0].clone(); + let input_offs = inputs[0].unwrap_i64() as u64; + let input = plugin.memory_read_str(input_offs).unwrap().to_string(); + + let output = plugin.memory_alloc_bytes(&input).unwrap(); + outputs[0] = Val::I64(output as i64); Ok(()) } From 889ec39e4d22383060e099edc1ee06ed6f3437d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Do=C4=9Fu=20Us?= <73913444+usdogu@users.noreply.github.com> Date: Sat, 12 Aug 2023 06:10:30 +0300 Subject: [PATCH 020/176] refactor(zig)!: Simplify JSON stringifying (#414) Uses `std.json.ArrayHashMap` for stringifying. # Breaking Changes * Plugin.setConfig's `config` parameter's type changed to `std.json.ArrayHashMap([]const u8)` * WasmUrl's `header` field's type changed to `std.json.ArrayHashMap([]const u8)` * Manifest's `config` and `allowed_path` fields' types changed to `std.json.ArrayHashMap([]const u8)` --- zig/build.zig | 2 +- zig/examples/basic.zig | 6 +- zig/src/manifest.zig | 19 ++++- zig/src/plugin.zig | 11 ++- zig/src/utils.zig | 162 ----------------------------------------- 5 files changed, 24 insertions(+), 176 deletions(-) delete mode 100644 zig/src/utils.zig diff --git a/zig/build.zig b/zig/build.zig index 26240b8d9..2cd4e20d8 100644 --- a/zig/build.zig +++ b/zig/build.zig @@ -4,7 +4,7 @@ const builtin = @import("builtin"); pub fn build(b: *std.Build) void { comptime { const current_zig = builtin.zig_version; - const min_zig = std.SemanticVersion.parse("0.11.0-dev.3834+d98147414") catch unreachable; // std.builtin.Version -> std.SemanticVersion + const min_zig = std.SemanticVersion.parse("0.12.0-dev.64+b835fd90c") catch unreachable; // std.json.ArrayHashMap if (current_zig.order(min_zig) == .lt) { @compileError(std.fmt.comptimePrint("Your Zig version v{} does not meet the minimum build requirement of v{}", .{ current_zig, min_zig })); } diff --git a/zig/examples/basic.zig b/zig/examples/basic.zig index 67a77733c..1cd1f6291 100644 --- a/zig/examples/basic.zig +++ b/zig/examples/basic.zig @@ -40,9 +40,9 @@ pub fn main() !void { // var my_plugin = try Plugin.init(allocator, &context, wasm, &[_]Function{f}, true); defer my_plugin.deinit(); - var config = std.StringHashMap([]const u8).init(allocator); - defer config.deinit(); - try config.put("thing", "this is a really important thing"); + var config = std.json.ArrayHashMap([]const u8){}; + defer config.deinit(allocator); + try config.map.put(allocator, "thing", "this is a really important thing"); try my_plugin.setConfig(allocator, config); const input = "aeiouAEIOU____________________________________&smtms_y?" ** 1182; diff --git a/zig/src/manifest.zig b/zig/src/manifest.zig index 44fed7278..a59324800 100644 --- a/zig/src/manifest.zig +++ b/zig/src/manifest.zig @@ -13,16 +13,27 @@ pub const WasmUrl = struct { hash: ?[]const u8 = null, name: ?[]const u8 = null, method: ?[]const u8 = null, - headers: ?std.StringHashMap([]const u8) = null, + headers: ?std.json.ArrayHashMap([]const u8) = null, }; -pub const Wasm = union(enum) { wasm_data: WasmData, wasm_file: WasmFile, wasm_url: WasmUrl }; +pub const Wasm = union(enum) { + wasm_data: WasmData, + wasm_file: WasmFile, + wasm_url: WasmUrl, + pub fn jsonStringify(self: @This(), jws: anytype) !void { + switch (self) { + inline else => |value| { + try jws.write(value); + }, + } + } +}; pub const Manifest = struct { wasm: []const Wasm, memory: ?struct { max_pages: ?u32 } = null, - config: ?std.StringHashMap([]const u8) = null, + config: ?std.json.ArrayHashMap([]const u8) = null, allowed_hosts: ?[]const []const u8 = null, - allowed_paths: ?std.StringHashMap([]const u8) = null, + allowed_paths: ?std.json.ArrayHashMap([]const u8) = null, timeout: ?usize = null, }; diff --git a/zig/src/plugin.zig b/zig/src/plugin.zig index 636b54a04..58333c1da 100644 --- a/zig/src/plugin.zig +++ b/zig/src/plugin.zig @@ -4,7 +4,6 @@ const Manifest = @import("manifest.zig").Manifest; const Function = @import("function.zig"); const CancelHandle = @import("cancel_handle.zig"); const c = @import("ffi.zig"); -const utils = @import("utils.zig"); const Self = @This(); @@ -52,7 +51,7 @@ pub fn init(allocator: std.mem.Allocator, ctx: *Context, data: []const u8, funct /// Create a new plugin from the given manifest pub fn initFromManifest(allocator: std.mem.Allocator, ctx: *Context, manifest: Manifest, functions: []const Function, wasi: bool) !Self { - const json = try utils.stringifyAlloc(allocator, manifest); + const json = try std.json.stringifyAlloc(allocator, manifest, .{ .emit_null_optional_fields = false }); defer allocator.free(json); return init(allocator, ctx, json, functions, wasi); } @@ -67,7 +66,7 @@ pub fn create(allocator: std.mem.Allocator, data: []const u8, functions: []const /// Create a new plugin from the given manifest in its own context pub fn createFromManifest(allocator: std.mem.Allocator, manifest: Manifest, functions: []const Function, wasi: bool) !Self { - const json = try utils.stringifyAlloc(allocator, manifest); + const json = try std.json.stringifyAlloc(allocator, manifest, .{ .emit_null_optional_fields = false }); defer allocator.free(json); return create(allocator, json, functions, wasi); } @@ -128,15 +127,15 @@ pub fn update(self: *Self, data: []const u8, wasi: bool) !void { /// Update a plugin with the given manifest pub fn updateWithManifest(self: *Self, allocator: std.mem.Allocator, manifest: Manifest, wasi: bool) !void { - const json = try utils.stringifyAlloc(allocator, manifest); + const json = try std.json.stringifyAlloc(allocator, manifest, .{ .emit_null_optional_fields = false }); defer allocator.free(json); return self.update(json, wasi); } /// Set configuration values -pub fn setConfig(self: *Self, allocator: std.mem.Allocator, config: std.StringHashMap([]const u8)) !void { +pub fn setConfig(self: *Self, allocator: std.mem.Allocator, config: std.json.ArrayHashMap([]const u8)) !void { self.ctx.mutex.lock(); defer self.ctx.mutex.unlock(); - const config_json = try utils.stringifyAlloc(allocator, config); + const config_json = try std.json.stringifyAlloc(allocator, config, .{ .emit_null_optional_fields = false }); defer allocator.free(config_json); _ = c.extism_plugin_config(self.ctx.ctx, self.id, config_json.ptr, @as(u64, config_json.len)); } diff --git a/zig/src/utils.zig b/zig/src/utils.zig deleted file mode 100644 index c50cea970..000000000 --- a/zig/src/utils.zig +++ /dev/null @@ -1,162 +0,0 @@ -const std = @import("std"); -const json = std.json; - -pub fn stringifyAlloc(allocator: std.mem.Allocator, value: anytype) ![]const u8 { - var list = std.ArrayList(u8).init(allocator); - errdefer list.deinit(); - try stringify(value, .{ .emit_null_optional_fields = false }, list.writer()); - return list.toOwnedSlice(); -} - -fn stringify( - value: anytype, - options: json.StringifyOptions, - out_stream: anytype, -) @TypeOf(out_stream).Error!void { - const T = @TypeOf(value); - if (comptime std.mem.count(u8, @typeName(T), "hash_map.HashMap") > 0 and std.mem.count(u8, @typeName(T), "?") == 0) { - var it = value.iterator(); - try out_stream.writeByte('{'); - var i: usize = 0; - while (it.next()) |entry| { - i += 1; - const name = entry.key_ptr.*; - try json.encodeJsonString(name, options, out_stream); - if (i < value.count()) try out_stream.writeByte(':'); - const val = entry.value_ptr.*; - try json.encodeJsonString(val, options, out_stream); - } - try out_stream.writeByte('}'); - return; - } - - switch (@typeInfo(T)) { - .Float, .ComptimeFloat => { - return std.fmt.formatFloatScientific(value, std.fmt.FormatOptions{}, out_stream); - }, - .Int, .ComptimeInt => { - return std.fmt.formatIntValue(value, "", std.fmt.FormatOptions{}, out_stream); - }, - .Bool => { - return out_stream.writeAll(if (value) "true" else "false"); - }, - .Null => { - return out_stream.writeAll("null"); - }, - .Optional => { - if (value) |payload| { - return try stringify(payload, options, out_stream); - } else { - return try stringify(null, options, out_stream); - } - }, - .Enum => { - if (comptime std.meta.trait.hasFn("jsonStringify")(T)) { - return value.jsonStringify(options, out_stream); - } - - @compileError("Unable to stringify enum '" ++ @typeName(T) ++ "'"); - }, - .Union => { - if (comptime std.meta.trait.hasFn("jsonStringify")(T)) { - return value.jsonStringify(options, out_stream); - } - - const info = @typeInfo(T).Union; - if (info.tag_type) |UnionTagType| { - inline for (info.fields) |u_field| { - if (value == @field(UnionTagType, u_field.name)) { - return try stringify(@field(value, u_field.name), options, out_stream); - } - } - } else { - @compileError("Unable to stringify untagged union '" ++ @typeName(T) ++ "'"); - } - }, - .Struct => |S| { - if (comptime std.meta.trait.hasFn("jsonStringify")(T)) { - return value.jsonStringify(options, out_stream); - } - - try out_stream.writeByte('{'); - var field_output = false; - var child_options = options; - child_options.whitespace = .indent_2; - inline for (S.fields) |Field| { - // don't include void fields - if (Field.type == void) continue; - - var emit_field = true; - - // don't include optional fields that are null when emit_null_optional_fields is set to false - if (@typeInfo(Field.type) == .Optional) { - if (options.emit_null_optional_fields == false) { - if (@field(value, Field.name) == null) { - emit_field = false; - } - } - } - - if (emit_field) { - if (!field_output) { - field_output = true; - } else { - try out_stream.writeByte(','); - } - try json.encodeJsonString(Field.name, options, out_stream); - try out_stream.writeByte(':'); - if (child_options.whitespace != .minified) { - try out_stream.writeByte(' '); - } - try stringify(@field(value, Field.name), child_options, out_stream); - } - } - try out_stream.writeByte('}'); - return; - }, - .ErrorSet => return stringify(@as([]const u8, @errorName(value)), options, out_stream), - .Pointer => |ptr_info| switch (ptr_info.size) { - .One => switch (@typeInfo(ptr_info.child)) { - .Array => { - const Slice = []const std.meta.Elem(ptr_info.child); - return stringify(@as(Slice, value), options, out_stream); - }, - else => { - // TODO: avoid loops? - std.debug.print("a: {}", .{std.mem.indexOf(u8, @typeName(T), "HashMap") != null}); - // return stringify(value.*, options, out_stream); - }, - }, - // TODO: .Many when there is a sentinel (waiting for https://github.com/ziglang/zig/pull/3972) - .Slice => { - if (ptr_info.child == u8 and std.unicode.utf8ValidateSlice(value)) { - try json.encodeJsonString(value, options, out_stream); - return; - } - - try out_stream.writeByte('['); - var child_options = options; - for (value, 0..) |x, i| { - if (i != 0) { - try out_stream.writeByte(','); - } - try stringify(x, child_options, out_stream); - } - try out_stream.writeByte(']'); - return; - }, - else => { - @compileError("Unable to stringify type '" ++ @typeName(T) ++ "'"); - }, - }, - .Array => return stringify(&value, options, out_stream), - .Vector => |info| { - const array: [info.len]info.child = value; - return stringify(&array, options, out_stream); - }, - else => { - @compileError("Unable to stringify type '" ++ @typeName(T) ++ "'"); - }, - } - unreachable; -} From 40a42882ba6dd7334accc3e725b158a58ceb1610 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 09:01:39 -0700 Subject: [PATCH 021/176] chore(deps-dev): Bump ex_doc from 0.30.4 to 0.30.5 in /elixir (#416) Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.4 to 0.30.5.
Changelog

Sourced from ex_doc's changelog.

v0.30.5 (2023-08-12)

  • Bug fixes
    • Fix style for code in headers
    • Fix search data generation for Erlang/OTP
Commits
  • 7aa3fd9 Release v0.30.5
  • feaf41c Do not style headers as links
  • 4114bbf Fix generating search_data.json for undocumented Erlang functions
  • See full diff in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.4&new-version=0.30.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- elixir/mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elixir/mix.lock b/elixir/mix.lock index a897f02af..44ec77f27 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -1,6 +1,6 @@ %{ "earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"}, - "ex_doc": {:hex, :ex_doc, "0.30.4", "e8395c8e3c007321abb30a334f9f7c0858d80949af298302daf77553468c0c39", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "9a19f0c50ffaa02435668f5242f2b2a61d46b541ebf326884505dfd3dd7af5e4"}, + "ex_doc": {:hex, :ex_doc, "0.30.5", "aa6da96a5c23389d7dc7c381eba862710e108cee9cfdc629b7ec021313900e9e", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "88a1e115dcb91cefeef7e22df4a6ebbe4634fbf98b38adcbc25c9607d6d9d8e6"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, From d1137fa739bbab7f7fa0f83ab799f85cb88693cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 09:01:50 -0700 Subject: [PATCH 022/176] chore(deps-dev): Bump @types/node from 20.4.8 to 20.5.0 in /node (#415) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.4.8 to 20.5.0.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.4.8&new-version=20.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 60ac0c7b5..3ac34db8a 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1128,9 +1128,9 @@ } }, "node_modules/@types/node": { - "version": "20.4.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", - "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==" + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", + "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From b6f2e845d93d3c35df00ad7673923f2175b4ed88 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 15 Aug 2023 10:02:30 -0700 Subject: [PATCH 023/176] fix(runtime): register all host function imports (#419) Fixes #417 --- runtime/src/plugin.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 01635919a..6e66bbfdc 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -211,18 +211,18 @@ impl Plugin { log_debug(I64); log_error(I64); }); - - for f in &mut imports { - let name = f.name().to_string(); - let ns = f.namespace().unwrap_or(EXPORT_MODULE_NAME); - linker.func_new(ns, &name, f.ty().clone(), unsafe { - &*std::sync::Arc::as_ptr(&f.f) - })?; - } } } } + for f in &mut imports { + let name = f.name().to_string(); + let ns = f.namespace().unwrap_or(EXPORT_MODULE_NAME); + linker.func_new(ns, &name, f.ty().clone(), unsafe { + &*std::sync::Arc::as_ptr(&f.f) + })?; + } + let instance_pre = linker.instantiate_pre(&main)?; let timer_id = uuid::Uuid::new_v4(); let mut plugin = Plugin { From 6102a99d986a869e0649d36e7eee0b757482110a Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Tue, 15 Aug 2023 20:05:37 +0300 Subject: [PATCH 024/176] fix(dotnet): typo in HostFunction constructor that prevents setting Host Function namespace (#418) The only interesting part is this: https://github.com/extism/extism/blob/ba1baef9fbcfb253b935ca6a3552365468190624/dotnet/src/Extism.Sdk/HostFunction.cs#L68 --- dotnet/src/Extism.Sdk/HostFunction.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/Extism.Sdk/HostFunction.cs b/dotnet/src/Extism.Sdk/HostFunction.cs index ce5af410c..e8e6b3d96 100644 --- a/dotnet/src/Extism.Sdk/HostFunction.cs +++ b/dotnet/src/Extism.Sdk/HostFunction.cs @@ -65,7 +65,7 @@ unsafe public HostFunction( NativeHandle = LibExtism.extism_function_new(functionName, inputs, inputTypes.Length, outputs, outputTypes.Length, CallbackImpl, userData, IntPtr.Zero); } - if (!string.IsNullOrEmpty(functionName)) + if (!string.IsNullOrEmpty(@namespace)) { LibExtism.extism_function_set_namespace(NativeHandle, @namespace); } From f312b0bcce39b435e902bca246314b944e3bdecf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 13:55:38 -0500 Subject: [PATCH 025/176] chore(deps-dev): Bump @types/node from 20.5.0 to 20.5.1 in /node (#423) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.5.0 to 20.5.1.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.0&new-version=20.5.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 3ac34db8a..290ee1222 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1128,9 +1128,9 @@ } }, "node_modules/@types/node": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz", - "integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q==" + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From 461ac9752916817ae375942a339e91794dddd0a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 13:55:46 -0500 Subject: [PATCH 026/176] chore(deps-dev): Bump prettier from 3.0.1 to 3.0.2 in /node (#422) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [prettier](https://github.com/prettier/prettier) from 3.0.1 to 3.0.2.
Release notes

Sourced from prettier's releases.

3.0.2

🔗 Changelog

Changelog

Sourced from prettier's changelog.

3.0.2

diff

Break after = of assignment if RHS is poorly breakable AwaitExpression or YieldExpression (#15204 by @​seiyab)

// Input
const { section, rubric, authors, tags } = await
utils.upsertCommonData(mainData);

// Prettier 3.0.1 const { section, rubric, authors, tags } = await utils.upsertCommonData( mainData, );

// Prettier 3.0.2 const { section, rubric, authors, tags } = await utils.upsertCommonData(mainData);

Do not add trailing comma for grouped scss comments (#15217 by @​auvred)

/* Input */
$foo: (
	'property': (),
	// comment 1
	// comment 2
)

/* Prettier 3.0.1 */ $foo: ( "property": (), // comment 1 // comment 2, );

/* Prettier 3.0.2 */ $foo: ( "property": (), // comment 1 // comment 2 );

Print declare and export keywords for nested namespace (#15249 by @​sosukesuzuki)

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.0.1&new-version=3.0.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 8 ++++---- node/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 290ee1222..d02d1fd31 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -21,7 +21,7 @@ "@types/jest": "^29.2.0", "@types/node": "^20.1.0", "jest": "^29.2.2", - "prettier": "3.0.1", + "prettier": "3.0.2", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.24.1", @@ -3247,9 +3247,9 @@ } }, "node_modules/prettier": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.1.tgz", - "integrity": "sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz", + "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" diff --git a/node/package.json b/node/package.json index a5d4e209a..11091fa69 100644 --- a/node/package.json +++ b/node/package.json @@ -41,7 +41,7 @@ "@types/jest": "^29.2.0", "@types/node": "^20.1.0", "jest": "^29.2.2", - "prettier": "3.0.1", + "prettier": "3.0.2", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.24.1", From e86398a612f769ca7d499dcde9bff7a5ca3e476a Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Wed, 23 Aug 2023 13:58:33 -0500 Subject: [PATCH 027/176] release: Bump runtime to 0.5.0 (#427) Co-authored-by: zach --- dotnet/nuget/Extism.runtime.win.csproj | 38 +++++++++++++------------- haskell/extism.cabal | 4 +-- haskell/manifest/extism-manifest.cabal | 2 +- manifest/Cargo.toml | 2 +- ocaml/Makefile | 4 +-- runtime/Cargo.toml | 4 +-- rust/Cargo.toml | 6 ++-- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/dotnet/nuget/Extism.runtime.win.csproj b/dotnet/nuget/Extism.runtime.win.csproj index dcb5ff372..da7662808 100644 --- a/dotnet/nuget/Extism.runtime.win.csproj +++ b/dotnet/nuget/Extism.runtime.win.csproj @@ -1,24 +1,24 @@ - - netstandard2.0;netstandard2.1 - true - false - + + netstandard2.0;netstandard2.1 + true + false + - - Extism.runtime.win-x64 - 0.6.0 - Extism Contributors - Internal implementation package for Extism to work on Windows x64 - extism, wasm, plugin - BSD-3-Clause - + + Extism.runtime.win-x64 + 0.7.0 + Extism Contributors + Internal implementation package for Extism to work on Windows x64 + extism, wasm, plugin + BSD-3-Clause + - - - + + + diff --git a/haskell/extism.cabal b/haskell/extism.cabal index 518c73a87..cad6f56cf 100644 --- a/haskell/extism.cabal +++ b/haskell/extism.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: extism -version: 0.3.0 +version: 0.4.0 license: BSD-3-Clause maintainer: oss@extism.org author: Extism authors @@ -22,7 +22,7 @@ library base >= 4.16.1 && < 5, bytestring >= 0.11.3 && <= 0.12, json >= 0.10 && <= 0.11, - extism-manifest >= 0.0.0 && < 0.3.0 + extism-manifest >= 0.0.0 && < 0.4.0 test-suite extism-example type: exitcode-stdio-1.0 diff --git a/haskell/manifest/extism-manifest.cabal b/haskell/manifest/extism-manifest.cabal index 941910b25..5d70dc67c 100644 --- a/haskell/manifest/extism-manifest.cabal +++ b/haskell/manifest/extism-manifest.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: extism-manifest -version: 0.2.0 +version: 0.3.0 license: BSD-3-Clause maintainer: oss@extism.org author: Extism authors diff --git a/manifest/Cargo.toml b/manifest/Cargo.toml index 987cd632c..f69a9dd93 100644 --- a/manifest/Cargo.toml +++ b/manifest/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extism-manifest" -version = "0.4.0" +version = "0.5.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" diff --git a/ocaml/Makefile b/ocaml/Makefile index 92437aab4..a18e92642 100644 --- a/ocaml/Makefile +++ b/ocaml/Makefile @@ -1,5 +1,5 @@ -VERSION?=0.3.0 -TAG?=0.4.0 +VERSION?=0.4.0 +TAG?=0.5.0 build: dune build diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 6deff2fa6..58f4e7222 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extism-runtime" -version = "0.4.0" +version = "0.5.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" @@ -22,7 +22,7 @@ log4rs = "1.1" url = "2" glob = "0.3" ureq = {version = "2.5", optional=true} -extism-manifest = { version = "0.4.0", path = "../manifest" } +extism-manifest = { version = "0.5.0", path = "../manifest" } uuid = { version = "1", features = ["v4"] } libc = "0.2" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 3bbd28eb9..278c0a4f6 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extism" -version = "0.4.0" +version = "0.5.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" @@ -9,8 +9,8 @@ repository = "https://github.com/extism/extism" description = "Extism Host SDK for Rust" [dependencies] -extism-manifest = { version = "0.4.0", path = "../manifest" } -extism-runtime = { version = "0.4.0", path = "../runtime"} +extism-manifest = { version = "0.5.0", path = "../manifest" } +extism-runtime = { version = "0.5.0", path = "../runtime"} serde_json = "1" log = "0.4" anyhow = "1" From 72f62c403593680857874eac0fd237da6f936dca Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 23 Aug 2023 13:49:50 -0700 Subject: [PATCH 028/176] chore: bump libextism version (#428) --- libextism/Cargo.toml | 2 +- runtime/src/extism-runtime.wasm | Bin 2743 -> 2694 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/libextism/Cargo.toml b/libextism/Cargo.toml index b2ec3442e..5457dbd50 100644 --- a/libextism/Cargo.toml +++ b/libextism/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libextism" -version = "0.4.0" +version = "0.5.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index fcf2f89b0b697add18c3a09cf2f158d4b0ff923b..b252b6fb46c3d151bb749bd2453eb9d9dc72ec3c 100755 GIT binary patch delta 307 zcmdlk+9tX|m5Fh}WHqMetO^WfOd^vNm?hO2tr#Q}m=qYzm;@A<967QC8i0U-ft#1X zY2JlP$??nqlX=)Qh|?Lu*f4o3TQ_lv6(;wvKVkeZxsanBs(}IGE(V0V7!d9< U=3=#@V3XEn@19ozb1!pv_thVz@5v0 da4rMFxeQ?EPU2FTtjKA{_+WAZXB~+;+W;@^RyzOy From 6a158849633ca301921fcf9a3b8b41832b4a83aa Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 23 Aug 2023 17:12:51 -0700 Subject: [PATCH 029/176] fix: remove call to bash from build.rs (#429) I think this will fix the issue with CI hanging - this fixes the issue when building Elixir, which seems to be the same as the CI issue --- kernel/build.sh | 2 +- runtime/build.rs | 10 ---------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/kernel/build.sh b/kernel/build.sh index f283d0751..3767d630e 100755 --- a/kernel/build.sh +++ b/kernel/build.sh @@ -2,6 +2,6 @@ cargo build --release --target wasm32-unknown-unknown --package extism-runtime-kernel --bin extism-runtime cp target/wasm32-unknown-unknown/release/extism-runtime.wasm . -wasm-strip extism-runtime.wasm || : +wasm-strip extism-runtime.wasm mv extism-runtime.wasm ../runtime/src/extism-runtime.wasm diff --git a/runtime/build.rs b/runtime/build.rs index 6017e4467..c78a36ccb 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -1,15 +1,5 @@ fn main() { println!("cargo:rerun-if-changed=src/extism-runtime.wasm"); - let dir = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()); - - // Attempt to build the kernel, this is only done as a convenience when developing the - // kernel an should not be relied on. When changes are made to the kernel run - // `sh build.sh` in the `kernel/` directory to ensure it run successfully. - let _ = std::process::Command::new("bash") - .args(&["build.sh"]) - .current_dir(dir.join("../kernel")) - .status() - .unwrap(); let fn_macro = " #define EXTISM_FUNCTION(N) extern void N(ExtismCurrentPlugin*, const ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, void*) From 67eb8c15713cf0ef67036fa60ca69487c3ace46a Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Thu, 24 Aug 2023 12:41:31 -0500 Subject: [PATCH 030/176] release: Bump the rest of the SDKs (#430) --- dotnet/src/Extism.Sdk/Extism.Sdk.csproj | 44 +-- elixir/mix.exs | 2 +- haskell/extism.cabal | 2 +- java/pom.xml | 353 ++++++++++++------------ node/package.json | 2 +- python/pyproject.toml | 2 +- ruby/lib/extism/version.rb | 2 +- runtime/extism.h | 7 +- 8 files changed, 205 insertions(+), 209 deletions(-) diff --git a/dotnet/src/Extism.Sdk/Extism.Sdk.csproj b/dotnet/src/Extism.Sdk/Extism.Sdk.csproj index 791830775..b7133fb7e 100644 --- a/dotnet/src/Extism.Sdk/Extism.Sdk.csproj +++ b/dotnet/src/Extism.Sdk/Extism.Sdk.csproj @@ -1,28 +1,28 @@  - - netstandard2.1 - enable - enable - True - 10 - + + netstandard2.1 + enable + enable + True + 10 + - - Extism.Sdk - 0.6.0 - Extism Contributors - Extism SDK that allows hosting Extism plugins in .NET apps. - extism, wasm, plugin - BSD-3-Clause - README.md - + + Extism.Sdk + 0.7.0 + Extism Contributors + Extism SDK that allows hosting Extism plugins in .NET apps. + extism, wasm, plugin + BSD-3-Clause + README.md + - - - + + + - - - + + + diff --git a/elixir/mix.exs b/elixir/mix.exs index 34cb3eb2c..03d366011 100644 --- a/elixir/mix.exs +++ b/elixir/mix.exs @@ -4,7 +4,7 @@ defmodule Extism.MixProject do def project do [ app: :extism, - version: "0.4.0", + version: "0.5.0", elixir: "~> 1.12", start_permanent: Mix.env() == :prod, deps: deps(), diff --git a/haskell/extism.cabal b/haskell/extism.cabal index cad6f56cf..5ce9a8d46 100644 --- a/haskell/extism.cabal +++ b/haskell/extism.cabal @@ -1,6 +1,6 @@ cabal-version: 3.0 name: extism -version: 0.4.0 +version: 0.5.0 license: BSD-3-Clause maintainer: oss@extism.org author: Extism authors diff --git a/java/pom.xml b/java/pom.xml index 2faa795a9..6b25b8b08 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -1,193 +1,194 @@ - - 4.0.0 - org.extism.sdk - extism - jar - 0.4.0 - extism - https://github.com/extism/extism - Java-SDK for Extism to use webassembly from Java + + 4.0.0 + org.extism.sdk + extism + jar + 0.5.0 + extism + https://github.com/extism/extism + Java-SDK for Extism to use webassembly from Java - - - BSD 3-Clause - https://opensource.org/licenses/BSD-3-Clause - - + + + BSD 3-Clause + https://opensource.org/licenses/BSD-3-Clause + + - - Dylibso, Inc. - https://dylib.so - + + Dylibso, Inc. + https://dylib.so + - - - The Extism Authors - oss@extism.org - - Maintainer - - Dylibso, Inc. - https://dylib.so - - + + + The Extism Authors + oss@extism.org + + Maintainer + + Dylibso, Inc. + https://dylib.so + + - - scm:git:git://github.com/extism/extism.git - scm:git:ssh://git@github.com/extism/extism.git - https://github.com/extism/extism/tree/main/java - main - + + scm:git:git://github.com/extism/extism.git + scm:git:ssh://git@github.com/extism/extism.git + https://github.com/extism/extism/tree/main/java + main + - - Github - https://github.com/extism/extism/issues - + + Github + https://github.com/extism/extism/issues + - - 11 - UTF-8 + + 11 + UTF-8 - - 5.12.1 - 2.10 + + 5.12.1 + 2.10 - - 5.9.1 - 3.23.1 + + 5.9.1 + 3.23.1 - - 3.10.1 - 2.22.2 + + 3.10.1 + 2.22.2 - - true - + + true + - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - -Xdoclint:none - - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - - - - - true - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local - - target/staging-deploy - - - - - - - - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${java.version} - - - - org.apache.maven.plugins - maven-surefire-plugin - ${maven-surefire-plugin.version} - - - ../target/release - - - + target/staging-deploy + + + + + + +
- - - - net.java.dev.jna - jna - ${jna.version} - - - com.google.code.gson - gson - ${gson.version} - - - org.junit.jupiter - junit-jupiter-engine - ${junit-jupiter-engine.version} - test - - - org.assertj - assertj-core - ${assertj-core.version} - test - + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${java.version} + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + ../target/release + + + + + + + + net.java.dev.jna + jna + ${jna.version} + + + com.google.code.gson + gson + ${gson.version} + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter-engine.version} + test + + + org.assertj + assertj-core + ${assertj-core.version} + test + - - uk.org.webcompere - model-assert - 1.0.0 - test - - + + uk.org.webcompere + model-assert + 1.0.0 + test + + diff --git a/node/package.json b/node/package.json index 11091fa69..3f58e9976 100644 --- a/node/package.json +++ b/node/package.json @@ -1,6 +1,6 @@ { "name": "@extism/extism", - "version": "0.4.0", + "version": "0.5.0", "description": "Extism Host SDK for Node", "keywords": [ "extism", diff --git a/python/pyproject.toml b/python/pyproject.toml index 2eddeda72..5bfe593f5 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "extism" -version = "0.4.0" +version = "0.5.0" description = "Extism Host SDK for python" authors = ["The Extism Authors "] license = "BSD-3-Clause" diff --git a/ruby/lib/extism/version.rb b/ruby/lib/extism/version.rb index 0e6283f4c..887581895 100644 --- a/ruby/lib/extism/version.rb +++ b/ruby/lib/extism/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Extism - VERSION = "0.4.0" + VERSION = '0.5.0' end diff --git a/runtime/extism.h b/runtime/extism.h index 9df283f02..507ef44de 100644 --- a/runtime/extism.h +++ b/runtime/extism.h @@ -81,12 +81,7 @@ typedef struct { /** * Host function signature */ -typedef void (*ExtismFunctionType)(ExtismCurrentPlugin *plugin, - const ExtismVal *inputs, - ExtismSize n_inputs, - ExtismVal *outputs, - ExtismSize n_outputs, - void *data); +typedef void (*ExtismFunctionType)(ExtismCurrentPlugin *plugin, const ExtismVal *inputs, ExtismSize n_inputs, ExtismVal *outputs, ExtismSize n_outputs, void *data); typedef int32_t ExtismPlugin; From 745a03ece4bae824f523a23379e956aebcdf81ba Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Thu, 24 Aug 2023 13:37:48 -0500 Subject: [PATCH 031/176] release: Bump elixir nif to rust 0.5 (#431) --- elixir/native/extism_nif/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elixir/native/extism_nif/Cargo.toml b/elixir/native/extism_nif/Cargo.toml index dd7638e23..95f47b060 100644 --- a/elixir/native/extism_nif/Cargo.toml +++ b/elixir/native/extism_nif/Cargo.toml @@ -14,5 +14,5 @@ crate-type = ["cdylib"] [dependencies] rustler = "0.28.0" -extism = "0.4.0" +extism = "0.5.0" log = "0.4" From d13301a3467ff878110002001cb0fa174982b3e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:14:54 -0700 Subject: [PATCH 032/176] chore(deps): Update cbindgen requirement from 0.24 to 0.25 (#434) Updates the requirements on [cbindgen](https://github.com/eqrion/cbindgen) to permit the latest version.
Changelog

Sourced from cbindgen's changelog.

0.25.0

  * Re-release of yanked 0.24.6 as a major release
  * Update MSRV to 1.57
* Support variadic arguments (`...`)
([#805](https://github.com/eqrion/cbindgen/issues/805))
* Add --depfile option
([#820](https://github.com/eqrion/cbindgen/issues/820))
  * Breaking changes: The `Config` struct now has a private member.

0.24.6 (YANKED: depfile option was breaking, see #841)

  * Update MSRV to 1.57
* Support variadic arguments (`...`)
([#805](https://github.com/eqrion/cbindgen/issues/805))
* Add --depfile option
([#820](https://github.com/eqrion/cbindgen/issues/820))

0.24.5

  * Don't enforce tempfile version.

0.24.4

 * Move expand infinite recursion fix
([#799](https://github.com/eqrion/cbindgen/issues/799))
* Add with_cpp_compat to the builder
([#796](https://github.com/eqrion/cbindgen/issues/796))
* Handle never type in return position consistently
([#780](https://github.com/eqrion/cbindgen/issues/780))
* Fix warnings ([#816](https://github.com/eqrion/cbindgen/issues/816),
[#819](https://github.com/eqrion/cbindgen/issues/819))
* Updated documentation
([#788](https://github.com/eqrion/cbindgen/issues/788),
[#791](https://github.com/eqrion/cbindgen/issues/791),
[#792](https://github.com/eqrion/cbindgen/issues/792),
[#810](https://github.com/eqrion/cbindgen/issues/810),
[#823](https://github.com/eqrion/cbindgen/issues/823))

0.24.3

 * Make struct expressions correctly generated through
typedefs ([#768](https://github.com/eqrion/cbindgen/issues/768)).

0.24.2

  * Make bitfield operators use explicit constructors.

0.24.1

 * Add support for unary negation
([#765](https://github.com/eqrion/cbindgen/issues/765)).
* Make more bitfield operators constexpr
([#765](https://github.com/eqrion/cbindgen/issues/765)).

0.24.0

 * Basic const generic support
([#759](https://github.com/eqrion/cbindgen/issues/759),
[#760](https://github.com/eqrion/cbindgen/issues/760)
[#762](https://github.com/eqrion/cbindgen/issues/762)).
* Suffixes on integer literals are now honored to avoid narrowing
([#764](https://github.com/eqrion/cbindgen/issues/764)).

0.23.0

 * Better support for constexpr.
([#756](https://github.com/eqrion/cbindgen/issues/756))
* constexpr is now enabled by default in C++ mode. You can use
const.allow_constexpr=false to revert to previous behavior.
([#756](https://github.com/eqrion/cbindgen/issues/756))
* Minimum syn version no longer parses old rust code.
([#754](https://github.com/eqrion/cbindgen/issues/754))

... (truncated)

Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- runtime/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 58f4e7222..2c52f4783 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -34,4 +34,4 @@ register-filesystem = [] # enables wasm to be loaded from disk http = ["ureq"] # enables extism_http_request [build-dependencies] -cbindgen = "0.24" +cbindgen = "0.25" From 65231cada5a3aabd8cf31934a8fe9249812bab19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:15:13 -0700 Subject: [PATCH 033/176] chore(deps-dev): Bump ex_doc from 0.30.5 to 0.30.6 in /elixir (#440) Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.5 to 0.30.6.
Changelog

Sourced from ex_doc's changelog.

v0.30.6 (2023-08-25)

  • Enhancements
    • Extract title from Markdown file when preceeded with comments
    • Improve focus navigation in notebooks
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.5&new-version=0.30.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- elixir/mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elixir/mix.lock b/elixir/mix.lock index 44ec77f27..88770e4fa 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -1,6 +1,6 @@ %{ "earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"}, - "ex_doc": {:hex, :ex_doc, "0.30.5", "aa6da96a5c23389d7dc7c381eba862710e108cee9cfdc629b7ec021313900e9e", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "88a1e115dcb91cefeef7e22df4a6ebbe4634fbf98b38adcbc25c9607d6d9d8e6"}, + "ex_doc": {:hex, :ex_doc, "0.30.6", "5f8b54854b240a2b55c9734c4b1d0dd7bdd41f71a095d42a70445c03cf05a281", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "bd48f2ddacf4e482c727f9293d9498e0881597eae6ddc3d9562bd7923375109f"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, From 92a7eecf694af0f7620678d888a7ada82a35ea19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:15:27 -0700 Subject: [PATCH 034/176] chore(deps-dev): Bump @types/node from 20.5.1 to 20.5.7 in /node (#437) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.5.1 to 20.5.7.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.1&new-version=20.5.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index d02d1fd31..2bf15ec86 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1,12 +1,12 @@ { "name": "@extism/extism", - "version": "0.4.0", + "version": "0.5.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@extism/extism", - "version": "0.4.0", + "version": "0.5.0", "license": "BSD-3-Clause", "dependencies": { "@types/ref-array-di": "^1.2.5", @@ -1128,9 +1128,9 @@ } }, "node_modules/@types/node": { - "version": "20.5.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", - "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==" + "version": "20.5.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", + "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From 3b89b51b624061dc1991c8696f529ae2c2a46f02 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:15:40 -0700 Subject: [PATCH 035/176] chore(deps-dev): Bump typedoc from 0.24.8 to 0.25.0 in /node (#439) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.24.8 to 0.25.0.
Release notes

Sourced from typedoc's releases.

v0.25.0

Breaking Changes

  • Bump minimum Node version to 16.
  • Removed legacy-packages option for --entryPointStrategy.
  • Changed default value of --categorizeByGroup to false.
  • Specifying a link as the gitRemote is no longer supported.
  • An Application instance must now be retrieved via Application.bootstrap or Application.bootstrapWithPlugins, #2268.
  • Removed ReflectionKind.ObjectLiteral that was never used by TypeDoc.
  • Removed deprecated members DefaultThemeRenderContext.comment and DefaultThemeRenderContext.attemptExternalResolution.

Features

  • Added support for TypeScript 5.2
  • TypeDoc config files now support options default-exported from an ESM config file, #2268.
  • TypeDoc config files may now export a promise containing configuration, #2268.
  • Added --preserveLinkText option (defaults to true) which determines whether the reflection name or full link text is included in the output when no override is specified, #2355.
  • Added a no-results placeholder when no search results are available, #2347.
  • Implemented several miscellaneous performance improvements to generate docs faster, this took the time to generate TypeDoc's site from ~5.6 seconds to ~5.4 seconds.
  • Added --disableGit option to prevent TypeDoc from using Git to try to determine if sources can be linked, #2326.
  • Added support for tags @showGroups, @hideGroups, @showCategories, @hideCategories to configure the navigation pane on a per-reflection basis, #2329.
  • With --jsDocCompatibility.defaultTags set, @defaultValue is now implicitly a code block if the text contains no code, #2370.

Bug Fixes

  • Fixed link discovery if nested (Foo#bar) links were used and --useTsLinkResolution is enabled in some cases, #2360.
  • Links with invalid declaration references will no longer silently link to the wrong page in some cases, #2360.
  • Fixed duplicate definitions in type hierarchy when using packages mode, #2327.
  • @inheritDoc was not properly resolved across packages in packages mode, #2331.
  • Added warning for attempted @interface use on union types, #2352.
  • Fixed misleading type annotation on Theme.getUrls, #2318.
  • Fixed duplicate namespace in documentation if @namespace is used on a variable with an associated namespace, #2364.
  • Fixed @namespace property discovery if merged with a type and the type was declared first #2364.
  • Tables in markdown are now styled, #2366.
  • Sidebar links no longer open in a new tab, #2353.
  • Headers now include some padding before rendering text, #2316.
  • Symbol locations for signatures on reflection.sources now considers the node's name like non-signature location discovery does.

Thanks!

Changelog

Sourced from typedoc's changelog.

v0.25.0 (2023-08-25)

Breaking Changes

  • Bump minimum Node version to 16.
  • Removed legacy-packages option for --entryPointStrategy.
  • Changed default value of --categorizeByGroup to false.
  • Specifying a link as the gitRemote is no longer supported.
  • An Application instance must now be retrieved via Application.bootstrap or Application.bootstrapWithPlugins, #2268.
  • Removed ReflectionKind.ObjectLiteral that was never used by TypeDoc.
  • Removed deprecated members DefaultThemeRenderContext.comment and DefaultThemeRenderContext.attemptExternalResolution.

Features

  • Added support for TypeScript 5.2, #2373.
  • TypeDoc config files now support options default-exported from an ESM config file, #2268.
  • TypeDoc config files may now export a promise containing configuration, #2268.
  • Added --preserveLinkText option (defaults to true) which determines whether the reflection name or full link text is included in the output when no override is specified, #2355.
  • Added a no-results placeholder when no search results are available, #2347.
  • Implemented several miscellaneous performance improvements to generate docs faster, this took the time to generate TypeDoc's site from ~5.6 seconds to ~5.4 seconds.
  • Added --disableGit option to prevent TypeDoc from using Git to try to determine if sources can be linked, #2326.
  • Added support for tags @showGroups, @hideGroups, @showCategories, @hideCategories to configure the navigation pane on a per-reflection basis, #2329.
  • With --jsDocCompatibility.defaultTags set, @defaultValue is now implicitly a code block if the text contains no code, #2370.

Bug Fixes

  • Fixed link discovery if nested (Foo#bar) links were used and --useTsLinkResolution is enabled in some cases, #2360.
  • Links with invalid declaration references will no longer silently link to the wrong page in some cases, #2360.
  • Fixed duplicate definitions in type hierarchy when using packages mode, #2327.
  • @inheritDoc was not properly resolved across packages in packages mode, #2331.
  • Added warning for attempted @interface use on union types, #2352.
  • Fixed misleading type annotation on Theme.getUrls, #2318.
  • Fixed duplicate namespace in documentation if @namespace is used on a variable with an associated namespace, #2364.
  • Fixed @namespace property discovery if merged with a type and the type was declared first #2364.
  • Tables in markdown are now styled, #2366.
  • Sidebar links no longer open in a new tab, #2353.
  • Headers now include some padding before rendering text, #2316.
  • Symbol locations for signatures on reflection.sources now considers the node's name like non-signature location discovery does.

Thanks!

Commits
  • 8d822e9 Update changelog for release
  • fc6f648 Bump version to 0.25.0
  • d4db571 Add preserveLinkText option
  • 3d8ff29 defaultValue is implicitly code only with JSDoc compat
  • 028a141 feat(default-value): treat as code block for better styling (#2370)
  • c83f2c3 Add support for TS 5.2
  • 5c977ae Support ESM config files
  • 76c918c Headers now include some padding before rendering text
  • 0cc6e58 Sidebar links no longer open in a new tab, closes #2353.
  • 3207ae5 Lint
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.24.8&new-version=0.25.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 20 ++++++++++---------- node/package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 2bf15ec86..f0bbfe58a 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -24,7 +24,7 @@ "prettier": "3.0.2", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", - "typedoc": "^0.24.1", + "typedoc": "^0.25.0", "typescript": "^5.0.4" } }, @@ -3804,24 +3804,24 @@ } }, "node_modules/typedoc": { - "version": "0.24.8", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz", - "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.0.tgz", + "integrity": "sha512-FvCYWhO1n5jACE0C32qg6b3dSfQ8f2VzExnnRboowHtqUD6ARzM2r8YJeZFYXhcm2hI4C2oCRDgNPk/yaQUN9g==", "dev": true, "dependencies": { "lunr": "^2.3.9", "marked": "^4.3.0", - "minimatch": "^9.0.0", + "minimatch": "^9.0.3", "shiki": "^0.14.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 14.14" + "node": ">= 16" }, "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x" + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x" } }, "node_modules/typedoc/node_modules/brace-expansion": { @@ -3834,9 +3834,9 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" diff --git a/node/package.json b/node/package.json index 3f58e9976..344f4f86f 100644 --- a/node/package.json +++ b/node/package.json @@ -44,7 +44,7 @@ "prettier": "3.0.2", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", - "typedoc": "^0.24.1", + "typedoc": "^0.25.0", "typescript": "^5.0.4" } } From 8c2125cdcda583549f25b8bc6be42643046163fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:15:55 -0700 Subject: [PATCH 036/176] chore(deps-dev): Bump typescript from 5.1.6 to 5.2.2 in /node (#438) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.1.6 to 5.2.2.
Release notes

Sourced from typescript's releases.

TypeScript 5.2

For release notes, check out the release announcement.

For the complete list of fixed issues, check out the

Downloads are available on:

TypeScript 5.2 RC

For release notes, check out the release announcement.

For the complete list of fixed issues, check out the

Downloads are available on:

TypeScript 5.2 Beta

For release notes, check out the release announcement.

For the complete list of fixed issues, check out the

Downloads are available on npm.

Commits
  • 9684ba6 Cherry-pick fix for cross-file inlay hints (#55476) to release-5.2 and LKG ...
  • 555ef99 Bump version to 5.2.2 and LKG
  • 6074b9d Update LKG for 5.2.1 RC.
  • b778ed1 Merge commit 'e936eb13d2900f21d79553c32a704307c7ad03dd' into release-5.2
  • 10b9962 Bump version to 5.2.1-rc and LKG
  • e936eb1 Update package-lock.json
  • e36cd57 Update package-lock.json
  • 581fba1 Update package-lock.json
  • 8fc8c95 Decorators normative updates (#55276)
  • b1c4dc4 Fix class name references (#55262)
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typescript&package-manager=npm_and_yarn&previous-version=5.1.6&new-version=5.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index f0bbfe58a..b9a6df03e 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -3849,9 +3849,9 @@ } }, "node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, "bin": { "tsc": "bin/tsc", From aa073b8acc10149fbbbe5b4bc87e251c5096f673 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 29 Aug 2023 13:35:55 -0700 Subject: [PATCH 037/176] chore(deps-dev): Bump jest and @types/jest in /node (#436) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together. Updates `jest` from 29.6.2 to 29.6.4
Release notes

Sourced from jest's releases.

v29.6.4

Fixes

  • [jest-core] Fix typo in scheduleAndRun performance marker (#14434)
  • [jest-environment-node] Make sure atob and btoa are writeable in Node 20 (#14446)
  • [jest-worker] Additional error wrapper for parentPort.postMessage to fix unhandled DataCloneError. (#14437)

New Contributors

Full Changelog: https://github.com/jestjs/jest/compare/v29.6.3...v29.6.4

v29.6.3

Fixes

  • [expect, @jest/expect-utils] ObjectContaining support symbol as key (#14414)
  • [expect] Remove @types/node from dependencies (#14385)
  • [jest-core] Use workers in watch mode by default to avoid crashes (#14059 & #14085).
  • [jest-reporters] Update istanbul-lib-instrument dependency to v6. (#14401)
  • [jest-mock] Revert #13692 as it was a breaking change (#14429)
  • [jest-mock] Revert #13866 as it was a breaking change (#14429)
  • [jest-mock] Revert #13867 as it was a breaking change (#14429)
  • [@jest/reporters] Marks Reporter's hooks as optional (#14433)
  • [jest-runtime] Fix dynamic ESM import module bug when loaded module through jest.isolateModulesAsync (#14397)

Chore & Maintenance

  • [jest-changed-files, jest-circus, jest-console, @jest/core, @jest/runtime, @jest/transform] Use invariant and notEmpty from jest-util rather than own internal (#14366)

New Contributors

Full Changelog: https://github.com/jestjs/jest/compare/v29.6.2...v29.6.3

Changelog

Sourced from jest's changelog.

29.6.4

Fixes

  • [jest-core] Fix typo in scheduleAndRun performance marker (#14434)
  • [jest-environment-node] Make sure atob and btoa are writeable in Node 20 (#14446)
  • [jest-worker] Additional error wrapper for parentPort.postMessage to fix unhandled DataCloneError. (#14437)

29.6.3

Fixes

  • [expect, @jest/expect-utils] ObjectContaining support sumbol as key (#14414)
  • [expect] Remove @types/node from dependencies (#14385)
  • [jest-core] Use workers in watch mode by default to avoid crashes (#14059 & #14085).
  • [jest-reporters] Update istanbul-lib-instrument dependency to v6. (#14401)
  • [jest-mock] Revert #13692 as it was a breaking change (#14429)
  • [jest-mock] Revert #13866 as it was a breaking change (#14429)
  • [jest-mock] Revert #13867 as it was a breaking change (#14429)
  • [@jest/reporters] Marks Reporter's hooks as optional (#14433)
  • [jest-runtime] Fix dynamic ESM import module bug when loaded module through jest.isolateModulesAsync (#14397)

Chore & Maintenance

  • [jest-changed-files, jest-circus, jest-console, @jest/core, @jest/runtime, @jest/transform] Use invariant and notEmpty from jest-util rather than own internal (#14366)
Commits

Updates `@types/jest` from 29.5.3 to 29.5.4
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 695 +++++++++++++++++++++-------------------- 1 file changed, 363 insertions(+), 332 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index b9a6df03e..3f2157047 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -654,16 +654,16 @@ } }, "node_modules/@jest/console": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.2.tgz", - "integrity": "sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", + "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", "slash": "^3.0.0" }, "engines": { @@ -671,37 +671,37 @@ } }, "node_modules/@jest/core": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.2.tgz", - "integrity": "sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", + "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", "dev": true, "dependencies": { - "@jest/console": "^29.6.2", - "@jest/reporters": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.6.4", + "@jest/reporters": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.6.2", - "jest-haste-map": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.2", - "jest-resolve-dependencies": "^29.6.2", - "jest-runner": "^29.6.2", - "jest-runtime": "^29.6.2", - "jest-snapshot": "^29.6.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", - "jest-watcher": "^29.6.2", + "jest-changed-files": "^29.6.3", + "jest-config": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-resolve-dependencies": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", + "jest-watcher": "^29.6.4", "micromatch": "^4.0.4", - "pretty-format": "^29.6.2", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -718,88 +718,88 @@ } }, "node_modules/@jest/environment": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", - "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", + "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.6.2" + "jest-mock": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", - "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", "dev": true, "dependencies": { - "expect": "^29.6.2", - "jest-snapshot": "^29.6.2" + "expect": "^29.6.4", + "jest-snapshot": "^29.6.4" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", - "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", + "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.3" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", - "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", + "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.6.2", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.2.tgz", - "integrity": "sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", + "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/expect": "^29.6.2", - "@jest/types": "^29.6.1", - "jest-mock": "^29.6.2" + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/types": "^29.6.3", + "jest-mock": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.2.tgz", - "integrity": "sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", + "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", @@ -808,13 +808,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", - "jest-worker": "^29.6.2", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -832,10 +832,41 @@ } } }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz", + "integrity": "sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/schemas": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz", - "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -845,9 +876,9 @@ } }, "node_modules/@jest/source-map": { - "version": "29.6.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz", - "integrity": "sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", @@ -859,13 +890,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.2.tgz", - "integrity": "sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", + "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", "dev": true, "dependencies": { - "@jest/console": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.6.4", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -874,14 +905,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz", - "integrity": "sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", + "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.2", + "@jest/test-result": "^29.6.4", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", + "jest-haste-map": "^29.6.4", "slash": "^3.0.0" }, "engines": { @@ -889,22 +920,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", - "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", + "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", + "jest-haste-map": "^29.6.4", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -921,12 +952,12 @@ "dev": true }, "node_modules/@jest/types": { - "version": "29.6.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz", - "integrity": "sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.0", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -1033,9 +1064,9 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", + "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -1065,12 +1096,12 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz", - "integrity": "sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==", + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", + "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/ffi-napi": { @@ -1118,9 +1149,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.3", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz", - "integrity": "sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA==", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", + "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1298,15 +1329,15 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/babel-jest": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.2.tgz", - "integrity": "sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", + "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", "dev": true, "dependencies": { - "@jest/transform": "^29.6.2", + "@jest/transform": "^29.6.4", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -1335,9 +1366,9 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -1373,12 +1404,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -1648,9 +1679,9 @@ } }, "node_modules/dedent": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.0.tgz", - "integrity": "sha512-3sSQTYoWKGcRHmHl6Y6opLpRJH55bxeGQ0Y1LCI5pZzUXvokVkj0FC4bi7uEwazxA9FQZ0Nv067Zt5kSUvXxEA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -1689,9 +1720,9 @@ } }, "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1827,17 +1858,16 @@ } }, "node_modules/expect": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", - "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", + "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.6.2", - "@types/node": "*", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2" + "@jest/expect-utils": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -1920,9 +1950,9 @@ "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==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -2113,9 +2143,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -2236,15 +2266,15 @@ } }, "node_modules/jest": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.2.tgz", - "integrity": "sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", + "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", "dev": true, "dependencies": { - "@jest/core": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/core": "^29.6.4", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.6.2" + "jest-cli": "^29.6.4" }, "bin": { "jest": "bin/jest.js" @@ -2262,12 +2292,13 @@ } }, "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", + "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", "dev": true, "dependencies": { "execa": "^5.0.0", + "jest-util": "^29.6.3", "p-limit": "^3.1.0" }, "engines": { @@ -2275,28 +2306,28 @@ } }, "node_modules/jest-circus": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.2.tgz", - "integrity": "sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", + "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/expect": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/environment": "^29.6.4", + "@jest/expect": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.6.2", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-runtime": "^29.6.2", - "jest-snapshot": "^29.6.2", - "jest-util": "^29.6.2", + "jest-each": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-runtime": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "p-limit": "^3.1.0", - "pretty-format": "^29.6.2", + "pretty-format": "^29.6.3", "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" @@ -2306,21 +2337,21 @@ } }, "node_modules/jest-cli": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.2.tgz", - "integrity": "sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", + "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", "dev": true, "dependencies": { - "@jest/core": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/core": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.6.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", + "jest-config": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "prompts": "^2.0.1", "yargs": "^17.3.1" }, @@ -2340,31 +2371,31 @@ } }, "node_modules/jest-config": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.2.tgz", - "integrity": "sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", + "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.6.2", - "@jest/types": "^29.6.1", - "babel-jest": "^29.6.2", + "@jest/test-sequencer": "^29.6.4", + "@jest/types": "^29.6.3", + "babel-jest": "^29.6.4", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.6.2", - "jest-environment-node": "^29.6.2", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.2", - "jest-runner": "^29.6.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", + "jest-circus": "^29.6.4", + "jest-environment-node": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runner": "^29.6.4", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.6.2", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -2385,24 +2416,24 @@ } }, "node_modules/jest-diff": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", - "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz", + "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", + "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -2412,62 +2443,62 @@ } }, "node_modules/jest-each": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.2.tgz", - "integrity": "sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", + "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.6.2", - "pretty-format": "^29.6.2" + "jest-get-type": "^29.6.3", + "jest-util": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.2.tgz", - "integrity": "sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", + "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" + "jest-mock": "^29.6.3", + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", - "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", + "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", - "jest-worker": "^29.6.2", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.6.3", + "jest-worker": "^29.6.4", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -2479,46 +2510,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz", - "integrity": "sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", + "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", - "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", + "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", - "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", + "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.6.2", + "pretty-format": "^29.6.3", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -2527,14 +2558,14 @@ } }, "node_modules/jest-mock": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", - "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", + "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.6.2" + "jest-util": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2558,26 +2589,26 @@ } }, "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.2.tgz", - "integrity": "sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", + "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", + "jest-haste-map": "^29.6.4", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.6.2", - "jest-validate": "^29.6.2", + "jest-util": "^29.6.3", + "jest-validate": "^29.6.3", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -2587,43 +2618,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz", - "integrity": "sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", + "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", "dev": true, "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.6.2" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.6.4" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.2.tgz", - "integrity": "sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", + "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", "dev": true, "dependencies": { - "@jest/console": "^29.6.2", - "@jest/environment": "^29.6.2", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/console": "^29.6.4", + "@jest/environment": "^29.6.4", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.6.2", - "jest-haste-map": "^29.6.2", - "jest-leak-detector": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-resolve": "^29.6.2", - "jest-runtime": "^29.6.2", - "jest-util": "^29.6.2", - "jest-watcher": "^29.6.2", - "jest-worker": "^29.6.2", + "jest-docblock": "^29.6.3", + "jest-environment-node": "^29.6.4", + "jest-haste-map": "^29.6.4", + "jest-leak-detector": "^29.6.3", + "jest-message-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-runtime": "^29.6.4", + "jest-util": "^29.6.3", + "jest-watcher": "^29.6.4", + "jest-worker": "^29.6.4", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -2632,31 +2663,31 @@ } }, "node_modules/jest-runtime": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.2.tgz", - "integrity": "sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.6.2", - "@jest/fake-timers": "^29.6.2", - "@jest/globals": "^29.6.2", - "@jest/source-map": "^29.6.0", - "@jest/test-result": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", + "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.6.4", + "@jest/fake-timers": "^29.6.4", + "@jest/globals": "^29.6.4", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-mock": "^29.6.2", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.6.2", - "jest-snapshot": "^29.6.2", - "jest-util": "^29.6.2", + "jest-haste-map": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-mock": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.6.4", + "jest-snapshot": "^29.6.4", + "jest-util": "^29.6.3", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -2665,9 +2696,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", - "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", + "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -2675,20 +2706,20 @@ "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/expect-utils": "^29.6.4", + "@jest/transform": "^29.6.4", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.6.2", + "expect": "^29.6.4", "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", + "jest-diff": "^29.6.4", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.6.4", + "jest-message-util": "^29.6.3", + "jest-util": "^29.6.3", "natural-compare": "^1.4.0", - "pretty-format": "^29.6.2", + "pretty-format": "^29.6.3", "semver": "^7.5.3" }, "engines": { @@ -2711,12 +2742,12 @@ } }, "node_modules/jest-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.2.tgz", - "integrity": "sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -2728,17 +2759,17 @@ } }, "node_modules/jest-validate": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.2.tgz", - "integrity": "sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", "dev": true, "dependencies": { - "@jest/types": "^29.6.1", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.6.2" + "pretty-format": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2757,18 +2788,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.2.tgz", - "integrity": "sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", + "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.2", - "@jest/types": "^29.6.1", + "@jest/test-result": "^29.6.4", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.6.2", + "jest-util": "^29.6.3", "string-length": "^4.0.1" }, "engines": { @@ -2776,13 +2807,13 @@ } }, "node_modules/jest-worker": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.2.tgz", - "integrity": "sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ==", + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.6.2", + "jest-util": "^29.6.3", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -3262,12 +3293,12 @@ } }, "node_modules/pretty-format": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", - "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", + "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.0", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -3396,12 +3427,12 @@ } }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, From ddcbeec3debe787293a9957c8be88f80a64b7c22 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 29 Aug 2023 13:57:17 -0700 Subject: [PATCH 038/176] refactor!: Remove context, unify `extism-runtime` and `extism` crates (#421) - Removes the `ExtismContext` type from runtime and all SDKs - Removed SDK functions: `extism_context_new`, `extism_context_reset`, `extism_context_free` - All SDKs have been updated, but there are still some TODOs below - Removes `extism_plugin_update` - Plugins can no longer be updated - a new plugin should be created instead - Adds `extism_plugin_id` to uniquely identify plugins - Merges the `extism-runtime` and `extism` crates (there is no longer an `extism-runtime` crate) - Makes `extism::Manifest` an alias for `extism_manifest::Manifest` instead of a distinct type - Adds `MemoryHandle` type to SDKs to refer to blocks of Extism memory that can be accessed in host functions - Improves thread-safety of Plugins, adds C++ test to call a single plugin from multiple threads. - Expands wasmtime bounds to include 12.0 --- .github/workflows/ci-rust.yml | 22 +- .github/workflows/release-rust.yaml | 6 +- .ocamlformat | 2 +- Cargo.toml | 1 - c/main.c | 25 +- cpp/extism.hpp | 183 ++----- cpp/test/test.cpp | 54 +- dotnet/samples/Extism.Sdk.Sample/Program.cs | 4 +- dotnet/src/Extism.Sdk/Context.cs | 191 ------- dotnet/src/Extism.Sdk/LibExtism.cs | 75 +-- dotnet/src/Extism.Sdk/Plugin.cs | 66 +-- dotnet/test/Extism.Sdk/BasicTests.cs | 19 +- dune-project | 1 + elixir/Makefile | 2 +- elixir/README.md | 25 +- elixir/lib/extism/cancel_handle.ex | 2 +- elixir/lib/extism/context.ex | 64 --- elixir/lib/extism/native.ex | 14 +- elixir/lib/extism/plugin.ex | 50 +- elixir/native/extism_nif/Cargo.toml | 2 +- elixir/native/extism_nif/src/lib.rs | 165 ++---- elixir/test/extism_test.exs | 42 +- extism.go | 197 ++----- extism.opam | 1 + extism_test.go | 71 +-- haskell/Example.hs | 13 +- haskell/extism.cabal | 5 +- haskell/manifest/Extism/JSON.hs | 4 +- haskell/manifest/Extism/Manifest.hs | 10 +- haskell/src/Extism.hs | 292 ++++------ haskell/src/Extism/Bindings.hs | 26 +- haskell/src/Extism/CurrentPlugin.hs | 48 -- haskell/src/Extism/HostFunction.hs | 157 ++++++ haskell/test/Test.hs | 49 +- .../src/main/java/org/extism/sdk/Context.java | 90 --- java/src/main/java/org/extism/sdk/Extism.java | 6 +- .../main/java/org/extism/sdk/LibExtism.java | 87 +-- java/src/main/java/org/extism/sdk/Plugin.java | 114 +--- .../java/org/extism/sdk/ContextTests.java | 23 - .../test/java/org/extism/sdk/PluginTests.java | 75 +-- libextism/Cargo.toml | 12 +- libextism/src/lib.rs | 2 +- manifest/Cargo.toml | 2 +- manifest/src/lib.rs | 15 +- node/example.js | 6 - node/src/index.ts | 329 +++-------- node/tests/index.test.ts | 138 ++--- ocaml/.ocamlformat | 2 +- ocaml/bin/main.ml | 1 + ocaml/lib/bindings.ml | 49 +- ocaml/lib/context.ml | 19 - ocaml/lib/current_plugin.ml | 16 +- ocaml/lib/dune | 2 +- ocaml/lib/extism.ml | 5 +- ocaml/lib/extism.mli | 71 +-- ocaml/lib/plugin.ml | 143 +++-- php/example/index.php | 6 - php/src/Context.php | 34 -- php/src/Plugin.php | 73 +-- python/example.py | 2 + python/extism/__init__.py | 1 - python/extism/extism.py | 157 +----- python/tests/test_extism.py | 124 ++--- ruby/GETTING_STARTED.md | 20 +- ruby/lib/extism.rb | 188 ++----- ruby/test/test_extism.rb | 66 +-- runtime/Cargo.toml | 14 +- runtime/build.rs | 6 +- runtime/extism.h | 105 ++-- runtime/src/context.rs | 145 ----- runtime/src/current_plugin.rs | 374 +++++++++++++ runtime/src/function.rs | 23 +- runtime/src/internal.rs | 329 +---------- runtime/src/lib.rs | 70 ++- runtime/src/manifest.rs | 92 ++-- runtime/src/pdk.rs | 92 ++-- runtime/src/plugin.rs | 490 ++++++++++++----- {rust => runtime}/src/plugin_builder.rs | 40 +- runtime/src/plugin_ref.rs | 95 ---- runtime/src/sdk.rs | 514 ++++++------------ runtime/src/tests.rs | 245 +++++++++ runtime/src/timer.rs | 28 +- rust/Cargo.toml | 17 - rust/Makefile | 2 - rust/src/bindings.rs | 309 ----------- rust/src/context.rs | 34 -- rust/src/lib.rs | 322 ----------- rust/src/plugin.rs | 284 ---------- zig/examples/basic.zig | 6 +- zig/src/context.zig | 31 -- zig/src/current_plugin.zig | 9 +- zig/src/main.zig | 1 - zig/src/plugin.zig | 101 +--- zig/test.zig | 18 +- 94 files changed, 2559 insertions(+), 5003 deletions(-) delete mode 100644 dotnet/src/Extism.Sdk/Context.cs delete mode 100644 elixir/lib/extism/context.ex delete mode 100644 haskell/src/Extism/CurrentPlugin.hs create mode 100644 haskell/src/Extism/HostFunction.hs delete mode 100644 java/src/main/java/org/extism/sdk/Context.java delete mode 100644 java/src/test/java/org/extism/sdk/ContextTests.java delete mode 100644 ocaml/lib/context.ml delete mode 100644 runtime/src/context.rs create mode 100644 runtime/src/current_plugin.rs rename {rust => runtime}/src/plugin_builder.rs (57%) delete mode 100644 runtime/src/plugin_ref.rs create mode 100644 runtime/src/tests.rs delete mode 100644 rust/Cargo.toml delete mode 100644 rust/Makefile delete mode 100644 rust/src/bindings.rs delete mode 100644 rust/src/context.rs delete mode 100644 rust/src/lib.rs delete mode 100644 rust/src/plugin.rs delete mode 100644 zig/src/context.zig diff --git a/.github/workflows/ci-rust.yml b/.github/workflows/ci-rust.yml index 4e58c7c50..58ba496ee 100644 --- a/.github/workflows/ci-rust.yml +++ b/.github/workflows/ci-rust.yml @@ -12,9 +12,8 @@ on: name: Rust CI env: - RUNTIME_CRATE: extism-runtime + RUNTIME_CRATE: extism LIBEXTISM_CRATE: libextism - RUST_SDK_CRATE: extism jobs: lib: @@ -86,20 +85,9 @@ jobs: - name: Lint run: cargo clippy --release --all-features --no-deps -p ${{ env.RUNTIME_CRATE }} - name: Test + run: cargo test --release -p ${{ env.RUNTIME_CRATE }} + - name: Test all features run: cargo test --all-features --release -p ${{ env.RUNTIME_CRATE }} + - name: Test no features + run: cargo test --no-default-features --release -p ${{ env.RUNTIME_CRATE }} - rust: - name: Rust - needs: lib - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest] - rust: - - stable - steps: - - name: Checkout sources - uses: actions/checkout@v3 - - uses: ./.github/actions/extism - - name: Test Rust Host SDK - run: LD_LIBRARY_PATH=/usr/local/lib cargo test --release -p ${{ env.RUST_SDK_CRATE }} diff --git a/.github/workflows/release-rust.yaml b/.github/workflows/release-rust.yaml index f656c2ee6..57478aec2 100644 --- a/.github/workflows/release-rust.yaml +++ b/.github/workflows/release-rust.yaml @@ -26,14 +26,12 @@ jobs: # order of crate publication matter: manifest, runtime, rust cargo publish --manifest-path manifest/Cargo.toml # allow for crates.io to update so dependant crates can locate extism-manifest - sleep 5 + sleep 10 - - name: Release Rust Host SDK + - name: Release Runtime env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} run: | - cargo publish --manifest-path runtime/Cargo.toml --no-verify - cargo publish --manifest-path rust/Cargo.toml diff --git a/.ocamlformat b/.ocamlformat index 449bdd8e0..ed7d4b31d 100644 --- a/.ocamlformat +++ b/.ocamlformat @@ -1 +1 @@ -version = 0.24.1 +version = 0.26.0 diff --git a/Cargo.toml b/Cargo.toml index 66e951fe2..f272fb0ca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,6 @@ members = [ "manifest", "runtime", - "rust", "libextism", ] exclude = ["kernel"] diff --git a/c/main.c b/c/main.c index 6b6bb8783..33a1442c8 100644 --- a/c/main.c +++ b/c/main.c @@ -53,30 +53,29 @@ int main(int argc, char *argv[]) { exit(1); } - ExtismContext *ctx = extism_context_new(); - size_t len = 0; uint8_t *data = read_file("../wasm/code-functions.wasm", &len); ExtismValType inputs[] = {I64}; ExtismValType outputs[] = {I64}; ExtismFunction *f = extism_function_new("hello_world", inputs, 1, outputs, 1, hello_world, "Hello, again!", NULL); - ExtismPlugin plugin = - extism_plugin_new(ctx, data, len, (const ExtismFunction **)&f, 1, true); + + char *errmsg = NULL; + ExtismPlugin *plugin = extism_plugin_new( + data, len, (const ExtismFunction **)&f, 1, true, &errmsg); free(data); - if (plugin < 0) { - puts(extism_error(ctx, -1)); + if (plugin == NULL) { + puts(errmsg); + extism_plugin_new_error_free(errmsg); exit(1); } - assert(extism_plugin_call(ctx, plugin, "count_vowels", (uint8_t *)argv[1], + + assert(extism_plugin_call(plugin, "count_vowels", (uint8_t *)argv[1], strlen(argv[1])) == 0); - ExtismSize out_len = extism_plugin_output_length(ctx, plugin); - const uint8_t *output = extism_plugin_output_data(ctx, plugin); + ExtismSize out_len = extism_plugin_output_length(plugin); + const uint8_t *output = extism_plugin_output_data(plugin); write(STDOUT_FILENO, output, out_len); write(STDOUT_FILENO, "\n", 1); - - extism_plugin_free(ctx, plugin); - extism_function_free(f); - extism_context_free(ctx); + extism_plugin_free(plugin); return 0; } diff --git a/cpp/extism.hpp b/cpp/extism.hpp index c14906616..820fe008e 100644 --- a/cpp/extism.hpp +++ b/cpp/extism.hpp @@ -221,6 +221,7 @@ class Buffer { typedef ExtismValType ValType; typedef ExtismValUnion ValUnion; typedef ExtismVal Val; +typedef uint64_t MemoryHandle; class CurrentPlugin { ExtismCurrentPlugin *pointer; @@ -229,16 +230,18 @@ class CurrentPlugin { CurrentPlugin(ExtismCurrentPlugin *p) : pointer(p) {} uint8_t *memory() { return extism_current_plugin_memory(this->pointer); } - ExtismSize memory_length(uint64_t offs) { + uint8_t *memory(MemoryHandle offs) { return this->memory() + offs; } + + ExtismSize memoryLength(MemoryHandle offs) { return extism_current_plugin_memory_length(this->pointer, offs); } - uint64_t alloc(ExtismSize size) { + MemoryHandle alloc(ExtismSize size) { return extism_current_plugin_memory_alloc(this->pointer, size); } - void free(uint64_t offs) { - extism_current_plugin_memory_free(this->pointer, offs); + void free(MemoryHandle handle) { + extism_current_plugin_memory_free(this->pointer, handle); } void returnString(Val &output, const std::string &s) { @@ -256,7 +259,7 @@ class CurrentPlugin { return nullptr; } if (length != nullptr) { - *length = this->memory_length(inp.v.i64); + *length = this->memoryLength(inp.v.i64); } return this->memory() + inp.v.i64; } @@ -318,7 +321,7 @@ class Function { this->func = std::shared_ptr(ptr, extism_function_free); } - void set_namespace(std::string s) { + void setNamespace(std::string s) { extism_function_set_namespace(this->func.get(), s.c_str()); } @@ -336,111 +339,51 @@ class CancelHandle { }; class Plugin { - std::shared_ptr context; - ExtismPlugin plugin; std::vector functions; public: + ExtismPlugin *plugin; // Create a new plugin Plugin(const uint8_t *wasm, ExtismSize length, bool with_wasi = false, - std::vector functions = std::vector(), - std::shared_ptr ctx = std::shared_ptr( - extism_context_new(), extism_context_free)) + std::vector functions = std::vector()) : functions(functions) { std::vector ptrs; for (auto i : this->functions) { ptrs.push_back(i.get()); } - this->plugin = extism_plugin_new(ctx.get(), wasm, length, ptrs.data(), - ptrs.size(), with_wasi); - if (this->plugin < 0) { - const char *err = extism_error(ctx.get(), -1); - throw Error(err == nullptr ? "Unable to load plugin" : err); + + char *errmsg = nullptr; + this->plugin = extism_plugin_new(wasm, length, ptrs.data(), ptrs.size(), + with_wasi, &errmsg); + if (this->plugin == nullptr) { + std::string s(errmsg); + extism_plugin_new_error_free(errmsg); + throw Error(s); } - this->context = ctx; } Plugin(const std::string &str, bool with_wasi = false, - std::vector functions = {}, - std::shared_ptr ctx = std::shared_ptr( - extism_context_new(), extism_context_free)) - : Plugin((const uint8_t *)str.c_str(), str.size(), with_wasi, functions, - ctx) {} + std::vector functions = {}) + : Plugin((const uint8_t *)str.c_str(), str.size(), with_wasi, functions) { + } Plugin(const std::vector &data, bool with_wasi = false, - std::vector functions = {}, - std::shared_ptr ctx = std::shared_ptr( - extism_context_new(), extism_context_free)) - : Plugin(data.data(), data.size(), with_wasi, functions, ctx) {} + std::vector functions = {}) + : Plugin(data.data(), data.size(), with_wasi, functions) {} - CancelHandle cancel_handle() { - return CancelHandle( - extism_plugin_cancel_handle(this->context.get(), this->id())); + CancelHandle cancelHandle() { + return CancelHandle(extism_plugin_cancel_handle(this->plugin)); } #ifndef EXTISM_NO_JSON // Create a new plugin from Manifest Plugin(const Manifest &manifest, bool with_wasi = false, - std::vector functions = {}, - std::shared_ptr ctx = std::shared_ptr( - extism_context_new(), extism_context_free)) { - std::vector ptrs; - for (auto i : this->functions) { - ptrs.push_back(i.get()); - } - - auto buffer = manifest.json(); - this->plugin = - extism_plugin_new(ctx.get(), (const uint8_t *)buffer.c_str(), - buffer.size(), ptrs.data(), ptrs.size(), with_wasi); - if (this->plugin < 0) { - const char *err = extism_error(ctx.get(), -1); - throw Error(err == nullptr ? "Unable to load plugin from manifest" : err); - } - this->context = ctx; - } -#endif + std::vector functions = {}) + : Plugin(manifest.json().c_str(), with_wasi, functions) {} ~Plugin() { - extism_plugin_free(this->context.get(), this->plugin); - this->plugin = -1; - } - - ExtismPlugin id() const { return this->plugin; } - - ExtismContext *get_context() const { return this->context.get(); } - - void update(const uint8_t *wasm, size_t length, bool with_wasi = false, - std::vector functions = {}) { - this->functions = functions; - std::vector ptrs; - for (auto i : this->functions) { - ptrs.push_back(i.get()); - } - bool b = extism_plugin_update(this->context.get(), this->plugin, wasm, - length, ptrs.data(), ptrs.size(), with_wasi); - if (!b) { - const char *err = extism_error(this->context.get(), -1); - throw Error(err == nullptr ? "Unable to update plugin" : err); - } - } - -#ifndef EXTISM_NO_JSON - void update(const Manifest &manifest, bool with_wasi = false, - std::vector functions = {}) { - this->functions = functions; - std::vector ptrs; - for (auto i : this->functions) { - ptrs.push_back(i.get()); - } - auto buffer = manifest.json(); - bool b = extism_plugin_update( - this->context.get(), this->plugin, (const uint8_t *)buffer.c_str(), - buffer.size(), ptrs.data(), ptrs.size(), with_wasi); - if (!b) { - const char *err = extism_error(this->context.get(), -1); - throw Error(err == nullptr ? "Unable to update plugin" : err); - } + extism_plugin_free(this->plugin); + this->plugin = nullptr; } void config(const Config &data) { @@ -457,10 +400,9 @@ class Plugin { #endif void config(const char *json, size_t length) { - bool b = extism_plugin_config(this->context.get(), this->plugin, - (const uint8_t *)json, length); + bool b = extism_plugin_config(this->plugin, (const uint8_t *)json, length); if (!b) { - const char *err = extism_error(this->context.get(), this->plugin); + const char *err = extism_plugin_error(this->plugin); throw Error(err == nullptr ? "Unable to update plugin config" : err); } } @@ -472,10 +414,10 @@ class Plugin { // Call a plugin Buffer call(const std::string &func, const uint8_t *input, ExtismSize input_length) const { - int32_t rc = extism_plugin_call(this->context.get(), this->plugin, - func.c_str(), input, input_length); + int32_t rc = + extism_plugin_call(this->plugin, func.c_str(), input, input_length); if (rc != 0) { - const char *error = extism_error(this->context.get(), this->plugin); + const char *error = extism_plugin_error(this->plugin); if (error == nullptr) { throw Error("extism_call failed"); } @@ -483,10 +425,8 @@ class Plugin { throw Error(error); } - ExtismSize length = - extism_plugin_output_length(this->context.get(), this->plugin); - const uint8_t *ptr = - extism_plugin_output_data(this->context.get(), this->plugin); + ExtismSize length = extism_plugin_output_length(this->plugin); + const uint8_t *ptr = extism_plugin_output_data(this->plugin); return Buffer(ptr, length); } @@ -503,56 +443,13 @@ class Plugin { } // Returns true if the specified function exists - bool function_exists(const std::string &func) const { - return extism_plugin_function_exists(this->context.get(), this->plugin, - func.c_str()); - } -}; - -class Context { -public: - std::shared_ptr pointer; - - // Create a new context; - Context() { - this->pointer = std::shared_ptr(extism_context_new(), - extism_context_free); + bool functionExists(const std::string &func) const { + return extism_plugin_function_exists(this->plugin, func.c_str()); } - - // Create plugin from uint8_t* - Plugin plugin(const uint8_t *wasm, size_t length, bool with_wasi = false, - std::vector functions = {}) const { - return Plugin(wasm, length, with_wasi, functions, this->pointer); - } - - // Create plugin from std::string - Plugin plugin(const std::string &str, bool with_wasi = false, - std::vector functions = {}) const { - return Plugin((const uint8_t *)str.c_str(), str.size(), with_wasi, - functions, this->pointer); - } - - // Create plugin from uint8_t vector - Plugin plugin(const std::vector &data, bool with_wasi = false, - std::vector functions = {}) const { - return Plugin(data.data(), data.size(), with_wasi, functions, - this->pointer); - } - -#ifndef EXTISM_NO_JSON - // Create plugin from Manifest - Plugin plugin(const Manifest &manifest, bool with_wasi = false, - std::vector functions = {}) const { - return Plugin(manifest, with_wasi, functions, this->pointer); - } -#endif - - // Remove all plugins - void reset() { extism_context_reset(this->pointer.get()); } }; // Set global log file for plugins -inline bool set_log_file(const char *filename, const char *level) { +inline bool setLogFile(const char *filename, const char *level) { return extism_log_file(filename, level); } diff --git a/cpp/test/test.cpp b/cpp/test/test.cpp index 61831f96a..ae032f75e 100644 --- a/cpp/test/test.cpp +++ b/cpp/test/test.cpp @@ -1,6 +1,7 @@ #include "../extism.hpp" #include +#include #include @@ -15,16 +16,10 @@ const std::string code = "../../wasm/code.wasm"; namespace { using namespace extism; -TEST(Context, Basic) { - Context context; - ASSERT_NE(context.pointer, nullptr); -} - TEST(Plugin, Manifest) { Manifest manifest = Manifest::path(code); manifest.set_config("a", "1"); - ASSERT_NO_THROW(Plugin plugin(manifest)); Plugin plugin(manifest); Buffer buf = plugin.call("count_vowels", "this is a test"); @@ -37,19 +32,17 @@ TEST(Plugin, BadManifest) { } TEST(Plugin, Bytes) { - Context context; auto wasm = read(code.c_str()); - ASSERT_NO_THROW(Plugin plugin = context.plugin(wasm)); - Plugin plugin = context.plugin(wasm); + ASSERT_NO_THROW(Plugin plugin(wasm)); + Plugin plugin(wasm); Buffer buf = plugin.call("count_vowels", "this is another test"); ASSERT_EQ(buf.string(), "{\"count\": 6}"); } TEST(Plugin, UpdateConfig) { - Context context; auto wasm = read(code.c_str()); - Plugin plugin = context.plugin(wasm); + Plugin plugin(wasm); Config config; config["abc"] = "123"; @@ -57,12 +50,11 @@ TEST(Plugin, UpdateConfig) { } TEST(Plugin, FunctionExists) { - Context context; auto wasm = read(code.c_str()); - Plugin plugin = context.plugin(wasm); + Plugin plugin(wasm); - ASSERT_FALSE(plugin.function_exists("bad_function")); - ASSERT_TRUE(plugin.function_exists("count_vowels")); + ASSERT_FALSE(plugin.functionExists("bad_function")); + ASSERT_TRUE(plugin.functionExists("count_vowels")); } TEST(Plugin, HostFunction) { @@ -85,6 +77,38 @@ TEST(Plugin, HostFunction) { ASSERT_EQ((std::string)buf, "test"); } +void callThread(Plugin *plugin) { + auto buf = plugin->call("count_vowels", "aaa").string(); + ASSERT_EQ(buf.size(), 10); + ASSERT_EQ(buf, "testing123"); +} + +TEST(Plugin, MultipleThreads) { + auto wasm = read("../../wasm/code-functions.wasm"); + auto t = std::vector{ValType::I64}; + Function hello_world = + Function("hello_world", t, t, + [](CurrentPlugin plugin, const std::vector ¶ms, + std::vector &results, void *user_data) { + auto offs = plugin.alloc(10); + memcpy(plugin.memory() + offs, "testing123", 10); + results[0].v.i64 = (int64_t)offs; + }); + auto functions = std::vector{ + hello_world, + }; + Plugin plugin(wasm, true, functions); + + std::vector threads; + for (int i = 0; i < 3; i++) { + threads.push_back(std::thread(callThread, &plugin)); + } + + for (auto &th : threads) { + th.join(); + } +} + }; // namespace int main(int argc, char **argv) { diff --git a/dotnet/samples/Extism.Sdk.Sample/Program.cs b/dotnet/samples/Extism.Sdk.Sample/Program.cs index e6ef5c5ca..e1370bd20 100644 --- a/dotnet/samples/Extism.Sdk.Sample/Program.cs +++ b/dotnet/samples/Extism.Sdk.Sample/Program.cs @@ -4,8 +4,6 @@ using System.Runtime.InteropServices; using System.Text; -var context = new Context(); - var userData = Marshal.StringToHGlobalAnsi("Hello again!"); using var helloWorld = new HostFunction( @@ -30,7 +28,7 @@ void HelloWorld(CurrentPlugin plugin, Span inputs, Span ou } var wasm = File.ReadAllBytes("./code-functions.wasm"); -using var plugin = context.CreatePlugin(wasm, new[] { helloWorld }, withWasi: true); +using var plugin = new Plugin(wasm, new[] { helloWorld }, withWasi: true); var output = Encoding.UTF8.GetString( plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World!")) diff --git a/dotnet/src/Extism.Sdk/Context.cs b/dotnet/src/Extism.Sdk/Context.cs deleted file mode 100644 index 0089aeb2f..000000000 --- a/dotnet/src/Extism.Sdk/Context.cs +++ /dev/null @@ -1,191 +0,0 @@ -using System.Collections.Concurrent; -using System.Diagnostics.CodeAnalysis; -using System.Runtime.InteropServices; - -namespace Extism.Sdk.Native; - -/// -/// Represents an Extism context through which you can load s. -/// -public unsafe class Context : IDisposable -{ - private readonly ConcurrentDictionary _plugins = new ConcurrentDictionary(); - - private const int DisposedMarker = 1; - - private int _disposed; - - /// - /// Initialize a new Extism Context. - /// - public Context() - { - unsafe - { - NativeHandle = LibExtism.extism_context_new(); - } - } - - /// - /// Native pointer to the Extism Context. - /// - internal LibExtism.ExtismContext* NativeHandle { get; } - - /// - /// Loads an Extism . - /// - /// A WASM module (wat or wasm) or a JSON encoded manifest. - /// List of host functions expected by the plugin. - /// Enable/Disable WASI. - public Plugin CreatePlugin(ReadOnlySpan wasm, HostFunction[] functions, bool withWasi) - { - CheckNotDisposed(); - - var functionHandles = functions.Select(f => f.NativeHandle).ToArray(); - - unsafe - { - fixed (byte* wasmPtr = wasm) - fixed (IntPtr* functionsPtr = functionHandles) - { - var index = LibExtism.extism_plugin_new(NativeHandle, wasmPtr, wasm.Length, functionsPtr, functions.Length, withWasi); - if (index == -1) - { - var errorMsg = GetError(); - if (errorMsg != null) - { - throw new ExtismException(errorMsg); - } - else - { - throw new ExtismException("Failed to create plugin."); - } - } - - return _plugins[index] = new Plugin(this, functions, index); - } - } - } - - /// - /// Get a plugin by index. - /// - /// Index of plugin. - /// - public Plugin GetPlugin(int index) - { - return _plugins[index]; - } - - /// - /// Remove all plugins from this 's registry. - /// - public void Reset() - { - CheckNotDisposed(); - - LibExtism.extism_context_reset(NativeHandle); - } - - /// - /// Get this this 's last error. - /// - /// - internal string? GetError() - { - CheckNotDisposed(); - - var result = LibExtism.extism_error(NativeHandle, -1); - return Marshal.PtrToStringUTF8(result); - } - - /// - /// Frees all resources held by this Context. - /// - public void Dispose() - { - if (Interlocked.Exchange(ref _disposed, DisposedMarker) == DisposedMarker) - { - // Already disposed. - return; - } - - Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Throw an appropriate exception if the plugin has been disposed. - /// - /// - protected void CheckNotDisposed() - { - Interlocked.MemoryBarrier(); - if (_disposed == DisposedMarker) - { - ThrowDisposedException(); - } - } - - [DoesNotReturn] - private static void ThrowDisposedException() - { - throw new ObjectDisposedException(nameof(Context)); - } - - /// - /// Frees all resources held by this Context. - /// - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - // Free up any managed resources here - } - - foreach (var plugin in _plugins.Values) - { - plugin.Dispose(); - } - - // Free up unmanaged resources - LibExtism.extism_context_free(NativeHandle); - } - - /// - /// Destructs the current Context and frees all resources used by it. - /// - ~Context() - { - Dispose(false); - } - - /// - /// Get the Extism version string. - /// - public static string GetExtismVersion() - { - var pointer = LibExtism.extism_version(); - return Marshal.PtrToStringUTF8(pointer); - } - - /// - /// Set Extism's log file and level. This is applied for all s. - /// - /// Log file; can be 'stdout' or 'stderr' to write logs to the console. - /// The log level to write at. - public static bool SetExtismLogFile(string logPath, LogLevel level) - { - var logLevel = level switch - { - LogLevel.Error => LibExtism.LogLevels.Error, - LogLevel.Warning => LibExtism.LogLevels.Warn, - LogLevel.Info => LibExtism.LogLevels.Info, - LogLevel.Debug => LibExtism.LogLevels.Debug, - LogLevel.Trace => LibExtism.LogLevels.Trace, - _ => throw new NotImplementedException(), - }; - - return LibExtism.extism_log_file(logPath, logLevel); - } -} diff --git a/dotnet/src/Extism.Sdk/LibExtism.cs b/dotnet/src/Extism.Sdk/LibExtism.cs index 13dfa8c37..03775c447 100644 --- a/dotnet/src/Extism.Sdk/LibExtism.cs +++ b/dotnet/src/Extism.Sdk/LibExtism.cs @@ -97,10 +97,10 @@ public struct ExtismVal internal static class LibExtism { /// - /// A `Context` is used to store and manage plugins. + /// An Extism Plugin /// [StructLayout(LayoutKind.Sequential)] - internal struct ExtismContext { } + internal struct ExtismPlugin { } /// /// Host function signature @@ -180,40 +180,9 @@ internal struct ExtismContext { } [DllImport("extism", EntryPoint = "extism_function_free")] internal static extern void extism_function_free(IntPtr ptr); - /// - /// Create a new context. - /// - /// A pointer to the newly created context. - [DllImport("extism")] - unsafe internal static extern ExtismContext* extism_context_new(); - - /// - /// Remove a context from the registry and free associated memory. - /// - /// - [DllImport("extism")] - unsafe internal static extern void extism_context_free(ExtismContext* context); - /// /// Load a WASM plugin. /// - /// Pointer to the context the plugin will be associated with. - /// A WASM module (wat or wasm) or a JSON encoded manifest. - /// The length of the `wasm` parameter. - /// Array of host function pointers. - /// Number of host functions. - /// Enables/disables WASI. - /// - [DllImport("extism")] - unsafe internal static extern int extism_plugin_new(ExtismContext* context, byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi); - - /// - /// Update a plugin, keeping the existing ID. - /// Similar to but takes an `plugin` argument to specify which plugin to update. - /// Memory for this plugin will be reset upon update. - /// - /// Pointer to the context the plugin is associated with. - /// Pointer to the plugin you want to update. /// A WASM module (wat or wasm) or a JSON encoded manifest. /// The length of the `wasm` parameter. /// Array of host function pointers. @@ -221,82 +190,68 @@ internal struct ExtismContext { } /// Enables/disables WASI. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_update(ExtismContext* context, int plugin, byte* wasm, long wasmSize, Span functions, long nFunctions, bool withWasi); + unsafe internal static extern ExtismPlugin* extism_plugin_new(byte* wasm, int wasmSize, IntPtr* functions, int nFunctions, bool withWasi, IntPtr* errmsg); /// /// Remove a plugin from the registry and free associated memory. /// - /// Pointer to the context the plugin is associated with. /// Pointer to the plugin you want to free. [DllImport("extism")] - unsafe internal static extern void extism_plugin_free(ExtismContext* context, int plugin); - - /// - /// Remove all plugins from the registry. - /// - /// - [DllImport("extism")] - unsafe internal static extern void extism_context_reset(ExtismContext* context); + unsafe internal static extern void extism_plugin_free(ExtismPlugin* plugin); /// /// Update plugin config values, this will merge with the existing values. /// - /// Pointer to the context the plugin is associated with. /// Pointer to the plugin you want to update the configurations for. /// The configuration JSON encoded in UTF8. /// The length of the `json` parameter. /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_config(ExtismContext* context, int plugin, byte* json, int jsonLength); + unsafe internal static extern bool extism_plugin_config(ExtismPlugin* plugin, byte* json, int jsonLength); /// /// Returns true if funcName exists. /// - /// /// /// /// [DllImport("extism")] - unsafe internal static extern bool extism_plugin_function_exists(ExtismContext* context, int plugin, string funcName); + unsafe internal static extern bool extism_plugin_function_exists(ExtismPlugin* plugin, string funcName); /// /// Call a function. /// - /// /// /// The function to call. /// Input data. /// The length of the `data` parameter. /// [DllImport("extism")] - unsafe internal static extern int extism_plugin_call(ExtismContext* context, int plugin, string funcName, byte* data, int dataLen); + unsafe internal static extern int extism_plugin_call(ExtismPlugin* plugin, string funcName, byte* data, int dataLen); /// - /// Get the error associated with a Context or Plugin, if plugin is -1 then the context error will be returned. + /// Get the error associated with a Plugin /// - /// - /// A plugin pointer, or -1 for the context error. + /// A plugin pointer /// [DllImport("extism")] - unsafe internal static extern IntPtr extism_error(ExtismContext* context, nint plugin); + unsafe internal static extern IntPtr extism_plugin_error(ExtismPlugin* plugin); /// /// Get the length of a plugin's output data. /// - /// /// /// [DllImport("extism")] - unsafe internal static extern long extism_plugin_output_length(ExtismContext* context, int plugin); + unsafe internal static extern long extism_plugin_output_length(ExtismPlugin* plugin); /// /// Get the plugin's output data. /// - /// /// /// [DllImport("extism")] - unsafe internal static extern IntPtr extism_plugin_output_data(ExtismContext* context, int plugin); + unsafe internal static extern IntPtr extism_plugin_output_data(ExtismPlugin* plugin); /// /// Set log file and level. @@ -308,11 +263,11 @@ internal struct ExtismContext { } internal static extern bool extism_log_file(string filename, string logLevel); /// - /// Get the Extism version string. + /// Get the Extism Plugin ID, a 16-bit UUID in host order /// /// - [DllImport("extism", EntryPoint = "extism_version")] - internal static extern IntPtr extism_version(); + // [DllImport("extism")] + // unsafe internal static extern IntPtr extism_plugin_id(ExtismPlugin* plugin); /// /// Extism Log Levels diff --git a/dotnet/src/Extism.Sdk/Plugin.cs b/dotnet/src/Extism.Sdk/Plugin.cs index 4d4626bf5..07c12a26a 100644 --- a/dotnet/src/Extism.Sdk/Plugin.cs +++ b/dotnet/src/Extism.Sdk/Plugin.cs @@ -6,51 +6,43 @@ namespace Extism.Sdk.Native; /// /// Represents a WASM Extism plugin. /// -public class Plugin : IDisposable +public unsafe class Plugin : IDisposable { private const int DisposedMarker = 1; - private readonly Context _context; private readonly HostFunction[] _functions; private int _disposed; + /// + /// Native pointer to the Extism Plugin. + /// + internal LibExtism.ExtismPlugin* NativeHandle { get; } + /// /// Create a and load a plug-in - /// Using this constructor will give the plug-in it's own internal Context /// /// A WASM module (wat or wasm) or a JSON encoded manifest. /// List of host functions expected by the plugin. /// Enable/Disable WASI. - public static Plugin Create(ReadOnlySpan wasm, HostFunction[] functions, bool withWasi) { - var context = new Context(); - return context.CreatePlugin(wasm, functions, withWasi); - } - - internal Plugin(Context context, HostFunction[] functions, int index) - { - _context = context; + public Plugin(ReadOnlySpan wasm, HostFunction[] functions, bool withWasi) { _functions = functions; - Index = index; - } + var functionHandles = functions.Select(f => f.NativeHandle).ToArray(); - /// - /// A pointer to the native Plugin struct. - /// - internal int Index { get; } - - /// - /// Update a plugin, keeping the existing ID. - /// - /// The plugin WASM bytes. - /// Enable/Disable WASI. - unsafe public bool Update(ReadOnlySpan wasm, bool withWasi) - { - CheckNotDisposed(); - - var functions = _functions.Select(f => f.NativeHandle).ToArray(); - fixed (byte* wasmPtr = wasm) + unsafe { - return LibExtism.extism_plugin_update(_context.NativeHandle, Index, wasmPtr, wasm.Length, functions, 0, withWasi); + fixed (byte* wasmPtr = wasm) + fixed (IntPtr* functionsPtr = functionHandles) + { + NativeHandle = LibExtism.extism_plugin_new(wasmPtr, wasm.Length, functionsPtr, functions.Length, withWasi, null); + if (NativeHandle == null) + { + throw new ExtismException("Unable to create plugin"); + // TODO: handle error + // var s = Marshal.PtrToStringUTF8(result); + // LibExtism.extism_plugin_new_error_free(errmsg); + // throw new ExtismException(s); + } + } } } @@ -64,7 +56,7 @@ unsafe public bool SetConfig(ReadOnlySpan json) fixed (byte* jsonPtr = json) { - return LibExtism.extism_plugin_config(_context.NativeHandle, Index, jsonPtr, json.Length); + return LibExtism.extism_plugin_config(NativeHandle, jsonPtr, json.Length); } } @@ -75,7 +67,7 @@ unsafe public bool FunctionExists(string name) { CheckNotDisposed(); - return LibExtism.extism_plugin_function_exists(_context.NativeHandle, Index, name); + return LibExtism.extism_plugin_function_exists(NativeHandle, name); } /// @@ -93,7 +85,7 @@ unsafe public ReadOnlySpan CallFunction(string functionName, ReadOnlySpan< fixed (byte* dataPtr = data) { - int response = LibExtism.extism_plugin_call(_context.NativeHandle, Index, functionName, dataPtr, data.Length); + int response = LibExtism.extism_plugin_call(NativeHandle, functionName, dataPtr, data.Length); if (response == 0) { return OutputData(); @@ -121,7 +113,7 @@ unsafe internal int OutputLength() { CheckNotDisposed(); - return (int)LibExtism.extism_plugin_output_length(_context.NativeHandle, Index); + return (int)LibExtism.extism_plugin_output_length(NativeHandle); } /// @@ -135,7 +127,7 @@ internal ReadOnlySpan OutputData() unsafe { - var ptr = LibExtism.extism_plugin_output_data(_context.NativeHandle, Index).ToPointer(); + var ptr = LibExtism.extism_plugin_output_data(NativeHandle).ToPointer(); return new Span(ptr, length); } } @@ -148,7 +140,7 @@ internal ReadOnlySpan OutputData() { CheckNotDisposed(); - var result = LibExtism.extism_error(_context.NativeHandle, Index); + var result = LibExtism.extism_plugin_error(NativeHandle); return Marshal.PtrToStringUTF8(result); } @@ -197,7 +189,7 @@ unsafe protected virtual void Dispose(bool disposing) } // Free up unmanaged resources - LibExtism.extism_plugin_free(_context.NativeHandle, Index); + LibExtism.extism_plugin_free(NativeHandle); } /// diff --git a/dotnet/test/Extism.Sdk/BasicTests.cs b/dotnet/test/Extism.Sdk/BasicTests.cs index 37612ac27..f375dba97 100644 --- a/dotnet/test/Extism.Sdk/BasicTests.cs +++ b/dotnet/test/Extism.Sdk/BasicTests.cs @@ -10,25 +10,12 @@ namespace Extism.Sdk.Tests; public class BasicTests { - [Fact] - public void CountHelloWorldVowelsWithoutContext() - { - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; - var wasm = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm")); - using var plugin = Plugin.Create(wasm, Array.Empty(), withWasi: true); - - var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); - Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); - } - [Fact] public void CountHelloWorldVowels() { - using var context = new Context(); - var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; var wasm = File.ReadAllBytes(Path.Combine(binDirectory, "code.wasm")); - using var plugin = context.CreatePlugin(wasm, Array.Empty(), withWasi: true); + using var plugin = new Plugin(wasm, Array.Empty(), withWasi: true); var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); @@ -37,8 +24,6 @@ public void CountHelloWorldVowels() [Fact] public void CountVowelsHostFunctions() { - using var context = new Context(); - var userData = Marshal.StringToHGlobalAnsi("Hello again!"); using var helloWorld = new HostFunction( @@ -51,7 +36,7 @@ public void CountVowelsHostFunctions() var binDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!; var wasm = File.ReadAllBytes(Path.Combine(binDirectory, "code-functions.wasm")); - using var plugin = context.CreatePlugin(wasm, new[] { helloWorld }, withWasi: true); + using var plugin = new Plugin(wasm, new[] { helloWorld }, withWasi: true); var response = plugin.CallFunction("count_vowels", Encoding.UTF8.GetBytes("Hello World")); Assert.Equal("{\"count\": 3}", Encoding.UTF8.GetString(response)); diff --git a/dune-project b/dune-project index e6817dce4..da70b9a52 100644 --- a/dune-project +++ b/dune-project @@ -29,6 +29,7 @@ (extism-manifest (= :version)) (ppx_inline_test (>= v0.15.0)) (cmdliner (>= 1.1.1)) + (uuidm (>= 0.9.0)) ) (tags (topics wasm plugin))) diff --git a/elixir/Makefile b/elixir/Makefile index 89034cdcf..a8894c7a6 100644 --- a/elixir/Makefile +++ b/elixir/Makefile @@ -5,7 +5,7 @@ prepare: mix compile test: prepare - mix test + mix test -v clean: mix clean diff --git a/elixir/README.md b/elixir/README.md index 594838494..8bfb5af4e 100644 --- a/elixir/README.md +++ b/elixir/README.md @@ -23,12 +23,9 @@ end ### Example ```elixir -# Create a context for which plugins can be allocated and cleaned -ctx = Extism.Context.new() - # point to some wasm code, this is the count_vowels example that ships with extism manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]} -{:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false) +{:ok, plugin} = Extism.Plugin.new(manifest, false) # {:ok, # %Extism.Plugin{ # resource: 0, @@ -38,36 +35,20 @@ manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]} # {:ok, "{\"count\": 4}"} {:ok, result} = JSON.decode(output) # {:ok, %{"count" => 4}} - -# free up the context and any plugins we allocated -Extism.Context.free(ctx) ``` ### Modules -The two primary modules you should learn are: +The primary modules you should learn is: -* [Extism.Context](Extism.Context.html) * [Extism.Plugin](Extism.Plugin.html) -#### Context - -The [Context](Extism.Context.html) can be thought of as a session. You need a context to interact with the Extism runtime. The context holds your plugins and when you free the context, it frees your plugins. It's important to free up your context and plugins when you are done with them. - -```elixir -ctx = Extism.Context.new() -# frees all the plugins -Extism.Context.reset(ctx) -# frees the context and all its plugins -Extism.Context.free(ctx) -``` - #### Plugin The [Plugin](Extism.Plugin.html) represents an instance of your WASM program from the given manifest. The key method to know here is [Extism.Plugin#call](Extism.Plugin.html#call/3) which takes a function name to invoke and some input data, and returns the results from the plugin. ```elixir -{:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false) +{:ok, plugin} = Extism.Plugin.new(manifest, false) {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") ``` diff --git a/elixir/lib/extism/cancel_handle.ex b/elixir/lib/extism/cancel_handle.ex index 803a2b397..474dbd6bd 100644 --- a/elixir/lib/extism/cancel_handle.ex +++ b/elixir/lib/extism/cancel_handle.ex @@ -4,7 +4,7 @@ defmodule Extism.CancelHandle do thread while running. """ defstruct [ - # The actual NIF Resource. PluginIndex and the context + # The actual NIF Resource handle: nil ] diff --git a/elixir/lib/extism/context.ex b/elixir/lib/extism/context.ex deleted file mode 100644 index 93effcf50..000000000 --- a/elixir/lib/extism/context.ex +++ /dev/null @@ -1,64 +0,0 @@ -defmodule Extism.Context do - @moduledoc """ - A Context is needed to create plugins. The Context is where your plugins - live. Freeing the context frees all of the plugins in its scope. - """ - - defstruct [ - # The actual NIF Resource. A pointer in this case - ptr: nil - ] - - def wrap_resource(ptr) do - %__MODULE__{ - ptr: ptr - } - end - - @doc """ - Creates a new context. - """ - def new() do - ptr = Extism.Native.context_new() - Extism.Context.wrap_resource(ptr) - end - - @doc """ - Resets the context. This has the effect of freeing all the plugins created so far. - """ - def reset(ctx) do - Extism.Native.context_reset(ctx.ptr) - end - - @doc """ - Frees the context from memory and all of its plugins. - """ - def free(ctx) do - Extism.Native.context_free(ctx.ptr) - end - - @doc """ - Create a new plugin from a WASM module or manifest - - ## Examples: - - iex> ctx = Extism.Context.new() - iex> manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]} - iex> {:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false) - - ## Parameters - - - ctx: The Context to manage this plugin - - manifest: The String or Map of the WASM module or [manifest](https://extism.org/docs/concepts/manifest) - - wasi: A bool you set to true if you want WASI support - - """ - def new_plugin(ctx, manifest, wasi \\ false) do - {:ok, manifest_payload} = JSON.encode(manifest) - - case Extism.Native.plugin_new_with_manifest(ctx.ptr, manifest_payload, wasi) do - {:error, err} -> {:error, err} - res -> {:ok, Extism.Plugin.wrap_resource(ctx, res)} - end - end -end diff --git a/elixir/lib/extism/native.ex b/elixir/lib/extism/native.ex index b7eeae300..771b12416 100644 --- a/elixir/lib/extism/native.ex +++ b/elixir/lib/extism/native.ex @@ -7,16 +7,12 @@ defmodule Extism.Native do otp_app: :extism, crate: :extism_nif - def context_new(), do: error() - def context_reset(_ctx), do: error() - def context_free(_ctx), do: error() - def plugin_new_with_manifest(_ctx, _manifest, _wasi), do: error() - def plugin_call(_ctx, _plugin_id, _name, _input), do: error() - def plugin_update_manifest(_ctx, _plugin_id, _manifest, _wasi), do: error() - def plugin_has_function(_ctx, _plugin_id, _function_name), do: error() - def plugin_free(_ctx, _plugin_id), do: error() + def plugin_new_with_manifest(_manifest, _wasi), do: error() + def plugin_call(_plugin, _name, _input), do: error() + def plugin_has_function(_plugin, _function_name), do: error() + def plugin_free(_plugin), do: error() def set_log_file(_filename, _level), do: error() - def plugin_cancel_handle(_ctx, _plugin_id), do: error() + def plugin_cancel_handle(_plugin), do: error() def plugin_cancel(_handle), do: error() defp error, do: :erlang.nif_error(:nif_not_loaded) diff --git a/elixir/lib/extism/plugin.ex b/elixir/lib/extism/plugin.ex index 74450faed..9c99eb724 100644 --- a/elixir/lib/extism/plugin.ex +++ b/elixir/lib/extism/plugin.ex @@ -3,28 +3,25 @@ defmodule Extism.Plugin do A Plugin represents an instance of your WASM program from the given manifest. """ defstruct [ - # The actual NIF Resource. PluginIndex and the context - plugin_id: nil, - ctx: nil + # The actual NIF Resource + plugin: nil, ] - def wrap_resource(ctx, plugin_id) do + def wrap_resource(plugin) do %__MODULE__{ - ctx: ctx, - plugin_id: plugin_id + plugin: plugin } end @doc """ Creates a new plugin """ - def new(manifest, wasi \\ false, context \\ nil) do - ctx = context || Extism.Context.new() + def new(manifest, wasi \\ false) do {:ok, manifest_payload} = JSON.encode(manifest) - case Extism.Native.plugin_new_with_manifest(ctx.ptr, manifest_payload, wasi) do + case Extism.Native.plugin_new_with_manifest(manifest_payload, wasi) do {:error, err} -> {:error, err} - res -> {:ok, Extism.Plugin.wrap_resource(ctx, res)} + res -> {:ok, Extism.Plugin.wrap_resource(res)} end end @@ -49,49 +46,24 @@ defmodule Extism.Plugin do """ def call(plugin, name, input) do - case Extism.Native.plugin_call(plugin.ctx.ptr, plugin.plugin_id, name, input) do + case Extism.Native.plugin_call(plugin.plugin, name, input) do {:error, err} -> {:error, err} res -> {:ok, res} end end - @doc """ - Updates the manifest of the given plugin - - ## Parameters - - - ctx: The Context to manage this plugin - - manifest: The String or Map of the WASM module or [manifest](https://extism.org/docs/concepts/manifest) - - wasi: A bool you set to true if you want WASI support - - - """ - def update(plugin, manifest, wasi) when is_map(manifest) do - {:ok, manifest_payload} = JSON.encode(manifest) - - case Extism.Native.plugin_update_manifest( - plugin.ctx.ptr, - plugin.plugin_id, - manifest_payload, - wasi - ) do - {:error, err} -> {:error, err} - _ -> :ok - end - end - @doc """ Frees the plugin """ def free(plugin) do - Extism.Native.plugin_free(plugin.ctx.ptr, plugin.plugin_id) + Extism.Native.plugin_free(plugin.plugin) end @doc """ Returns true if the given plugin responds to the given function name """ def has_function(plugin, function_name) do - Extism.Native.plugin_has_function(plugin.ctx.ptr, plugin.plugin_id, function_name) + Extism.Native.plugin_has_function(plugin.plugin, function_name) end end @@ -99,6 +71,6 @@ defimpl Inspect, for: Extim.Plugin do import Inspect.Algebra def inspect(dict, opts) do - concat(["#Extism.Plugin<", to_doc(dict.plugin_id, opts), ">"]) + concat(["#Extism.Plugin<", to_doc(dict.plugin, opts), ">"]) end end diff --git a/elixir/native/extism_nif/Cargo.toml b/elixir/native/extism_nif/Cargo.toml index 95f47b060..c7dca086c 100644 --- a/elixir/native/extism_nif/Cargo.toml +++ b/elixir/native/extism_nif/Cargo.toml @@ -14,5 +14,5 @@ crate-type = ["cdylib"] [dependencies] rustler = "0.28.0" -extism = "0.5.0" +extism = {path = "../../../runtime"} # "0.5.0" log = "0.4" diff --git a/elixir/native/extism_nif/src/lib.rs b/elixir/native/extism_nif/src/lib.rs index dd46cc030..10df6994d 100644 --- a/elixir/native/extism_nif/src/lib.rs +++ b/elixir/native/extism_nif/src/lib.rs @@ -1,6 +1,5 @@ -use extism::{Context, Plugin}; +use extism::Plugin; use rustler::{Atom, Env, ResourceArc, Term}; -use std::mem; use std::path::Path; use std::str; use std::str::FromStr; @@ -14,11 +13,11 @@ mod atoms { } } -struct ExtismContext { - ctx: RwLock, +struct ExtismPlugin { + plugin: RwLock>, } -unsafe impl Sync for ExtismContext {} -unsafe impl Send for ExtismContext {} +unsafe impl Sync for ExtismPlugin {} +unsafe impl Send for ExtismPlugin {} struct ExtismCancelHandle { handle: RwLock, @@ -28,7 +27,7 @@ unsafe impl Sync for ExtismCancelHandle {} unsafe impl Send for ExtismCancelHandle {} fn load(env: Env, _: Term) -> bool { - rustler::resource!(ExtismContext, env); + rustler::resource!(ExtismPlugin, env); rustler::resource!(ExtismCancelHandle, env); true } @@ -37,111 +36,73 @@ fn to_rustler_error(extism_error: extism::Error) -> rustler::Error { rustler::Error::Term(Box::new(extism_error.to_string())) } -#[rustler::nif] -fn context_new() -> ResourceArc { - ResourceArc::new(ExtismContext { - ctx: RwLock::new(Context::new()), - }) -} - -#[rustler::nif] -fn context_reset(ctx: ResourceArc) { - let context = &mut ctx.ctx.write().unwrap(); - context.reset() -} - -#[rustler::nif] -fn context_free(ctx: ResourceArc) { - let context = ctx.ctx.read().unwrap(); - std::mem::drop(context) +fn freed_error() -> rustler::Error { + rustler::Error::Term(Box::new("Plugin has already been freed".to_string())) } #[rustler::nif] fn plugin_new_with_manifest( - ctx: ResourceArc, manifest_payload: String, wasi: bool, -) -> Result { - let context = ctx.ctx.write().unwrap(); - let result = match Plugin::new(&context, manifest_payload, [], wasi) { +) -> Result, rustler::Error> { + let result = match Plugin::new(manifest_payload, [], wasi) { Err(e) => Err(to_rustler_error(e)), - Ok(plugin) => { - let plugin_id = plugin.as_i32(); - // this forget should be safe because the context will clean up - // all it's plugins when it is dropped - mem::forget(plugin); - Ok(plugin_id) - } + Ok(plugin) => Ok(ResourceArc::new(ExtismPlugin { + plugin: RwLock::new(Some(plugin)), + })), }; result } #[rustler::nif] fn plugin_call( - ctx: ResourceArc, - plugin_id: i32, + plugin: ResourceArc, name: String, input: String, ) -> Result { - let context = &ctx.ctx.read().unwrap(); - let mut plugin = unsafe { Plugin::from_id(plugin_id, context) }; - let result = match plugin.call(name, input) { - Err(e) => Err(to_rustler_error(e)), - Ok(result) => match str::from_utf8(result) { - Ok(output) => Ok(output.to_string()), - Err(_e) => Err(rustler::Error::Term(Box::new( - "Could not read output from plugin", - ))), - }, - }; - // this forget should be safe because the context will clean up - // all it's plugins when it is dropped - mem::forget(plugin); - result -} - -#[rustler::nif] -fn plugin_update_manifest( - ctx: ResourceArc, - plugin_id: i32, - manifest_payload: String, - wasi: bool, -) -> Result<(), rustler::Error> { - let context = &ctx.ctx.read().unwrap(); - let mut plugin = unsafe { Plugin::from_id(plugin_id, context) }; - let result = match plugin.update(manifest_payload, [], wasi) { - Ok(()) => Ok(()), - Err(e) => Err(to_rustler_error(e)), - }; - // this forget should be safe because the context will clean up - // all it's plugins when it is dropped - mem::forget(plugin); - result + let mut plugin = plugin.plugin.write().unwrap(); + if let Some(plugin) = &mut *plugin { + let result = match plugin.call(name, input) { + Err(e) => Err(to_rustler_error(e)), + Ok(result) => match str::from_utf8(result) { + Ok(output) => Ok(output.to_string()), + Err(_e) => Err(rustler::Error::Term(Box::new( + "Could not read output from plugin", + ))), + }, + }; + result + } else { + Err(freed_error()) + } } #[rustler::nif] fn plugin_cancel_handle( - ctx: ResourceArc, - plugin_id: i32, + plugin: ResourceArc, ) -> Result, rustler::Error> { - let context = &ctx.ctx.read().unwrap(); - let plugin = unsafe { Plugin::from_id(plugin_id, context) }; - let handle = plugin.cancel_handle(); - Ok(ResourceArc::new(ExtismCancelHandle { - handle: RwLock::new(handle), - })) + let mut plugin = plugin.plugin.write().unwrap(); + if let Some(plugin) = &mut *plugin { + let handle = plugin.cancel_handle(); + Ok(ResourceArc::new(ExtismCancelHandle { + handle: RwLock::new(handle), + })) + } else { + Err(freed_error()) + } } #[rustler::nif] fn plugin_cancel(handle: ResourceArc) -> bool { - handle.handle.read().unwrap().cancel() + handle.handle.read().unwrap().cancel().is_ok() } #[rustler::nif] -fn plugin_free(ctx: ResourceArc, plugin_id: i32) -> Result<(), rustler::Error> { - let context = &ctx.ctx.read().unwrap(); - let plugin = unsafe { Plugin::from_id(plugin_id, context) }; - std::mem::drop(plugin); +fn plugin_free(plugin: ResourceArc) -> Result<(), rustler::Error> { + let mut plugin = plugin.plugin.write().unwrap(); + if let Some(plugin) = plugin.take() { + drop(plugin); + } Ok(()) } @@ -153,42 +114,34 @@ fn set_log_file(filename: String, log_level: String) -> Result { - if extism::set_log_file(path, Some(level)) { - Ok(atoms::ok()) - } else { - Err(rustler::Error::Term(Box::new( - "Did not set log file, received false from the API.", - ))) - } - } + Ok(level) => match extism::set_log_file(path, level) { + Ok(()) => Ok(atoms::ok()), + Err(e) => Err(rustler::Error::Term(Box::new(format!( + "Did not set log file: {e:?}" + )))), + }, } } #[rustler::nif] fn plugin_has_function( - ctx: ResourceArc, - plugin_id: i32, + plugin: ResourceArc, function_name: String, ) -> Result { - let context = &ctx.ctx.read().unwrap(); - let plugin = unsafe { Plugin::from_id(plugin_id, context) }; - let has_function = plugin.has_function(function_name); - // this forget should be safe because the context will clean up - // all it's plugins when it is dropped - mem::forget(plugin); - Ok(has_function) + let mut plugin = plugin.plugin.write().unwrap(); + if let Some(plugin) = &mut *plugin { + let has_function = plugin.function_exists(function_name); + Ok(has_function) + } else { + Err(freed_error()) + } } rustler::init!( "Elixir.Extism.Native", [ - context_new, - context_reset, - context_free, plugin_new_with_manifest, plugin_call, - plugin_update_manifest, plugin_has_function, plugin_cancel_handle, plugin_cancel, diff --git a/elixir/test/extism_test.exs b/elixir/test/extism_test.exs index d24a54911..ec462d61a 100644 --- a/elixir/test/extism_test.exs +++ b/elixir/test/extism_test.exs @@ -2,33 +2,21 @@ defmodule ExtismTest do use ExUnit.Case doctest Extism - test "context create & reset" do - ctx = Extism.Context.new() - path = Path.join([__DIR__, "../../wasm/code.wasm"]) - manifest = %{wasm: [%{path: path}]} - {:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false) - Extism.Context.reset(ctx) - # we should expect an error after resetting context - {:error, _err} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") - end - defp new_plugin() do - ctx = Extism.Context.new() path = Path.join([__DIR__, "../../wasm/code.wasm"]) manifest = %{wasm: [%{path: path}]} - {:ok, plugin} = Extism.Context.new_plugin(ctx, manifest, false) - {ctx, plugin} + {:ok, plugin} = Extism.Plugin.new(manifest, false) + plugin end test "counts vowels" do - {ctx, plugin} = new_plugin() + plugin = new_plugin() {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") assert JSON.decode(output) == {:ok, %{"count" => 4}} - Extism.Context.free(ctx) end test "can make multiple calls on a plugin" do - {ctx, plugin} = new_plugin() + plugin = new_plugin() {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") assert JSON.decode(output) == {:ok, %{"count" => 4}} {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test again") @@ -37,37 +25,24 @@ defmodule ExtismTest do assert JSON.decode(output) == {:ok, %{"count" => 6}} {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "🌎hello🌎world🌎") assert JSON.decode(output) == {:ok, %{"count" => 3}} - Extism.Context.free(ctx) end test "can free a plugin" do - {ctx, plugin} = new_plugin() + plugin = new_plugin() {:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") assert JSON.decode(output) == {:ok, %{"count" => 4}} Extism.Plugin.free(plugin) # Expect an error when calling a plugin that was freed {:error, _err} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") - Extism.Context.free(ctx) - end - - test "can update manifest" do - {ctx, plugin} = new_plugin() - path = Path.join([__DIR__, "../../wasm/code.wasm"]) - manifest = %{wasm: [%{path: path}]} - assert Extism.Plugin.update(plugin, manifest, true) == :ok - Extism.Context.free(ctx) end test "errors on bad manifest" do - ctx = Extism.Context.new() - {:error, _msg} = Extism.Context.new_plugin(ctx, %{"wasm" => 123}, false) - Extism.Context.free(ctx) + {:error, _msg} = Extism.Plugin.new(%{"wasm" => 123}, false) end test "errors on unknown function" do - {ctx, plugin} = new_plugin() + plugin = new_plugin() {:error, _msg} = Extism.Plugin.call(plugin, "unknown", "this is a test") - Extism.Context.free(ctx) end test "set_log_file" do @@ -75,9 +50,8 @@ defmodule ExtismTest do end test "has_function" do - {ctx, plugin} = new_plugin() + plugin = new_plugin() assert Extism.Plugin.has_function(plugin, "count_vowels") assert !Extism.Plugin.has_function(plugin, "unknown") - Extism.Context.free(ctx) end end diff --git a/extism.go b/extism.go index 1c0e0cd5a..ff1957ec4 100644 --- a/extism.go +++ b/extism.go @@ -52,11 +52,6 @@ void extism_val_set_f64(ExtismValUnion* x, double f){ */ import "C" -// Context is used to manage Plugins -type Context struct { - pointer *C.ExtismContext -} - type ValType = C.ExtismValType type Val = C.ExtismVal @@ -81,9 +76,11 @@ type Function struct { // Free a function func (f *Function) Free() { - C.extism_function_free(f.pointer) - f.pointer = nil - f.userData.Delete() + if f.pointer != nil { + C.extism_function_free(f.pointer) + f.pointer = nil + f.userData.Delete() + } } // NewFunction creates a new host function with the given name, input/outputs and optional user data, which can be an @@ -136,45 +133,32 @@ func GetCurrentPlugin(ptr unsafe.Pointer) CurrentPlugin { } } -func (p *CurrentPlugin) Memory(offs uint) []byte { +type MemoryHandle = uint + +func (p *CurrentPlugin) Memory(offs MemoryHandle) []byte { length := C.extism_current_plugin_memory_length(p.pointer, C.uint64_t(offs)) data := unsafe.Pointer(C.extism_current_plugin_memory(p.pointer)) return unsafe.Slice((*byte)(unsafe.Add(data, offs)), C.int(length)) } // Alloc a new memory block of the given length, returning its offset -func (p *CurrentPlugin) Alloc(n uint) uint { +func (p *CurrentPlugin) Alloc(n uint) MemoryHandle { return uint(C.extism_current_plugin_memory_alloc(p.pointer, C.uint64_t(n))) } // Free the memory block specified by the given offset -func (p *CurrentPlugin) Free(offs uint) { +func (p *CurrentPlugin) Free(offs MemoryHandle) { C.extism_current_plugin_memory_free(p.pointer, C.uint64_t(offs)) } // Length returns the number of bytes allocated at the specified offset -func (p *CurrentPlugin) Length(offs uint) uint { - return uint(C.extism_current_plugin_memory_length(p.pointer, C.uint64_t(offs))) -} - -// NewContext creates a new context, it should be freed using the `Free` method -func NewContext() Context { - p := C.extism_context_new() - return Context{ - pointer: p, - } -} - -// Free a context -func (ctx *Context) Free() { - C.extism_context_free(ctx.pointer) - ctx.pointer = nil +func (p *CurrentPlugin) Length(offs MemoryHandle) int { + return int(C.extism_current_plugin_memory_length(p.pointer, C.uint64_t(offs))) } // Plugin is used to call WASM functions type Plugin struct { - ctx *Context - id int32 + ptr *C.ExtismPlugin functions []Function } @@ -234,175 +218,99 @@ func ExtismVersion() string { return C.GoString(C.extism_version()) } -func register(ctx *Context, data []byte, functions []Function, wasi bool) (Plugin, error) { +func register(data []byte, functions []Function, wasi bool) (Plugin, error) { ptr := makePointer(data) functionPointers := []*C.ExtismFunction{} for _, f := range functions { functionPointers = append(functionPointers, f.pointer) } - plugin := C.int32_t(-1) + var plugin *C.ExtismPlugin + errmsg := (*C.char)(nil) if len(functions) == 0 { plugin = C.extism_plugin_new( - ctx.pointer, (*C.uchar)(ptr), C.uint64_t(len(data)), nil, 0, - C._Bool(wasi)) + C._Bool(wasi), + &errmsg) } else { plugin = C.extism_plugin_new( - ctx.pointer, (*C.uchar)(ptr), C.uint64_t(len(data)), &functionPointers[0], C.uint64_t(len(functions)), C._Bool(wasi), + &errmsg, ) } - if plugin < 0 { - err := C.extism_error(ctx.pointer, C.int32_t(-1)) - msg := "Unknown" - if err != nil { - msg = C.GoString(err) - } - - return Plugin{id: -1}, errors.New( + if plugin == nil { + msg := C.GoString(errmsg) + C.extism_plugin_new_error_free(errmsg) + return Plugin{}, errors.New( fmt.Sprintf("Unable to load plugin: %s", msg), ) } - return Plugin{id: int32(plugin), ctx: ctx, functions: functions}, nil -} - -func update(ctx *Context, plugin int32, data []byte, functions []Function, wasi bool) error { - ptr := makePointer(data) - functionPointers := []*C.ExtismFunction{} - for _, f := range functions { - functionPointers = append(functionPointers, f.pointer) - } - - if len(functions) == 0 { - b := bool(C.extism_plugin_update( - ctx.pointer, - C.int32_t(plugin), - (*C.uchar)(ptr), - C.uint64_t(len(data)), - nil, - 0, - C._Bool(wasi), - )) - - if b { - return nil - } - } else { - b := bool(C.extism_plugin_update( - ctx.pointer, - C.int32_t(plugin), - (*C.uchar)(ptr), - C.uint64_t(len(data)), - &functionPointers[0], - C.uint64_t(len(functions)), - C._Bool(wasi), - )) - - if b { - return nil - } - } - - err := C.extism_error(ctx.pointer, C.int32_t(-1)) - msg := "Unknown" - if err != nil { - msg = C.GoString(err) - } - - return errors.New( - fmt.Sprintf("Unable to load plugin: %s", msg), - ) + return Plugin{ptr: plugin, functions: functions}, nil } -// NewPlugin creates a plugin in its own context +// NewPlugin creates a plugin func NewPlugin(module io.Reader, functions []Function, wasi bool) (Plugin, error) { - ctx := NewContext() - return ctx.Plugin(module, functions, wasi) -} - -// NewPlugin creates a plugin in its own context from a manifest -func NewPluginFromManifest(manifest Manifest, functions []Function, wasi bool) (Plugin, error) { - ctx := NewContext() - return ctx.PluginFromManifest(manifest, functions, wasi) -} - -// PluginFromManifest creates a plugin from a `Manifest` -func (ctx *Context) PluginFromManifest(manifest Manifest, functions []Function, wasi bool) (Plugin, error) { - data, err := json.Marshal(manifest) - if err != nil { - return Plugin{id: -1}, err - } - - return register(ctx, data, functions, wasi) -} - -// Plugin creates a plugin from a WASM module -func (ctx *Context) Plugin(module io.Reader, functions []Function, wasi bool) (Plugin, error) { wasm, err := io.ReadAll(module) if err != nil { - return Plugin{id: -1}, err + return Plugin{}, err } - return register(ctx, wasm, functions, wasi) + return register(wasm, functions, wasi) } -// Update a plugin with a new WASM module -func (p *Plugin) Update(module io.Reader, functions []Function, wasi bool) error { - wasm, err := io.ReadAll(module) - if err != nil { - return err - } - p.functions = functions - return update(p.ctx, p.id, wasm, functions, wasi) -} - -// Update a plugin with a new Manifest -func (p *Plugin) UpdateManifest(manifest Manifest, functions []Function, wasi bool) error { +// NewPlugin creates a plugin from a manifest +func NewPluginFromManifest(manifest Manifest, functions []Function, wasi bool) (Plugin, error) { data, err := json.Marshal(manifest) if err != nil { - return err + return Plugin{}, err } - p.functions = functions - return update(p.ctx, p.id, data, functions, wasi) + return register(data, functions, wasi) } // Set configuration values func (plugin Plugin) SetConfig(data map[string][]byte) error { + if plugin.ptr == nil { + return errors.New("Cannot set config, Plugin already freed") + } s, err := json.Marshal(data) if err != nil { return err } ptr := makePointer(s) - C.extism_plugin_config(plugin.ctx.pointer, C.int(plugin.id), (*C.uchar)(ptr), C.uint64_t(len(s))) + C.extism_plugin_config(plugin.ptr, (*C.uchar)(ptr), C.uint64_t(len(s))) return nil } // FunctionExists returns true when the named function is present in the plugin func (plugin Plugin) FunctionExists(functionName string) bool { + if plugin.ptr == nil { + return false + } name := C.CString(functionName) - b := C.extism_plugin_function_exists(plugin.ctx.pointer, C.int(plugin.id), name) + b := C.extism_plugin_function_exists(plugin.ptr, name) C.free(unsafe.Pointer(name)) return bool(b) } // Call a function by name with the given input, returning the output func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) { + if plugin.ptr == nil { + return []byte{}, errors.New("Plugin has already been freed") + } ptr := makePointer(input) name := C.CString(functionName) rc := C.extism_plugin_call( - plugin.ctx.pointer, - C.int32_t(plugin.id), + plugin.ptr, name, (*C.uchar)(ptr), C.uint64_t(len(input)), @@ -410,7 +318,7 @@ func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) { C.free(unsafe.Pointer(name)) if rc != 0 { - err := C.extism_error(plugin.ctx.pointer, C.int32_t(plugin.id)) + err := C.extism_plugin_error(plugin.ptr) msg := "" if err != nil { msg = C.GoString(err) @@ -421,10 +329,10 @@ func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) { ) } - length := C.extism_plugin_output_length(plugin.ctx.pointer, C.int32_t(plugin.id)) + length := C.extism_plugin_output_length(plugin.ptr) if length > 0 { - x := C.extism_plugin_output_data(plugin.ctx.pointer, C.int32_t(plugin.id)) + x := C.extism_plugin_output_data(plugin.ptr) return unsafe.Slice((*byte)(x), C.int(length)), nil } @@ -433,16 +341,11 @@ func (plugin Plugin) Call(functionName string, input []byte) ([]byte, error) { // Free a plugin func (plugin *Plugin) Free() { - if plugin.ctx.pointer == nil { + if plugin.ptr == nil { return } - C.extism_plugin_free(plugin.ctx.pointer, C.int32_t(plugin.id)) - plugin.id = -1 -} - -// Reset removes all registered plugins in a Context -func (ctx Context) Reset() { - C.extism_context_reset(ctx.pointer) + C.extism_plugin_free(plugin.ptr) + plugin.ptr = nil } // ValGetI64 returns an I64 from an ExtismVal, it accepts a pointer to a C.ExtismVal @@ -514,7 +417,7 @@ type CancelHandle struct { } func (p *Plugin) CancelHandle() CancelHandle { - pointer := C.extism_plugin_cancel_handle(p.ctx.pointer, C.int(p.id)) + pointer := C.extism_plugin_cancel_handle(p.ptr) return CancelHandle{pointer} } diff --git a/extism.opam b/extism.opam index fdc603247..14d87bc68 100644 --- a/extism.opam +++ b/extism.opam @@ -19,6 +19,7 @@ depends: [ "extism-manifest" {= version} "ppx_inline_test" {>= "v0.15.0"} "cmdliner" {>= "1.1.1"} + "uuidm" {>= "0.9.0"} "odoc" {with-doc} ] build: [ diff --git a/extism_test.go b/extism_test.go index 9b7f42852..929622f87 100644 --- a/extism_test.go +++ b/extism_test.go @@ -35,16 +35,8 @@ func expectVowelCount(plugin Plugin, input string, count int) error { return nil } -func TestCreateAndFreeContext(t *testing.T) { - ctx := NewContext() - ctx.Free() -} - func TestCallPlugin(t *testing.T) { - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest(false), []Function{}, false) + plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false) if err != nil { t.Error(err) } @@ -61,10 +53,7 @@ func TestCallPlugin(t *testing.T) { } func TestFreePlugin(t *testing.T) { - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest(false), []Function{}, false) + plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false) if err != nil { t.Error(err) } @@ -80,52 +69,8 @@ func TestFreePlugin(t *testing.T) { } } -func TestContextReset(t *testing.T) { - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest(false), []Function{}, false) - if err != nil { - t.Error(err) - } - if err := expectVowelCount(plugin, "this is a test", 4); err != nil { - t.Error(err) - } - - // reset the context dropping all plugins - ctx.Reset() - - if err := expectVowelCount(plugin, "this is a test", 4); err == nil { - t.Fatal("Expected an error after plugin was freed") - } -} - -func TestCanUpdateAManifest(t *testing.T) { - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest(false), []Function{}, false) - if err != nil { - t.Error(err) - } - - if err := expectVowelCount(plugin, "this is a test", 4); err != nil { - t.Error(err) - } - - plugin.UpdateManifest(manifest(false), []Function{}, false) - - // can still call the plugin - if err := expectVowelCount(plugin, "this is a test", 4); err != nil { - t.Error(err) - } -} - func TestFunctionExists(t *testing.T) { - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest(false), []Function{}, false) + plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false) if err != nil { t.Error(err) } @@ -139,10 +84,7 @@ func TestFunctionExists(t *testing.T) { } func TestErrorsOnUnknownFunction(t *testing.T) { - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest(false), []Function{}, false) + plugin, err := NewPluginFromManifest(manifest(false), []Function{}, false) if err != nil { t.Error(err) } @@ -162,10 +104,7 @@ func TestCancel(t *testing.T) { }, } - ctx := NewContext() - defer ctx.Free() - - plugin, err := ctx.PluginFromManifest(manifest, []Function{}, false) + plugin, err := NewPluginFromManifest(manifest, []Function{}, false) if err != nil { t.Error(err) } diff --git a/haskell/Example.hs b/haskell/Example.hs index 04eaea99f..dcc9177f0 100644 --- a/haskell/Example.hs +++ b/haskell/Example.hs @@ -1,13 +1,9 @@ module Main where import Extism -import Extism.CurrentPlugin +import Extism.HostFunction import Extism.Manifest(manifest, wasmFile) -unwrap (Right x) = x -unwrap (Left (ExtismError msg)) = do - error msg - hello plugin params msg = do putStrLn "Hello from Haskell!" putStrLn msg @@ -15,10 +11,11 @@ hello plugin params msg = do return [toI64 offs] main = do - setLogFile "stdout" Error + setLogFile "stdout" LogError let m = manifest [wasmFile "../wasm/code-functions.wasm"] f <- hostFunction "hello_world" [I64] [I64] hello "Hello, again" - plugin <- unwrap <$> createPluginFromManifest m [f] True + plugin <- unwrap <$> pluginFromManifest m [f] True + id <- pluginID plugin + print id res <- unwrap <$> call plugin "count_vowels" (toByteString "this is a test") putStrLn (fromByteString res) - free plugin diff --git a/haskell/extism.cabal b/haskell/extism.cabal index 5ce9a8d46..648ea0150 100644 --- a/haskell/extism.cabal +++ b/haskell/extism.cabal @@ -11,7 +11,7 @@ category: Plugins, WebAssembly extra-doc-files: CHANGELOG.md library - exposed-modules: Extism Extism.CurrentPlugin + exposed-modules: Extism Extism.HostFunction reexported-modules: Extism.Manifest hs-source-dirs: src other-modules: Extism.Bindings @@ -22,7 +22,8 @@ library base >= 4.16.1 && < 5, bytestring >= 0.11.3 && <= 0.12, json >= 0.10 && <= 0.11, - extism-manifest >= 0.0.0 && < 0.4.0 + extism-manifest >= 0.0.0 && < 0.4.0, + uuid >= 1.3 && < 2 test-suite extism-example type: exitcode-stdio-1.0 diff --git a/haskell/manifest/Extism/JSON.hs b/haskell/manifest/Extism/JSON.hs index 506ea3ddb..2bebf4830 100644 --- a/haskell/manifest/Extism/JSON.hs +++ b/haskell/manifest/Extism/JSON.hs @@ -9,7 +9,7 @@ import Data.ByteString.Internal (c2w, w2c) import qualified Data.ByteString.Base64 as B64 import qualified Data.ByteString.Char8 as BS (unpack) -data Nullable a = Null | NotNull a +data Nullable a = Null | NotNull a deriving Eq makeArray x = JSArray [showJSON a | a <- x] isNull JSNull = True @@ -49,7 +49,7 @@ instance JSON a => JSON (Nullable a) where readJSON x = readJSON x -newtype Base64 = Base64 B.ByteString +newtype Base64 = Base64 B.ByteString deriving (Eq, Show) instance JSON Base64 where showJSON (Base64 bs) = showJSON (BS.unpack $ B64.encode bs) diff --git a/haskell/manifest/Extism/Manifest.hs b/haskell/manifest/Extism/Manifest.hs index 5a392d1a7..b2468fc03 100644 --- a/haskell/manifest/Extism/Manifest.hs +++ b/haskell/manifest/Extism/Manifest.hs @@ -9,6 +9,7 @@ newtype Memory = Memory { memoryMaxPages :: Nullable Int } + deriving Eq instance JSON Memory where showJSON (Memory max) = @@ -26,6 +27,7 @@ data HTTPRequest = HTTPRequest , headers :: Nullable [(String, String)] , method :: Nullable String } + deriving Eq makeKV x = object [(k, showJSON v) | (k, v) <- x] @@ -55,6 +57,7 @@ data WasmFile = WasmFile , fileName :: Nullable String , fileHash :: Nullable String } + deriving Eq instance JSON WasmFile where showJSON (WasmFile path name hash) = @@ -80,9 +83,7 @@ data WasmData = WasmData , dataName :: Nullable String , dataHash :: Nullable String } - - - + deriving Eq instance JSON WasmData where showJSON (WasmData bytes name hash) = @@ -110,6 +111,7 @@ data WasmURL = WasmURL , urlName :: Nullable String , urlHash :: Nullable String } + deriving Eq instance JSON WasmURL where @@ -127,7 +129,7 @@ instance JSON WasmURL where Just req -> Ok (WasmURL req name hash) -- | Specifies where to get WASM module data -data Wasm = File WasmFile | Data WasmData | URL WasmURL +data Wasm = File WasmFile | Data WasmData | URL WasmURL deriving Eq instance JSON Wasm where showJSON x = diff --git a/haskell/src/Extism.hs b/haskell/src/Extism.hs index 3c910976c..6fc77ce45 100644 --- a/haskell/src/Extism.hs +++ b/haskell/src/Extism.hs @@ -1,60 +1,69 @@ module Extism ( - module Extism, module Extism.Manifest, - ValType(..), - Val(..) + Function(..), + Plugin(..), + CancelHandle(..), + LogLevel(..), + Error(..), + Result(..), + toByteString, + fromByteString, + extismVersion, + plugin, + pluginFromManifest, + isValid, + setConfig, + setLogFile, + functionExists, + call, + cancelHandle, + cancel, + pluginID, + unwrap ) where -import Data.Int -import Data.Word -import Control.Monad (void) import Foreign.ForeignPtr import Foreign.C.String import Foreign.Ptr import Foreign.Marshal.Array +import Foreign.Marshal.Alloc import Foreign.Storable import Foreign.StablePtr import Foreign.Concurrent -import Foreign.Marshal.Utils (copyBytes, moveBytes) -import Data.ByteString as B +import qualified Data.ByteString as B +import qualified Data.ByteString.Lazy as BL import Data.ByteString.Internal (c2w, w2c) import Data.ByteString.Unsafe (unsafeUseAsCString) -import Data.Bifunctor (second) -import Text.JSON (encode, toJSObject, showJSON) +import qualified Text.JSON (encode, toJSObject, showJSON) import Extism.Manifest (Manifest, toString) import Extism.Bindings +import qualified Data.UUID (UUID, fromByteString) --- | Context for managing plugins -newtype Context = Context (ForeignPtr ExtismContext) - --- | Host function -data Function = Function (ForeignPtr ExtismFunction) (StablePtr ()) +-- | Host function, see 'Extism.HostFunction.hostFunction' +data Function = Function (ForeignPtr ExtismFunction) (StablePtr ()) deriving Eq -- | Plugins can be used to call WASM function -data Plugin = Plugin Context Int32 [Function] +newtype Plugin = Plugin (ForeignPtr ExtismPlugin) deriving Eq -- | Cancellation handle for Plugins newtype CancelHandle = CancelHandle (Ptr ExtismCancelHandle) --- | Access the plugin that is currently executing from inside a host function -type CurrentPlugin = Ptr ExtismCurrentPlugin - -- | Log level -data LogLevel = Error | Warn | Info | Debug | Trace deriving (Show) +data LogLevel = LogError | LogWarn | LogInfo | LogDebug | LogTrace deriving (Show, Eq) -- | Extism error -newtype Error = ExtismError String deriving Show +newtype Error = ExtismError String deriving (Show, Eq) -- | Result type type Result a = Either Error a -- | Helper function to convert a 'String' to a 'ByteString' -toByteString :: String -> ByteString -toByteString x = B.pack (Prelude.map c2w x) +toByteString :: String -> B.ByteString +toByteString x = B.pack (map c2w x) -- | Helper function to convert a 'ByteString' to a 'String' -fromByteString :: ByteString -> String -fromByteString bs = Prelude.map w2c $ B.unpack bs +fromByteString :: B.ByteString -> String +fromByteString bs = map w2c $ B.unpack bs -- | Get the Extism version string extismVersion :: () -> IO String @@ -62,119 +71,55 @@ extismVersion () = do v <- extism_version peekCString v --- | Remove all registered plugins in a 'Context' -reset :: Context -> IO () -reset (Context ctx) = - withForeignPtr ctx extism_context_reset - --- | Create a new 'Context' -newContext :: IO Context -newContext = do - ptr <- extism_context_new - fptr <- Foreign.ForeignPtr.newForeignPtr extism_context_free ptr - return (Context fptr) - --- | Execute a function with a new 'Context' that is destroyed when it returns -withContext :: (Context -> IO a) -> IO a -withContext f = do - ctx <- newContext - f ctx - --- | Execute a function with the provided 'Plugin' as a parameter, then frees the 'Plugin' --- | before returning the result. -withPlugin :: (Plugin -> IO a) -> Plugin -> IO a -withPlugin f plugin = do - res <- f plugin - free plugin - return res - -- | Create a 'Plugin' from a WASM module, `useWasi` determines if WASI should -- | be linked -plugin :: Context -> B.ByteString -> [Function] -> Bool -> IO (Result Plugin) -plugin c wasm functions useWasi = - let nfunctions = fromIntegral (Prelude.length functions) in +plugin :: B.ByteString -> [Function] -> Bool -> IO (Result Plugin) +plugin wasm functions useWasi = + let nfunctions = fromIntegral (length functions) in let length = fromIntegral (B.length wasm) in let wasi = fromInteger (if useWasi then 1 else 0) in - let Context ctx = c in do - funcs <- Prelude.mapM (\(Function ptr _) -> withForeignPtr ptr (\x -> do return x)) functions - withForeignPtr ctx (\ctx -> do + funcs <- mapM (\(Function ptr _) -> withForeignPtr ptr (\x -> do return x)) functions + alloca (\e-> do + let errmsg = (e :: Ptr CString) p <- unsafeUseAsCString wasm (\s -> withArray funcs (\funcs -> - extism_plugin_new ctx (castPtr s) length funcs nfunctions wasi )) - if p < 0 then do - err <- extism_error ctx (-1) - e <- peekCString err + extism_plugin_new (castPtr s) length funcs nfunctions wasi errmsg )) + if p == nullPtr then do + err <- peek errmsg + e <- peekCString err + extism_plugin_new_error_free err return $ Left (ExtismError e) - else - return $ Right (Plugin c p functions)) - --- | Create a 'Plugin' with its own 'Context' -createPlugin :: B.ByteString -> [Function] -> Bool -> IO (Result Plugin) -createPlugin c functions useWasi = do - ctx <- newContext - plugin ctx c functions useWasi + else do + ptr <- Foreign.Concurrent.newForeignPtr p (extism_plugin_free p) + return $ Right (Plugin ptr)) -- | Create a 'Plugin' from a 'Manifest' -pluginFromManifest :: Context -> Manifest -> [Function] -> Bool -> IO (Result Plugin) -pluginFromManifest ctx manifest functions useWasi = +pluginFromManifest :: Manifest -> [Function] -> Bool -> IO (Result Plugin) +pluginFromManifest manifest functions useWasi = let wasm = toByteString $ toString manifest in - plugin ctx wasm functions useWasi - --- | Create a 'Plugin' with its own 'Context' from a 'Manifest' -createPluginFromManifest :: Manifest -> [Function] -> Bool -> IO (Result Plugin) -createPluginFromManifest manifest functions useWasi = do - ctx <- newContext - pluginFromManifest ctx manifest functions useWasi - --- | Update a 'Plugin' with a new WASM module -update :: Plugin -> B.ByteString -> [Function] -> Bool -> IO (Result Plugin) -update (Plugin (Context ctx) id _) wasm functions useWasi = - let nfunctions = fromIntegral (Prelude.length functions) in - let length = fromIntegral (B.length wasm) in - let wasi = fromInteger (if useWasi then 1 else 0) in - do - funcs <- Prelude.mapM (\(Function ptr _ ) -> withForeignPtr ptr (\x -> do return x)) functions - withForeignPtr ctx (\ctx' -> do - b <- unsafeUseAsCString wasm (\s -> - withArray funcs (\funcs -> - extism_plugin_update ctx' id (castPtr s) length funcs nfunctions wasi)) - if b <= 0 then do - err <- extism_error ctx' (-1) - e <- peekCString err - return $ Left (ExtismError e) - else - return (Right (Plugin (Context ctx) id functions))) - --- | Update a 'Plugin' with a new 'Manifest' -updateManifest :: Plugin -> Manifest -> [Function] -> Bool -> IO (Result Plugin) -updateManifest plugin manifest functions useWasi = - let wasm = toByteString $ toString manifest in - update plugin wasm functions useWasi + plugin wasm functions useWasi -- | Check if a 'Plugin' is valid -isValid :: Plugin -> Bool -isValid (Plugin _ p _) = p >= 0 +isValid :: Plugin -> IO Bool +isValid (Plugin p) = withForeignPtr p (\x -> return (x /= nullPtr)) -- | Set configuration values for a plugin setConfig :: Plugin -> [(String, Maybe String)] -> IO Bool -setConfig (Plugin (Context ctx) plugin _) x = - if plugin < 0 - then return False - else - let obj = toJSObject [(k, showJSON v) | (k, v) <- x] in - let bs = toByteString (encode obj) in - let length = fromIntegral (B.length bs) in - unsafeUseAsCString bs (\s -> do - withForeignPtr ctx (\ctx -> do - b <- extism_plugin_config ctx plugin (castPtr s) length - return $ b /= 0)) +setConfig (Plugin plugin) x = + let obj = Text.JSON.toJSObject [(k, Text.JSON.showJSON v) | (k, v) <- x] in + let bs = toByteString (Text.JSON.encode obj) in + let length = fromIntegral (B.length bs) in + unsafeUseAsCString bs (\s -> do + withForeignPtr plugin (\plugin-> do + b <- extism_plugin_config plugin (castPtr s) length + return $ b /= 0)) -levelStr Error = "error" -levelStr Debug = "debug" -levelStr Warn = "warn" -levelStr Trace = "trace" -levelStr Info = "info" +levelStr LogError = "error" +levelStr LogDebug = "debug" +levelStr LogWarn = "warn" +levelStr LogTrace = "trace" +levelStr LogInfo = "info" -- | Set the log file and level, this is a global configuration setLogFile :: String -> LogLevel -> IO Bool @@ -187,43 +132,46 @@ setLogFile filename level = -- | Check if a function exists in the given plugin functionExists :: Plugin -> String -> IO Bool -functionExists (Plugin (Context ctx) plugin _) name = do - withForeignPtr ctx (\ctx -> do - b <- withCString name (extism_plugin_function_exists ctx plugin) +functionExists (Plugin plugin) name = do + withForeignPtr plugin (\plugin -> do + b <- withCString name (extism_plugin_function_exists plugin) if b == 1 then return True else return False) --- | Call a function provided by the given plugin call :: Plugin -> String -> B.ByteString -> IO (Result B.ByteString) -call (Plugin (Context ctx) plugin _) name input = +call (Plugin plugin) name input = let length = fromIntegral (B.length input) in do - withForeignPtr ctx (\ctx -> do + withForeignPtr plugin (\plugin -> do rc <- withCString name (\name -> unsafeUseAsCString input (\input -> - extism_plugin_call ctx plugin name (castPtr input) length)) - err <- extism_error ctx plugin + extism_plugin_call plugin name (castPtr input) length)) + err <- extism_error plugin if err /= nullPtr then do e <- peekCString err return $ Left (ExtismError e) else if rc == 0 then do - length <- extism_plugin_output_length ctx plugin - ptr <- extism_plugin_output_data ctx plugin - buf <- packCStringLen (castPtr ptr, fromIntegral length) + length <- extism_plugin_output_length plugin + ptr <- extism_plugin_output_data plugin + buf <- B.packCStringLen (castPtr ptr, fromIntegral length) return $ Right buf else return $ Left (ExtismError "Call failed")) --- | Free a 'Plugin', this will automatically be called for every plugin --- | associated with a 'Context' when that 'Context' is freed -free :: Plugin -> IO () -free (Plugin (Context ctx) plugin _) = - withForeignPtr ctx (`extism_plugin_free` plugin) +-- | Call a function with a string argument and return a string +callString :: Plugin -> String -> String -> IO (Result String) +callString p name input = do + res <- call p name (toByteString input) + case res of + Left x -> return $ Left x + Right x -> return $ Right (fromByteString x) + -- | Create a new 'CancelHandle' that can be used to cancel a running plugin -- | from another thread. cancelHandle :: Plugin -> IO CancelHandle -cancelHandle (Plugin (Context ctx) plugin _) = do - handle <- withForeignPtr ctx (`extism_plugin_cancel_handle` plugin) +cancelHandle (Plugin plugin) = do + handle <- withForeignPtr plugin extism_plugin_cancel_handle return (CancelHandle handle) -- | Cancel a running plugin using a 'CancelHandle' @@ -231,58 +179,16 @@ cancel :: CancelHandle -> IO Bool cancel (CancelHandle handle) = extism_plugin_cancel handle - --- | Create a new 'Function' that can be called from a 'Plugin' -hostFunction :: String -> [ValType] -> [ValType] -> (CurrentPlugin -> [Val] -> a -> IO [Val]) -> a -> IO Function -hostFunction name params results f v = - let nparams = fromIntegral $ Prelude.length params in - let nresults = fromIntegral $ Prelude.length results in - do - cb <- callbackWrap (callback f :: CCallback) - free <- freePtrWrap freePtr - userData <- newStablePtr (v, free, cb) - let userDataPtr = castStablePtrToPtr userData - x <- withCString name (\name -> do - withArray params (\params -> - withArray results (\results -> do - extism_function_new name params nparams results nresults cb userDataPtr free))) - let freeFn = extism_function_free x - fptr <- Foreign.Concurrent.newForeignPtr x freeFn - return $ Function fptr (castPtrToStablePtr userDataPtr) - - --- | Create a new I32 'Val' -toI32 :: Integral a => a -> Val -toI32 x = ValI32 (fromIntegral x) - --- | Create a new I64 'Val' -toI64 :: Integral a => a -> Val -toI64 x = ValI64 (fromIntegral x) - --- | Create a new F32 'Val' -toF32 :: Float -> Val -toF32 = ValF32 - --- | Create a new F64 'Val' -toF64 :: Double -> Val -toF64 = ValF64 - --- | Get I32 'Val' -fromI32 :: Integral a => Val -> Maybe a -fromI32 (ValI32 x) = Just (fromIntegral x) -fromI32 _ = Nothing - --- | Get I64 'Val' -fromI64 :: Integral a => Val -> Maybe a -fromI64 (ValI64 x) = Just (fromIntegral x) -fromI64 _ = Nothing - --- | Get F32 'Val' -fromF32 :: Val -> Maybe Float -fromF32 (ValF32 x) = Just x -fromF32 _ = Nothing - --- | Get F64 'Val' -fromF64 :: Val -> Maybe Double -fromF64 (ValF64 x) = Just x -fromF64 _ = Nothing \ No newline at end of file +pluginID :: Plugin -> IO Data.UUID.UUID +pluginID (Plugin plugin) = + withForeignPtr plugin (\plugin -> do + ptr <- extism_plugin_id plugin + buf <- B.packCStringLen (castPtr ptr, 16) + case Data.UUID.fromByteString (BL.fromStrict buf) of + Nothing -> error "Invalid Plugin ID" + Just x -> return x) + + +unwrap (Right x) = x +unwrap (Left (ExtismError msg)) = do + error msg diff --git a/haskell/src/Extism/Bindings.hs b/haskell/src/Extism/Bindings.hs index 2632934b7..9954adb45 100644 --- a/haskell/src/Extism/Bindings.hs +++ b/haskell/src/Extism/Bindings.hs @@ -13,7 +13,7 @@ import Foreign.StablePtr type FreeCallback = Ptr () -> IO () -newtype ExtismContext = ExtismContext () deriving Show +newtype ExtismPlugin = ExtismPlugin () deriving Show newtype ExtismFunction = ExtismFunction () deriving Show newtype ExtismCancelHandle = ExtismCancelHandle () deriving Show newtype ExtismCurrentPlugin = ExtismCurrentPlugin () deriving Show @@ -79,21 +79,19 @@ instance Storable ValType where poke ptr x = do pokeByteOff ptr 0 (intOfValType x) -foreign import ccall safe "extism.h extism_context_new" extism_context_new :: IO (Ptr ExtismContext) -foreign import ccall safe "extism.h &extism_context_free" extism_context_free :: FunPtr (Ptr ExtismContext -> IO ()) -foreign import ccall safe "extism.h extism_plugin_new" extism_plugin_new :: Ptr ExtismContext -> Ptr Word8 -> Word64 -> Ptr (Ptr ExtismFunction) -> Word64 -> CBool -> IO Int32 -foreign import ccall safe "extism.h extism_plugin_update" extism_plugin_update :: Ptr ExtismContext -> Int32 -> Ptr Word8 -> Word64 -> Ptr (Ptr ExtismFunction) -> Word64 -> CBool -> IO CBool -foreign import ccall safe "extism.h extism_plugin_call" extism_plugin_call :: Ptr ExtismContext -> Int32 -> CString -> Ptr Word8 -> Word64 -> IO Int32 -foreign import ccall safe "extism.h extism_plugin_function_exists" extism_plugin_function_exists :: Ptr ExtismContext -> Int32 -> CString -> IO CBool -foreign import ccall safe "extism.h extism_error" extism_error :: Ptr ExtismContext -> Int32 -> IO CString -foreign import ccall safe "extism.h extism_plugin_output_length" extism_plugin_output_length :: Ptr ExtismContext -> Int32 -> IO Word64 -foreign import ccall safe "extism.h extism_plugin_output_data" extism_plugin_output_data :: Ptr ExtismContext -> Int32 -> IO (Ptr Word8) +foreign import ccall safe "extism.h extism_plugin_new" extism_plugin_new :: Ptr Word8 -> Word64 -> Ptr (Ptr ExtismFunction) -> Word64 -> CBool -> Ptr CString -> IO (Ptr ExtismPlugin) +foreign import ccall safe "extism.h extism_plugin_call" extism_plugin_call :: Ptr ExtismPlugin -> CString -> Ptr Word8 -> Word64 -> IO Int32 +foreign import ccall safe "extism.h extism_plugin_function_exists" extism_plugin_function_exists :: Ptr ExtismPlugin -> CString -> IO CBool +foreign import ccall safe "extism.h extism_plugin_error" extism_error :: Ptr ExtismPlugin -> IO CString +foreign import ccall safe "extism.h extism_plugin_output_length" extism_plugin_output_length :: Ptr ExtismPlugin -> IO Word64 +foreign import ccall safe "extism.h extism_plugin_output_data" extism_plugin_output_data :: Ptr ExtismPlugin -> IO (Ptr Word8) foreign import ccall safe "extism.h extism_log_file" extism_log_file :: CString -> CString -> IO CBool -foreign import ccall safe "extism.h extism_plugin_config" extism_plugin_config :: Ptr ExtismContext -> Int32 -> Ptr Word8 -> Int64 -> IO CBool -foreign import ccall safe "extism.h extism_plugin_free" extism_plugin_free :: Ptr ExtismContext -> Int32 -> IO () -foreign import ccall safe "extism.h extism_context_reset" extism_context_reset :: Ptr ExtismContext -> IO () +foreign import ccall safe "extism.h extism_plugin_config" extism_plugin_config :: Ptr ExtismPlugin -> Ptr Word8 -> Int64 -> IO CBool +foreign import ccall safe "extism.h extism_plugin_free" extism_plugin_free :: Ptr ExtismPlugin -> IO () +foreign import ccall safe "extism.h extism_plugin_new_error_free" extism_plugin_new_error_free :: CString -> IO () foreign import ccall safe "extism.h extism_version" extism_version :: IO CString -foreign import ccall safe "extism.h extism_plugin_cancel_handle" extism_plugin_cancel_handle :: Ptr ExtismContext -> Int32 -> IO (Ptr ExtismCancelHandle) +foreign import ccall safe "extism.h extism_plugin_id" extism_plugin_id :: Ptr ExtismPlugin -> IO (Ptr Word8) +foreign import ccall safe "extism.h extism_plugin_cancel_handle" extism_plugin_cancel_handle :: Ptr ExtismPlugin -> IO (Ptr ExtismCancelHandle) foreign import ccall safe "extism.h extism_plugin_cancel" extism_plugin_cancel :: Ptr ExtismCancelHandle -> IO Bool foreign import ccall safe "extism.h extism_function_new" extism_function_new :: CString -> Ptr ValType -> Word64 -> Ptr ValType -> Word64 -> FunPtr CCallback -> Ptr () -> FunPtr FreeCallback -> IO (Ptr ExtismFunction) diff --git a/haskell/src/Extism/CurrentPlugin.hs b/haskell/src/Extism/CurrentPlugin.hs deleted file mode 100644 index a9c4fc94c..000000000 --- a/haskell/src/Extism/CurrentPlugin.hs +++ /dev/null @@ -1,48 +0,0 @@ -module Extism.CurrentPlugin where - -import Extism -import Extism.Bindings -import Data.Word -import Data.ByteString as B -import Foreign.Ptr -import Foreign.Marshal.Array - --- | Allocate a new handle of the given size -memoryAlloc :: CurrentPlugin -> Word64 -> IO Word64 -memoryAlloc = extism_current_plugin_memory_alloc - --- | Get the length of a handle, returns 0 if the handle is invalid -memoryLength :: CurrentPlugin -> Word64 -> IO Word64 -memoryLength = extism_current_plugin_memory_length - --- | Free allocated memory -memoryFree :: CurrentPlugin -> Word64 -> IO () -memoryFree = extism_current_plugin_memory_free - --- | Access a pointer to the entire memory region -memory :: CurrentPlugin -> IO (Ptr Word8) -memory = extism_current_plugin_memory - --- | Access a pointer the a specific offset in memory -memoryOffset :: CurrentPlugin -> Word64 -> IO (Ptr Word8) -memoryOffset plugin offs = do - x <- extism_current_plugin_memory plugin - return $ plusPtr x (fromIntegral offs) - --- | Access the data associated with a handle as a 'ByteString' -memoryBytes :: CurrentPlugin -> Word64 -> IO B.ByteString -memoryBytes plugin offs = do - ptr <- memoryOffset plugin offs - len <- memoryLength plugin offs - arr <- peekArray (fromIntegral len) ptr - return $ B.pack arr - --- | Allocate memory and copy an existing 'ByteString' into it -allocBytes :: CurrentPlugin -> B.ByteString -> IO Word64 -allocBytes plugin s = do - let length = B.length s - offs <- memoryAlloc plugin (fromIntegral length) - ptr <- memoryOffset plugin offs - pokeArray ptr (B.unpack s) - return offs - diff --git a/haskell/src/Extism/HostFunction.hs b/haskell/src/Extism/HostFunction.hs new file mode 100644 index 000000000..cdfc01dd3 --- /dev/null +++ b/haskell/src/Extism/HostFunction.hs @@ -0,0 +1,157 @@ +{-# LANGUAGE GeneralizedNewtypeDeriving #-} + +module Extism.HostFunction( + CurrentPlugin(..), + ValType(..), + Val(..), + MemoryHandle, + memoryAlloc, + memoryLength, + memoryFree, + memory, + memoryOffset, + memoryBytes, + memoryString, + allocBytes, + allocString, + toI32, + toI64, + toF32, + toF64, + fromI32, + fromI64, + fromF32, + fromF64, + hostFunction +) where + +import Extism +import Extism.Bindings +import Data.Word +import qualified Data.ByteString as B +import Foreign.Ptr +import Foreign.ForeignPtr +import Foreign.C.String +import Foreign.StablePtr +import Foreign.Concurrent +import Foreign.Marshal.Array +import qualified Data.ByteString.Internal as BS (c2w) + +-- | Access the plugin that is currently executing from inside a host function +type CurrentPlugin = Ptr ExtismCurrentPlugin + +-- | A memory handle represents an allocated block of Extism memory +newtype MemoryHandle = MemoryHandle Word64 deriving (Num, Enum, Eq, Ord, Real, Integral, Show) + +-- | Allocate a new handle of the given size +memoryAlloc :: CurrentPlugin -> Word64 -> IO MemoryHandle +memoryAlloc p n = MemoryHandle <$> extism_current_plugin_memory_alloc p n + +-- | Get the length of a handle, returns 0 if the handle is invalid +memoryLength :: CurrentPlugin -> MemoryHandle -> IO Word64 +memoryLength p (MemoryHandle offs) = extism_current_plugin_memory_length p offs + +-- | Free allocated memory +memoryFree :: CurrentPlugin -> MemoryHandle -> IO () +memoryFree p (MemoryHandle offs) = extism_current_plugin_memory_free p offs + +-- | Access a pointer to the entire memory region +memory :: CurrentPlugin -> IO (Ptr Word8) +memory = extism_current_plugin_memory + +-- | Access the pointer for the given 'MemoryHandle' +memoryOffset :: CurrentPlugin -> MemoryHandle -> IO (Ptr Word8) +memoryOffset plugin (MemoryHandle offs) = do + x <- extism_current_plugin_memory plugin + return $ plusPtr x (fromIntegral offs) + +-- | Access the data associated with a handle as a 'ByteString' +memoryBytes :: CurrentPlugin -> MemoryHandle -> IO B.ByteString +memoryBytes plugin offs = do + ptr <- memoryOffset plugin offs + len <- memoryLength plugin offs + arr <- peekArray (fromIntegral len) ptr + return $ B.pack arr + + +-- | Access the data associated with a handle as a 'String' +memoryString :: CurrentPlugin -> MemoryHandle -> IO String +memoryString plugin offs = do + ptr <- memoryOffset plugin offs + len <- memoryLength plugin offs + arr <- peekArray (fromIntegral len) ptr + return $ fromByteString $ B.pack arr + +-- | Allocate memory and copy an existing 'ByteString' into it +allocBytes :: CurrentPlugin -> B.ByteString -> IO MemoryHandle +allocBytes plugin s = do + let length = B.length s + offs <- memoryAlloc plugin (fromIntegral length) + ptr <- memoryOffset plugin offs + pokeArray ptr (B.unpack s) + return offs + + +-- | Allocate memory and copy an existing 'String' into it +allocString :: CurrentPlugin -> String -> IO MemoryHandle +allocString plugin s = do + let length = Prelude.length s + offs <- memoryAlloc plugin (fromIntegral length) + ptr <- memoryOffset plugin offs + pokeArray ptr (Prelude.map BS.c2w s) + return offs + +-- | Create a new I32 'Val' +toI32 :: Integral a => a -> Val +toI32 x = ValI32 (fromIntegral x) + +-- | Create a new I64 'Val' +toI64 :: Integral a => a -> Val +toI64 x = ValI64 (fromIntegral x) + +-- | Create a new F32 'Val' +toF32 :: Float -> Val +toF32 = ValF32 + +-- | Create a new F64 'Val' +toF64 :: Double -> Val +toF64 = ValF64 + +-- | Get I32 'Val' +fromI32 :: Integral a => Val -> Maybe a +fromI32 (ValI32 x) = Just (fromIntegral x) +fromI32 _ = Nothing + +-- | Get I64 'Val' +fromI64 :: Integral a => Val -> Maybe a +fromI64 (ValI64 x) = Just (fromIntegral x) +fromI64 _ = Nothing + +-- | Get F32 'Val' +fromF32 :: Val -> Maybe Float +fromF32 (ValF32 x) = Just x +fromF32 _ = Nothing + +-- | Get F64 'Val' +fromF64 :: Val -> Maybe Double +fromF64 (ValF64 x) = Just x +fromF64 _ = Nothing + +-- | Create a new 'Function' that can be called from a 'Plugin' +hostFunction :: String -> [ValType] -> [ValType] -> (CurrentPlugin -> [Val] -> a -> IO [Val]) -> a -> IO Function +hostFunction name params results f v = + let nparams = fromIntegral $ length params in + let nresults = fromIntegral $ length results in + do + cb <- callbackWrap (callback f :: CCallback) + free <- freePtrWrap freePtr + userData <- newStablePtr (v, free, cb) + let userDataPtr = castStablePtrToPtr userData + x <- withCString name (\name -> do + withArray params (\params -> + withArray results (\results -> do + extism_function_new name params nparams results nresults cb userDataPtr free))) + let freeFn = extism_function_free x + fptr <- Foreign.Concurrent.newForeignPtr x freeFn + return $ Function fptr (castPtrToStablePtr userDataPtr) + diff --git a/haskell/test/Test.hs b/haskell/test/Test.hs index eddddc96e..621906c66 100644 --- a/haskell/test/Test.hs +++ b/haskell/test/Test.hs @@ -1,35 +1,33 @@ import Test.HUnit import Extism import Extism.Manifest -import Extism.CurrentPlugin +import Extism.HostFunction -unwrap (Right x) = return x -unwrap (Left (ExtismError msg)) = +assertUnwrap (Right x) = return x +assertUnwrap (Left (ExtismError msg)) = assertFailure msg defaultManifest = manifest [wasmFile "../../wasm/code.wasm"] hostFunctionManifest = manifest [wasmFile "../../wasm/code-functions.wasm"] -initPlugin :: Maybe Context -> IO Plugin -initPlugin Nothing = - Extism.createPluginFromManifest defaultManifest [] False >>= unwrap -initPlugin (Just ctx) = - Extism.pluginFromManifest ctx defaultManifest [] False >>= unwrap +initPlugin :: IO Plugin +initPlugin = + Extism.pluginFromManifest defaultManifest [] False >>= assertUnwrap pluginFunctionExists = do - p <- initPlugin Nothing + p <- initPlugin exists <- functionExists p "count_vowels" assertBool "function exists" exists exists' <- functionExists p "function_doesnt_exist" assertBool "function doesn't exist" (not exists') checkCallResult p = do - res <- call p "count_vowels" (toByteString "this is a test") >>= unwrap + res <- call p "count_vowels" (toByteString "this is a test") >>= assertUnwrap assertEqual "count vowels output" "{\"count\": 4}" (fromByteString res) pluginCall = do - p <- initPlugin Nothing + p <- initPlugin checkCallResult p @@ -39,33 +37,25 @@ hello plugin params () = do return [toI64 offs] pluginCallHostFunction = do - p <- Extism.createPluginFromManifest hostFunctionManifest [] False >>= unwrap - res <- call p "count_vowels" (toByteString "this is a test") >>= unwrap + p <- Extism.pluginFromManifest hostFunctionManifest [] False >>= assertUnwrap + res <- call p "count_vowels" (toByteString "this is a test") >>= assertUnwrap assertEqual "count vowels output" "{\"count\": 999}" (fromByteString res) pluginMultiple = do - withContext(\ctx -> do - p <- initPlugin (Just ctx) + p <- initPlugin checkCallResult p - q <- initPlugin (Just ctx) - r <- initPlugin (Just ctx) + q <- initPlugin + r <- initPlugin checkCallResult q - checkCallResult r) - -pluginUpdate = do - withContext (\ctx -> do - p <- initPlugin (Just ctx) - updateManifest p defaultManifest [] True >>= unwrap - checkCallResult p) + checkCallResult r pluginConfig = do - withContext (\ctx -> do - p <- initPlugin (Just ctx) - b <- setConfig p [("a", Just "1"), ("b", Just "2"), ("c", Just "3"), ("d", Nothing)] - assertBool "set config" b) + p <- initPlugin + b <- setConfig p [("a", Just "1"), ("b", Just "2"), ("c", Just "3"), ("d", Nothing)] + assertBool "set config" b testSetLogFile = do - b <- setLogFile "stderr" Extism.Error + b <- setLogFile "stderr" Extism.LogError assertBool "set log file" b t name f = TestLabel name (TestCase f) @@ -77,7 +67,6 @@ main = do , t "Plugin.Call" pluginCall , t "Plugin.CallHostFunction" pluginCallHostFunction , t "Plugin.Multiple" pluginMultiple - , t "Plugin.Update" pluginUpdate , t "Plugin.Config" pluginConfig , t "SetLogFile" testSetLogFile ]) diff --git a/java/src/main/java/org/extism/sdk/Context.java b/java/src/main/java/org/extism/sdk/Context.java deleted file mode 100644 index 505007ade..000000000 --- a/java/src/main/java/org/extism/sdk/Context.java +++ /dev/null @@ -1,90 +0,0 @@ -package org.extism.sdk; - -import com.sun.jna.Pointer; -import org.extism.sdk.manifest.Manifest; - -/** - * Extism Context is used to store and manage plugins. - */ -public class Context implements AutoCloseable { - - /** - * Holds a pointer to the native ExtismContext struct. - */ - private final Pointer contextPointer; - - /** - * Creates a new context. - *

- * A Context is used to manage Plugins - * and make sure they are cleaned up when you are done with them. - */ - public Context() { - this.contextPointer = LibExtism.INSTANCE.extism_context_new(); - } - - /** - * Create a new plugin managed by this context. - * - * @param manifest The manifest for the plugin - * @param withWASI Set to true to enable WASI - * @param functions List of Host functions - * @return the plugin instance - */ - public Plugin newPlugin(Manifest manifest, boolean withWASI, HostFunction[] functions) { - return new Plugin(this, manifest, withWASI, functions); - } - - /** - * Frees the context *and* frees all its Plugins. Use {@link #reset()}, if you just want to - * free the plugins but keep the context. You should ensure this is called when you are done - * with the context. - */ - public void free() { - LibExtism.INSTANCE.extism_context_free(this.contextPointer); - } - - /** - * Resets the context by freeing all its Plugins. Unlike {@link #free()}, it does not - * free the context itself. - */ - public void reset() { - LibExtism.INSTANCE.extism_context_reset(this.contextPointer); - } - - /** - * Get the version string of the linked Extism Runtime. - * - * @return the version - */ - public String getVersion() { - return LibExtism.INSTANCE.extism_version(); - } - - /** - * Get the error associated with a context, if plugin is {@literal null} then the context error will be returned. - * - * @param plugin - * @return the error message - */ - protected String error(Plugin plugin) { - return LibExtism.INSTANCE.extism_error(this.contextPointer, plugin == null ? -1 : plugin.getIndex()); - } - - /** - * Return the raw pointer to this context. - * - * @return the pointer - */ - public Pointer getPointer() { - return this.contextPointer; - } - - /** - * Calls {@link #free()} if used in the context of a TWR block. - */ - @Override - public void close() { - this.free(); - } -} diff --git a/java/src/main/java/org/extism/sdk/Extism.java b/java/src/main/java/org/extism/sdk/Extism.java index 245b922a4..6734652bb 100644 --- a/java/src/main/java/org/extism/sdk/Extism.java +++ b/java/src/main/java/org/extism/sdk/Extism.java @@ -41,10 +41,8 @@ public static void setLogFile(Path path, LogLevel level) { * @throws ExtismException if the call fails */ public static String invokeFunction(Manifest manifest, String function, String input) throws ExtismException { - try (var ctx = new Context()) { - try (var plugin = ctx.newPlugin(manifest, false, null)) { - return plugin.call(function, input); - } + try (var plugin = new Plugin(manifest, false, null)) { + return plugin.call(function, input); } } diff --git a/java/src/main/java/org/extism/sdk/LibExtism.java b/java/src/main/java/org/extism/sdk/LibExtism.java index b05d6ba36..b05fa98d5 100644 --- a/java/src/main/java/org/extism/sdk/LibExtism.java +++ b/java/src/main/java/org/extism/sdk/LibExtism.java @@ -86,23 +86,6 @@ Pointer extism_function_new(String name, */ void extism_current_plugin_memory_free(Pointer plugin, long ptr); - /** - * Create a new context - */ - Pointer extism_context_new(); - - /** - * Free a context - */ - void extism_context_free(Pointer contextPointer); - - /** - * Remove all plugins from the registry. - * - * @param contextPointer - */ - void extism_context_reset(Pointer contextPointer); - /** * Sets the logger to the given path with the given level of verbosity * @@ -113,26 +96,30 @@ Pointer extism_function_new(String name, boolean extism_log_file(String path, String logLevel); /** - * Returns the error associated with a @{@link Context} or @{@link Plugin}, if {@code pluginId} is {@literal -1} then the context error will be returned + * Returns the error associated with a @{@link Plugin} * - * @param contextPointer - * @param pluginId + * @param pluginPointer * @return */ - String extism_error(Pointer contextPointer, int pluginId); + String extism_plugin_error(Pointer pluginPointer); /** * Create a new plugin. * - * @param contextPointer pointer to the {@link Context}. * @param wasm is a WASM module (wat or wasm) or a JSON encoded manifest * @param wasmSize the length of the `wasm` parameter * @param functions host functions * @param nFunctions the number of host functions * @param withWASI enables/disables WASI + * @param errmsg get the error message if the return value is null * @return id of the plugin or {@literal -1} in case of error */ - int extism_plugin_new(Pointer contextPointer, byte[] wasm, long wasmSize, Pointer[] functions, int nFunctions, boolean withWASI); + Pointer extism_plugin_new(byte[] wasm, long wasmSize, Pointer[] functions, int nFunctions, boolean withWASI, Pointer[] errmsg); + + /** + * Free error message from `extism_plugin_new` + */ + void extism_plugin_new_error_free(Pointer errmsg); /** * Returns the Extism version string @@ -143,68 +130,40 @@ Pointer extism_function_new(String name, /** * Calls a function from the @{@link Plugin} at the given {@code pluginIndex}. * - * @param contextPointer - * @param pluginIndex + * @param pluginPointer * @param function_name is the function to call * @param data is the data input data * @param dataLength is the data input data length * @return the result code of the plugin call. {@literal -1} in case of error, {@literal 0} otherwise. */ - int extism_plugin_call(Pointer contextPointer, int pluginIndex, String function_name, byte[] data, int dataLength); + int extism_plugin_call(Pointer pluginPointer, String function_name, byte[] data, int dataLength); /** - * Returns the length of a plugin's output data. - * - * @param contextPointer - * @param pluginIndex + * Returns * @return the length of the output data in bytes. */ - int extism_plugin_output_length(Pointer contextPointer, int pluginIndex); + int extism_plugin_output_length(Pointer pluginPointer); /** - * Returns the plugin's output data. - * - * @param contextPointer - * @param pluginIndex + * @return */ - Pointer extism_plugin_output_data(Pointer contextPointer, int pluginIndex); + Pointer extism_plugin_output_data(Pointer pluginPointer); /** - * Update a plugin, keeping the existing ID. - * Similar to {@link #extism_plugin_new(Pointer, byte[], long, Pointer[], int, boolean)} but takes an {@code pluginIndex} argument to specify which plugin to update. - * Note: Memory for this plugin will be reset upon update. - * - * @param contextPointer - * @param pluginIndex - * @param wasm - * @param length - * @param functions host functions - * @param nFunctions the number of host functions - * @param withWASI - * @return {@literal true} if update was successful + * Remove a plugin from the */ - boolean extism_plugin_update(Pointer contextPointer, int pluginIndex, byte[] wasm, int length, Pointer[] functions, int nFunctions, boolean withWASI); + void extism_plugin_free(Pointer pluginPointer); /** - * Remove a plugin from the registry and free associated memory. - * - * @param contextPointer - * @param pluginIndex - */ - void extism_plugin_free(Pointer contextPointer, int pluginIndex); - - /** - * Update plugin config values, this will merge with the existing values. - * - * @param contextPointer - * @param pluginIndex + * Update plugin config values, this * @param json * @param jsonLength * @return {@literal true} if update was successful */ - boolean extism_plugin_config(Pointer contextPointer, int pluginIndex, byte[] json, int jsonLength); - Pointer extism_plugin_cancel_handle(Pointer contextPointer, int n); - boolean extism_plugin_cancel(Pointer contextPointer); + boolean extism_plugin_config(Pointer pluginPointer, byte[] json, int jsonLength); + Pointer extism_plugin_cancel_handle(Pointer pluginPointer); + boolean extism_plugin_cancel(Pointer cancelHandle); void extism_function_set_namespace(Pointer p, String name); + int strlen(Pointer s); } diff --git a/java/src/main/java/org/extism/sdk/Plugin.java b/java/src/main/java/org/extism/sdk/Plugin.java index f53d4cd6e..7a5500c81 100644 --- a/java/src/main/java/org/extism/sdk/Plugin.java +++ b/java/src/main/java/org/extism/sdk/Plugin.java @@ -13,27 +13,17 @@ public class Plugin implements AutoCloseable { /** - * Holds the Extism {@link Context} that the plugin belongs to. + * Holds the Extism plugin pointer */ - private final Context context; + private final Pointer pluginPointer; /** - * Holds the index of the plugin - */ - private final int index; - - /** - * Constructor for a Plugin. Only expose internally. Plugins should be created and - * managed from {@link org.extism.sdk.Context}. - * - * @param context The context to manage the plugin * @param manifestBytes The manifest for the plugin * @param functions The Host functions for th eplugin * @param withWASI Set to true to enable WASI */ - public Plugin(Context context, byte[] manifestBytes, boolean withWASI, HostFunction[] functions) { + public Plugin(byte[] manifestBytes, boolean withWASI, HostFunction[] functions) { - Objects.requireNonNull(context, "context"); Objects.requireNonNull(manifestBytes, "manifestBytes"); Pointer[] ptrArr = new Pointer[functions == null ? 0 : functions.length]; @@ -43,49 +33,33 @@ public Plugin(Context context, byte[] manifestBytes, boolean withWASI, HostFunct ptrArr[i] = functions[i].pointer; } - Pointer contextPointer = context.getPointer(); - - int index = LibExtism.INSTANCE.extism_plugin_new(contextPointer, manifestBytes, manifestBytes.length, + Pointer[] errormsg = new Pointer[1]; + Pointer p = LibExtism.INSTANCE.extism_plugin_new(manifestBytes, manifestBytes.length, ptrArr, functions == null ? 0 : functions.length, - withWASI); - if (index == -1) { - String error = context.error(this); - throw new ExtismException(error); + withWASI, + errormsg); + if (p == null) { + int errlen = LibExtism.INSTANCE.strlen(errormsg[0]); + byte[] msg = new byte[errlen]; + errormsg[0].read(0, msg, 0, errlen); + LibExtism.INSTANCE.extism_plugin_new_error_free(errormsg[0]); + throw new ExtismException(new String(msg)); } - this.index= index; - this.context = context; - } - - public Plugin(Context context, Manifest manifest, boolean withWASI, HostFunction[] functions) { - this(context, serialize(manifest), withWASI, functions); + this.pluginPointer = p; } - - public Plugin(byte[] manifestBytes, boolean withWASI, HostFunction[] functions) { - this(new Context(), manifestBytes, withWASI, functions); - } - - public Plugin(Manifest manifest, boolean withWASI, HostFunction[] functions) { - this(new Context(), serialize(manifest), withWASI, functions); + this(serialize(manifest), withWASI, functions); } + private static byte[] serialize(Manifest manifest) { Objects.requireNonNull(manifest, "manifest"); return JsonSerde.toJson(manifest).getBytes(StandardCharsets.UTF_8); } - /** - * Getter for the internal index pointer to this plugin. - * - * @return the plugin index - */ - public int getIndex() { - return index; - } - /** * Invoke a function with the given name and input. * @@ -98,19 +72,19 @@ public byte[] call(String functionName, byte[] inputData) { Objects.requireNonNull(functionName, "functionName"); - Pointer contextPointer = context.getPointer(); int inputDataLength = inputData == null ? 0 : inputData.length; - int exitCode = LibExtism.INSTANCE.extism_plugin_call(contextPointer, index, functionName, inputData, inputDataLength); + int exitCode = LibExtism.INSTANCE.extism_plugin_call(this.pluginPointer, functionName, inputData, inputDataLength); if (exitCode == -1) { - String error = context.error(this); + String error = this.error(); throw new ExtismException(error); } - int length = LibExtism.INSTANCE.extism_plugin_output_length(contextPointer, index); - Pointer output = LibExtism.INSTANCE.extism_plugin_output_data(contextPointer, index); + int length = LibExtism.INSTANCE.extism_plugin_output_length(this.pluginPointer); + Pointer output = LibExtism.INSTANCE.extism_plugin_output_data(this.pluginPointer); return output.getByteArray(0, length); } + /** * Invoke a function with the given name and input. * @@ -126,46 +100,21 @@ public String call(String functionName, String input) { var outputBytes = call(functionName, inputBytes); return new String(outputBytes, StandardCharsets.UTF_8); } - + /** - * Update the plugin code given manifest changes + * Get the error associated with a plugin * - * @param manifest The manifest for the plugin - * @param withWASI Set to true to enable WASI - * @return {@literal true} if update was successful + * @return the error message */ - public boolean update(Manifest manifest, boolean withWASI, HostFunction[] functions) { - return update(serialize(manifest), withWASI, functions); + protected String error() { + return LibExtism.INSTANCE.extism_plugin_error(this.pluginPointer); } /** - * Update the plugin code given manifest changes - * - * @param manifestBytes The manifest for the plugin - * @param withWASI Set to true to enable WASI - * @return {@literal true} if update was successful - */ - public boolean update(byte[] manifestBytes, boolean withWASI, HostFunction[] functions) { - Objects.requireNonNull(manifestBytes, "manifestBytes"); - Pointer[] ptrArr = new Pointer[functions == null ? 0 : functions.length]; - - if (functions != null) - for (int i = 0; i < functions.length; i++) { - ptrArr[i] = functions[i].pointer; - } - - return LibExtism.INSTANCE.extism_plugin_update(context.getPointer(), index, manifestBytes, manifestBytes.length, - ptrArr, - functions == null ? 0 : functions.length, - withWASI); - } - - /** - * Frees a plugin from memory. Plugins will be automatically cleaned up - * if you free their parent Context using {@link org.extism.sdk.Context#free() free()} or {@link org.extism.sdk.Context#reset() reset()} + * Frees a plugin from memory */ public void free() { - LibExtism.INSTANCE.extism_plugin_free(context.getPointer(), index); + LibExtism.INSTANCE.extism_plugin_free(this.pluginPointer); } /** @@ -187,7 +136,7 @@ public boolean updateConfig(String json) { */ public boolean updateConfig(byte[] jsonBytes) { Objects.requireNonNull(jsonBytes, "jsonBytes"); - return LibExtism.INSTANCE.extism_plugin_config(context.getPointer(), index, jsonBytes, jsonBytes.length); + return LibExtism.INSTANCE.extism_plugin_config(this.pluginPointer, jsonBytes, jsonBytes.length); } /** @@ -202,10 +151,7 @@ public void close() { * Return a new `CancelHandle`, which can be used to cancel a running Plugin */ public CancelHandle cancelHandle() { - if (this.context.getPointer() == null) { - throw new ExtismException("No Context set"); - } - Pointer handle = LibExtism.INSTANCE.extism_plugin_cancel_handle(this.context.getPointer(), this.index); + Pointer handle = LibExtism.INSTANCE.extism_plugin_cancel_handle(this.pluginPointer); return new CancelHandle(handle); } } diff --git a/java/src/test/java/org/extism/sdk/ContextTests.java b/java/src/test/java/org/extism/sdk/ContextTests.java deleted file mode 100644 index ebd49ca80..000000000 --- a/java/src/test/java/org/extism/sdk/ContextTests.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.extism.sdk; - -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class ContextTests { - - @Test - public void shouldReturnVersionString() { - try (var ctx = new Context()) { - var version = ctx.getVersion(); - assertThat(version).isNotNull(); - } - } - - @Test - public void shouldAllowResetOnEmptyContext() { - try (var ctx = new Context()) { - ctx.reset(); - } - } -} diff --git a/java/src/test/java/org/extism/sdk/PluginTests.java b/java/src/test/java/org/extism/sdk/PluginTests.java index 3923c85ce..8351267cf 100644 --- a/java/src/test/java/org/extism/sdk/PluginTests.java +++ b/java/src/test/java/org/extism/sdk/PluginTests.java @@ -57,17 +57,6 @@ public void shouldFailToInvokeUnknownFunction() { }, "Function not found: unknown"); } - @Test - public void shouldAllowInvokeFunctionFromFileWasmSourceMultipleTimes() { - var wasmSource = CODE.pathWasmSource(); - var manifest = new Manifest(wasmSource); - var output = Extism.invokeFunction(manifest, "count_vowels", "Hello World"); - assertThat(output).isEqualTo("{\"count\": 3}"); - - output = Extism.invokeFunction(manifest, "count_vowels", "Hello World"); - assertThat(output).isEqualTo("{\"count\": 3}"); - } - @Test public void shouldAllowInvokeFunctionFromFileWasmSourceApiUsageExample() { @@ -77,28 +66,24 @@ public void shouldAllowInvokeFunctionFromFileWasmSourceApiUsageExample() { var functionName = "count_vowels"; var input = "Hello World"; - try (var ctx = new Context()) { - try (var plugin = ctx.newPlugin(manifest, false, null)) { - var output = plugin.call(functionName, input); - assertThat(output).isEqualTo("{\"count\": 3}"); - } + try (var plugin = new Plugin(manifest, false, null)) { + var output = plugin.call(functionName, input); + assertThat(output).isEqualTo("{\"count\": 3}"); } } @Test - public void shouldAllowInvokeFunctionFromFileWasmSourceMultipleTimesByReusingContext() { + public void shouldAllowInvokeFunctionFromFileWasmSourceMultipleTimes() { var manifest = new Manifest(CODE.pathWasmSource()); var functionName = "count_vowels"; var input = "Hello World"; - try (var ctx = new Context()) { - try (var plugin = ctx.newPlugin(manifest, false, null)) { - var output = plugin.call(functionName, input); - assertThat(output).isEqualTo("{\"count\": 3}"); + try (var plugin = new Plugin(manifest, false, null)) { + var output = plugin.call(functionName, input); + assertThat(output).isEqualTo("{\"count\": 3}"); - output = plugin.call(functionName, input); - assertThat(output).isEqualTo("{\"count\": 3}"); - } + output = plugin.call(functionName, input); + assertThat(output).isEqualTo("{\"count\": 3}"); } } @@ -140,14 +125,12 @@ public MyUserData(String data1, int data2) { HostFunction[] functions = {helloWorld}; - try (var ctx = new Context()) { - Manifest manifest = new Manifest(Arrays.asList(CODE.pathWasmFunctionsSource())); - String functionName = "count_vowels"; + Manifest manifest = new Manifest(Arrays.asList(CODE.pathWasmFunctionsSource())); + String functionName = "count_vowels"; - try (var plugin = ctx.newPlugin(manifest, true, functions)) { - var output = plugin.call(functionName, "this is a test"); - assertThat(output).isEqualTo("test"); - } + try (var plugin = new Plugin(manifest, true, functions)) { + var output = plugin.call(functionName, "this is a test"); + assertThat(output).isEqualTo("test"); } } @@ -189,30 +172,26 @@ public void shouldAllowInvokeHostFunctionWithoutUserData() { HostFunction[] functions = {f,g}; - try (var ctx = new Context()) { - Manifest manifest = new Manifest(Arrays.asList(CODE.pathWasmFunctionsSource())); - String functionName = "count_vowels"; + Manifest manifest = new Manifest(Arrays.asList(CODE.pathWasmFunctionsSource())); + String functionName = "count_vowels"; - try (var plugin = ctx.newPlugin(manifest, true, functions)) { - var output = plugin.call(functionName, "this is a test"); - assertThat(output).isEqualTo("test"); - } + try (var plugin = new Plugin(manifest, true, functions)) { + var output = plugin.call(functionName, "this is a test"); + assertThat(output).isEqualTo("test"); } } @Test public void shouldFailToInvokeUnknownHostFunction() { - try (var ctx = new Context()) { - Manifest manifest = new Manifest(Arrays.asList(CODE.pathWasmFunctionsSource())); - String functionName = "count_vowels"; - - try { - var plugin = ctx.newPlugin(manifest, true, null); - plugin.call(functionName, "this is a test"); - } catch (ExtismException e) { - assertThat(e.getMessage()).contains("unknown import: `env::hello_world` has not been defined"); - } + Manifest manifest = new Manifest(Arrays.asList(CODE.pathWasmFunctionsSource())); + String functionName = "count_vowels"; + + try { + var plugin = new Plugin(manifest, true, null); + plugin.call(functionName, "this is a test"); + } catch (ExtismException e) { + assertThat(e.getMessage()).contains("unknown import: `env::hello_world` has not been defined"); } } diff --git a/libextism/Cargo.toml b/libextism/Cargo.toml index 5457dbd50..41718571f 100644 --- a/libextism/Cargo.toml +++ b/libextism/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libextism" -version = "0.5.0" +version = "1.0.0-alpha.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" @@ -13,11 +13,11 @@ name = "extism" crate-type = ["cdylib"] [dependencies] -extism-runtime = {path = "../runtime"} +extism = {path = "../runtime"} [features] default = ["http", "register-http", "register-filesystem"] -nn = ["extism-runtime/nn"] -register-http = ["extism-runtime/register-http"] # enables wasm to be downloaded using http -register-filesystem = ["extism-runtime/register-filesystem"] # enables wasm to be loaded from disk -http = ["extism-runtime/http"] # enables extism_http_request +nn = ["extism/nn"] +register-http = ["extism/register-http"] # enables wasm to be downloaded using http +register-filesystem = ["extism/register-filesystem"] # enables wasm to be loaded from disk +http = ["extism/http"] # enables extism_http_request diff --git a/libextism/src/lib.rs b/libextism/src/lib.rs index ece7fcde0..e8399d1a9 100644 --- a/libextism/src/lib.rs +++ b/libextism/src/lib.rs @@ -1,6 +1,6 @@ //! This crate is used to generate `libextism` using `extism-runtime` -pub use extism_runtime::sdk::*; +pub use extism::sdk::*; #[cfg(test)] #[test] diff --git a/manifest/Cargo.toml b/manifest/Cargo.toml index f69a9dd93..aabdeb2a9 100644 --- a/manifest/Cargo.toml +++ b/manifest/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extism-manifest" -version = "0.5.0" +version = "1.0.0-alpha.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" diff --git a/manifest/src/lib.rs b/manifest/src/lib.rs index dd57c1ce7..eb25e330b 100644 --- a/manifest/src/lib.rs +++ b/manifest/src/lib.rs @@ -240,8 +240,19 @@ impl Manifest { } /// Set `config` - pub fn with_config(mut self, c: impl Iterator) -> Self { - self.config = c.collect(); + pub fn with_config( + mut self, + c: impl Iterator, impl Into)>, + ) -> Self { + for (k, v) in c { + self.config.insert(k.into(), v.into()); + } + self + } + + /// Set a single `config` key + pub fn with_config_key(mut self, k: impl Into, v: impl Into) -> Self { + self.config.insert(k.into(), v.into()); self } diff --git a/node/example.js b/node/example.js index 543736d32..05cbb8c74 100644 --- a/node/example.js +++ b/node/example.js @@ -37,9 +37,3 @@ async function main() { } main(); - -// or, use a context like this: -// let ctx = new Context(); -// let wasm = readFileSync("../wasm/code.wasm"); -// let p = ctx.plugin(wasm); -// ... where the context can be passed around to various functions etc. diff --git a/node/src/index.ts b/node/src/index.ts index 7fc4695a2..2f88e7a71 100644 --- a/node/src/index.ts +++ b/node/src/index.ts @@ -6,14 +6,12 @@ var ArrayType = require("ref-array-di")(ref); var StructType = require("ref-struct-di")(ref); var UnionType = require("ref-union-di")(ref); +const plugin = "void*"; const opaque = ref.types.void; -const context = ref.refType(opaque); - const function_t = ref.refType(opaque); -const pluginIndex = ref.types.int32; let ValTypeArray = ArrayType(ref.types.int); -let PtrArray = new ArrayType("void*"); +let PtrArray = new ArrayType(function_t); let ValUnion = new UnionType({ i32: ref.types.uint32, @@ -36,28 +34,29 @@ let Val = new StructType({ let ValArray = ArrayType(Val); const _functions = { - extism_context_new: [context, []], - extism_context_free: ["void", [context]], extism_plugin_new: [ - pluginIndex, - [context, "string", "uint64", PtrArray, "uint64", "bool"], - ], - extism_plugin_update: [ - "bool", - [context, pluginIndex, "string", "uint64", PtrArray, "uint64", "bool"], + plugin, + [ + "string", + "uint64", + PtrArray, + "uint64", + "bool", + ref.refType(ref.types.char), + ], ], - extism_error: ["string", [context, pluginIndex]], + extism_plugin_error: ["string", [plugin]], extism_plugin_call: [ "int32", - [context, pluginIndex, "string", "string", "uint64"], + [plugin, "string", "string", "uint64"], ], - extism_plugin_output_length: ["uint64", [context, pluginIndex]], - extism_plugin_output_data: ["uint8*", [context, pluginIndex]], + extism_plugin_output_length: ["uint64", [plugin]], + extism_plugin_output_data: ["uint8*", [plugin]], extism_log_file: ["bool", ["string", "char*"]], - extism_plugin_function_exists: ["bool", [context, pluginIndex, "string"]], - extism_plugin_config: ["void", [context, pluginIndex, "char*", "uint64"]], - extism_plugin_free: ["void", [context, pluginIndex]], - extism_context_reset: ["void", [context]], + extism_plugin_function_exists: ["bool", [plugin, "string"]], + extism_plugin_config: ["void", [plugin, "char*", "uint64"]], + extism_plugin_free: ["void", [plugin]], + extism_plugin_new_error_free: ["void", ["char*"]], extism_version: ["string", []], extism_function_new: [ function_t, @@ -78,7 +77,7 @@ const _functions = { extism_current_plugin_memory_alloc: ["uint64", ["void*", "uint64"]], extism_current_plugin_memory_length: ["uint64", ["void*", "uint64"]], extism_current_plugin_memory_free: ["void", ["void*", "uint64"]], - extism_plugin_cancel_handle: ["void*", [context, pluginIndex]], + extism_plugin_cancel_handle: ["void*", [plugin]], extism_plugin_cancel: ["bool", ["void*"]], }; @@ -96,49 +95,35 @@ export enum ValType { } interface LibExtism { - extism_context_new: () => Buffer; - extism_context_free: (ctx: Buffer) => void; extism_plugin_new: ( - ctx: Buffer, - data: string | Buffer, - data_len: number, - functions: Buffer, - nfunctions: number, - wasi: boolean, - ) => number; - extism_plugin_update: ( - ctx: Buffer, - plugin_id: number, data: string | Buffer, data_len: number, functions: Buffer, nfunctions: number, wasi: boolean, - ) => boolean; - extism_error: (ctx: Buffer, plugin_id: number) => string; + errmsg: Buffer | null, + ) => Buffer; + extism_plugin_error: (plugin: Buffer) => string; extism_plugin_call: ( - ctx: Buffer, - plugin_id: number, + plugin: Buffer, func: string, input: string, input_len: number, ) => number; - extism_plugin_output_length: (ctx: Buffer, plugin_id: number) => number; - extism_plugin_output_data: (ctx: Buffer, plugin_id: number) => Uint8Array; + extism_plugin_output_length: (plugin: Buffer) => number; + extism_plugin_output_data: (plugin: Buffer) => Uint8Array; extism_log_file: (file: string, level: string) => boolean; extism_plugin_function_exists: ( - ctx: Buffer, - plugin_id: number, + plugin: Buffer, func: string, ) => boolean; extism_plugin_config: ( - ctx: Buffer, - plugin_id: number, + plugin: Buffer, data: string | Buffer, data_len: number, ) => void; - extism_plugin_free: (ctx: Buffer, plugin_id: number) => void; - extism_context_reset: (ctx: Buffer) => void; + extism_plugin_free: (plugin: Buffer) => void; + extism_plugin_new_error_free: (error: Buffer) => void; extism_version: () => string; extism_function_new: ( name: string, @@ -156,7 +141,7 @@ interface LibExtism { extism_current_plugin_memory_alloc: (p: Buffer, n: number) => number; extism_current_plugin_memory_length: (p: Buffer, n: number) => number; extism_current_plugin_memory_free: (p: Buffer, n: number) => void; - extism_plugin_cancel_handle: (p: Buffer, n: number) => Buffer; + extism_plugin_cancel_handle: (p: Buffer) => Buffer; extism_plugin_cancel: (p: Buffer) => boolean; } @@ -206,13 +191,13 @@ export function extismVersion(): string { } // @ts-ignore -const contextRegistry = new FinalizationRegistry((pointer) => { - if (pointer) lib.extism_context_free(pointer); +const functionRegistry = new FinalizationRegistry((pointer) => { + if (pointer) lib.extism_function_free(pointer); }); // @ts-ignore -const functionRegistry = new FinalizationRegistry((pointer) => { - if (pointer) lib.extism_function_free(pointer); +const pluginRegistry = new FinalizationRegistry((handle) => { + handle(); }); /** @@ -272,98 +257,9 @@ export type Manifest = { type ManifestData = Manifest | Buffer | string; /** - * A Context is needed to create plugins. The Context - * is where your plugins live. Freeing the context - * frees all of the plugins in its scope. We recommand managing - * the context with {@link withContext} - * - * @see {@link withContext} - * - * @example - * Use withContext to ensure your memory is cleaned up - * ``` - * const output = await withContext(async (ctx) => { - * const plugin = ctx.plugin(manifest) - * return await plugin.call("func", "my-input") - * }) - * ``` - * - * @example - * You can manage manually if you need a long-lived context - * ``` - * const ctx = Context() - * // free all the plugins and reset - * ctx.reset() - * // free everything - * ctx.free() - * ``` - */ -export class Context { - pointer: Buffer | null; - - /** - * Construct a context - */ - constructor() { - this.pointer = lib.extism_context_new(); - contextRegistry.register(this, this.pointer, this.pointer); - } - - /** - * Create a plugin managed by this context - * - * @param manifest - The {@link Manifest} describing the plugin code and config - * @param wasi - Set to `true` to enable WASI - * @param config - Config details for the plugin - * @returns A new Plugin scoped to this Context - */ - plugin( - manifest: ManifestData, - wasi: boolean = false, - functions: HostFunction[] = [], - config?: PluginConfig, - ) { - return new Plugin(manifest, wasi, functions, config, this); - } - - /** - * Frees the context. Should be called after the context is not needed to reclaim the memory. - */ - free() { - contextRegistry.unregister(this.pointer); - if (this.pointer) { - lib.extism_context_free(this.pointer); - this.pointer = null; - } - } - - /** - * Resets the context. This clears all the plugins but keeps the context alive. - */ - reset() { - if (this.pointer) lib.extism_context_reset(this.pointer); - } -} - -/** - * Creates a context and gives you a scope to use it. This will ensure the context - * and all its plugins are cleaned up for you when you are done. - * - * @param f - The callback function with the context - * @returns Whatever your callback returns + * A memory handle points to a particular offset in memory */ -export async function withContext(f: (ctx: Context) => Promise) { - const ctx = new Context(); - - try { - const x = await f(ctx); - ctx.free(); - return x; - } catch (err) { - ctx.free(); - throw err; - } -} +type MemoryHandle = number; /** * Provides access to the plugin that is currently running from inside a {@link HostFunction} @@ -380,8 +276,11 @@ export class CurrentPlugin { * @param offset - The offset in memory * @returns a pointer to the provided offset */ - memory(offset: number): Buffer { - let length = lib.extism_current_plugin_memory_length(this.pointer, offset); + memory(offset: MemoryHandle): Buffer { + const length = lib.extism_current_plugin_memory_length( + this.pointer, + offset, + ); return Buffer.from( lib.extism_current_plugin_memory(this.pointer).buffer, offset, @@ -394,7 +293,7 @@ export class CurrentPlugin { * @param n - The number of bytes to allocate * @returns the offset to the newly allocated block */ - memoryAlloc(n: number): number { + memoryAlloc(n: number): MemoryHandle { return lib.extism_current_plugin_memory_alloc(this.pointer, n); } @@ -402,7 +301,7 @@ export class CurrentPlugin { * Free a memory block * @param offset - The offset of the block to free */ - memoryFree(offset: number) { + memoryFree(offset: MemoryHandle) { return lib.extism_current_plugin_memory_free(this.pointer, offset); } @@ -411,7 +310,7 @@ export class CurrentPlugin { * @param offset - The offset of the block * @returns the length of the block specified by `offset` */ - memoryLength(offset: number): number { + memoryLength(offset: MemoryHandle): number { return lib.extism_current_plugin_memory_length(this.pointer, offset); } @@ -421,7 +320,7 @@ export class CurrentPlugin { * @param s - The string to return */ returnString(output: typeof Val, s: string) { - var offs = this.memoryAlloc(Buffer.byteLength(s)); + const offs = this.memoryAlloc(Buffer.byteLength(s)); this.memory(offs).write(s); output.v.i64 = offs; } @@ -432,7 +331,7 @@ export class CurrentPlugin { * @param b - The buffer to return */ returnBytes(output: typeof Val, b: Buffer) { - var offs = this.memoryAlloc(b.length); + const offs = this.memoryAlloc(b.length); this.memory(offs).fill(b); output.v.i64 = offs; } @@ -581,30 +480,24 @@ export class CancelHandle { * A Plugin represents an instance of your WASM program from the given manifest. */ export class Plugin { - id: number; - ctx: Context; + plugin: Buffer | null; functions: typeof PtrArray; - token: { id: number; pointer: Buffer }; + token: { plugin: Buffer | null }; /** - * Constructor for a plugin. @see {@link Context#plugin}. + * Constructor for a plugin. * * @param manifest - The {@link Manifest} * @param wasi - Set to true to enable WASI support * @param functions - An array of {@link HostFunction} * @param config - The plugin config - * @param ctx - The context to manage this plugin, or null to use a new context */ constructor( manifest: ManifestData, wasi: boolean = false, functions: HostFunction[] = [], config?: PluginConfig, - ctx: Context | null = null, ) { - if (ctx == null) { - ctx = new Context(); - } let dataRaw: string | Buffer; if (Buffer.isBuffer(manifest) || typeof manifest === "string") { dataRaw = manifest; @@ -613,35 +506,32 @@ export class Plugin { } else { throw Error(`Unknown manifest type ${typeof manifest}`); } - if (!ctx.pointer) throw Error("No Context set"); this.functions = new PtrArray(functions.length); for (var i = 0; i < functions.length; i++) { this.functions[i] = functions[i].pointer; } - let plugin = lib.extism_plugin_new( - ctx.pointer, + const plugin = lib.extism_plugin_new( dataRaw, Buffer.byteLength(dataRaw, "utf-8"), this.functions, functions.length, wasi, + null, ); - if (plugin < 0) { - var err = lib.extism_error(ctx.pointer, -1); - if (err.length === 0) { - throw "extism_context_plugin failed"; - } - throw `Unable to load plugin: ${err.toString()}`; + if (ref.address(plugin) === 0) { + // TODO: handle error + throw Error("Failed to create plugin"); } - this.id = plugin; - this.token = { id: this.id, pointer: ctx.pointer }; - this.ctx = ctx; + this.plugin = plugin; + this.token = { plugin: this.plugin }; + pluginRegistry.register(this, () => { + this.free(); + }, this.token); if (config != null) { - let s = JSON.stringify(config); + const s = JSON.stringify(config); lib.extism_plugin_config( - ctx.pointer, - this.id, + this.plugin, s, Buffer.byteLength(s, "utf-8"), ); @@ -652,64 +542,11 @@ export class Plugin { * Return a new `CancelHandle`, which can be used to cancel a running Plugin */ cancelHandle(): CancelHandle { - if (!this.ctx.pointer) throw Error("No Context set"); - let handle = lib.extism_plugin_cancel_handle(this.ctx.pointer, this.id); - return new CancelHandle(handle); - } - - /** - * Update an existing plugin with new WASM or manifest - * - * @param manifest - The new {@link Manifest} data - * @param wasi - Set to true to enable WASI support - * @param functions - An array of {@link HostFunction} - * @param config - The new plugin config - */ - update( - manifest: ManifestData, - wasi: boolean = false, - functions: HostFunction[] = [], - config?: PluginConfig, - ) { - let dataRaw: string | Buffer; - if (Buffer.isBuffer(manifest) || typeof manifest === "string") { - dataRaw = manifest; - } else if (typeof manifest === "object" && manifest.wasm) { - dataRaw = JSON.stringify(manifest); - } else { - throw Error("Unknown manifest type type"); - } - if (!this.ctx.pointer) throw Error("No Context set"); - this.functions = new PtrArray(functions.length); - for (var i = 0; i < functions.length; i++) { - this.functions[i] = functions[i].pointer; - } - const ok = lib.extism_plugin_update( - this.ctx.pointer, - this.id, - dataRaw, - Buffer.byteLength(dataRaw, "utf-8"), - this.functions, - functions.length, - wasi, - ); - if (!ok) { - var err = lib.extism_error(this.ctx.pointer, -1); - if (err.length === 0) { - throw "extism_plugin_update failed"; - } - throw `Unable to update plugin: ${err.toString()}`; - } - - if (config != null) { - let s = JSON.stringify(config); - lib.extism_plugin_config( - this.ctx.pointer, - this.id, - s, - Buffer.byteLength(s, "utf-8"), - ); + if (this.plugin === null) { + throw Error("Plugin already freed"); } + const handle = lib.extism_plugin_cancel_handle(this.plugin); + return new CancelHandle(handle); } /** @@ -720,10 +557,11 @@ export class Plugin { */ functionExists(functionName: string) { - if (!this.ctx.pointer) throw Error("No Context set"); + if (this.plugin === null) { + throw Error("Plugin already freed"); + } return lib.extism_plugin_function_exists( - this.ctx.pointer, - this.id, + this.plugin, functionName, ); } @@ -734,7 +572,7 @@ export class Plugin { * @example * ``` * const manifest = { wasm: [{ path: "/tmp/code.wasm" }] } - * const plugin = ctx.plugin(manifest) + * const plugin = new Plugin(manifest) * const output = await plugin.call("my_function", "some-input") * output.toString() * // => "output from the function" @@ -746,25 +584,27 @@ export class Plugin { */ async call(functionName: string, input: string | Buffer): Promise { return new Promise((resolve, reject) => { - if (!this.ctx.pointer) throw Error("No Context set"); + if (this.plugin === null) { + reject("Plugin already freed"); + return; + } var rc = lib.extism_plugin_call( - this.ctx.pointer, - this.id, + this.plugin, functionName, input.toString(), Buffer.byteLength(input, "utf-8"), ); if (rc !== 0) { - var err = lib.extism_error(this.ctx.pointer, this.id); - if (err.length === 0) { - reject(`extism_plugin_call: "${functionName}" failed`); + var err = lib.extism_plugin_error(this.plugin); + if (!err || err.length === 0) { + reject(`Plugin error: call to "${functionName}" failed`); } reject(`Plugin error: ${err.toString()}, code: ${rc}`); } - var out_len = lib.extism_plugin_output_length(this.ctx.pointer, this.id); + var out_len = lib.extism_plugin_output_length(this.plugin); var buf = Buffer.from( - lib.extism_plugin_output_data(this.ctx.pointer, this.id).buffer, + lib.extism_plugin_output_data(this.plugin).buffer, 0, out_len, ); @@ -776,9 +616,10 @@ export class Plugin { * Free a plugin, this should be called when the plugin is no longer needed */ free() { - if (this.ctx.pointer && this.id >= 0) { - lib.extism_plugin_free(this.ctx.pointer, this.id); - this.id = -1; + if (this.plugin !== null) { + pluginRegistry.unregister(this.token); + lib.extism_plugin_free(this.plugin); + this.plugin = null; } } } diff --git a/node/tests/index.test.ts b/node/tests/index.test.ts index 7ac16baa8..b7ef6b062 100644 --- a/node/tests/index.test.ts +++ b/node/tests/index.test.ts @@ -10,7 +10,7 @@ function manifest(functions: boolean = false): extism.Manifest { __dirname, functions ? "/../../wasm/code-functions.wasm" - : "/../../wasm/code.wasm" + : "/../../wasm/code.wasm", ), }, ], @@ -22,116 +22,60 @@ function wasmBuffer(): Buffer { } describe("test extism", () => { - test("can create new context", () => { - let ctx = new extism.Context(); - expect(ctx).toBeTruthy(); - ctx.free(); - }); - test("can create and call a plugin", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest()); - let output = await plugin.call("count_vowels", "this is a test"); - let result = JSON.parse(output.toString()); - expect(result["count"]).toBe(4); - output = await plugin.call("count_vowels", "this is a test again"); - result = JSON.parse(output.toString()); - expect(result["count"]).toBe(7); - output = await plugin.call("count_vowels", "this is a test thrice"); - result = JSON.parse(output.toString()); - expect(result["count"]).toBe(6); - output = await plugin.call("count_vowels", "🌎hello🌎world🌎"); - result = JSON.parse(output.toString()); - expect(result["count"]).toBe(3); - }); + const plugin = new extism.Plugin(manifest()); + let output = await plugin.call("count_vowels", "this is a test"); + let result = JSON.parse(output.toString()); + expect(result["count"]).toBe(4); + output = await plugin.call("count_vowels", "this is a test again"); + result = JSON.parse(output.toString()); + expect(result["count"]).toBe(7); + output = await plugin.call("count_vowels", "this is a test thrice"); + result = JSON.parse(output.toString()); + expect(result["count"]).toBe(6); + output = await plugin.call("count_vowels", "🌎hello🌎world🌎"); + result = JSON.parse(output.toString()); + expect(result["count"]).toBe(3); }); test("can free a plugin", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest()); - let output = await plugin.call("count_vowels", "this is a test"); - plugin.free(); - await expect(() => - plugin.call("count_vowels", "this is a test") - ).rejects.toMatch(/Plugin error/); - }); - }); - - test("can update the manifest", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest()); - let output = await plugin.call("count_vowels", "this is a test"); - let result = JSON.parse(output.toString()); - expect(result["count"]).toBe(4); - // let's update the plugin with a manifest of raw module bytes - plugin.update(wasmBuffer()); - // can still call it - output = await plugin.call("count_vowels", "this is a test"); - result = JSON.parse(output.toString()); - expect(result["count"]).toBe(4); - }); + const plugin = new extism.Plugin(manifest()); + let output = await plugin.call("count_vowels", "this is a test"); + plugin.free(); + await expect(() => plugin.call("count_vowels", "this is a test")).rejects + .toMatch("Plugin already freed"); }); test("can detect if function exists or not", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest()); - expect(plugin.functionExists("count_vowels")).toBe(true); - expect(plugin.functionExists("i_dont_extist")).toBe(false); - }); - }); - - test("withContext returns results", async () => { - const count = await extism.withContext( - async (ctx: extism.Context): Promise => { - const plugin = ctx.plugin(manifest()); - let output = await plugin.call("count_vowels", "this is a test"); - let result = JSON.parse(output.toString()); - return result["count"]; - } - ); - expect(count).toBe(4); + const plugin = new extism.Plugin(manifest()); + expect(plugin.functionExists("count_vowels")).toBe(true); + expect(plugin.functionExists("i_dont_extist")).toBe(false); }); test("errors when function is not known", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest()); - await expect(() => - plugin.call("i_dont_exist", "example-input") - ).rejects.toMatch(/Plugin error/); - }); - }); - - test("can result context", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest()); - await plugin.call("count_vowels", "this is a test"); - ctx.reset(); - await expect(() => - plugin.call("i_dont_exist", "example-input") - ).rejects.toMatch(/Plugin error/); - }); + const plugin = new extism.Plugin(manifest()); + await expect(() => plugin.call("i_dont_exist", "example-input")).rejects + .toMatch(/Plugin error/); }); test("host functions work", async () => { - await extism.withContext(async (ctx: extism.Context) => { - const plugin = ctx.plugin(manifest(true), true, [ - new extism.HostFunction( - "hello_world", - [extism.ValType.I64], - [extism.ValType.I64], - (plugin: any, params: any, results: any, user_data: string) => { - const offs = plugin.memoryAlloc(user_data.length); - const mem = plugin.memory(offs); - mem.write(user_data); - results[0].v.i64 = offs; - }, - "test" - ), - ]); + const plugin = new extism.Plugin(manifest(true), true, [ + new extism.HostFunction( + "hello_world", + [extism.ValType.I64], + [extism.ValType.I64], + (plugin: any, params: any, results: any, user_data: string) => { + const offs = plugin.memoryAlloc(user_data.length); + const mem = plugin.memory(offs); + mem.write(user_data); + results[0].v.i64 = offs; + }, + "test", + ), + ]); - const res = await plugin.call("count_vowels", "aaa"); + const res = await plugin.call("count_vowels", "aaa"); - expect(res.toString()).toBe("test"); - }); + expect(res.toString()).toBe("test"); }); }); diff --git a/ocaml/.ocamlformat b/ocaml/.ocamlformat index 449bdd8e0..ed7d4b31d 100644 --- a/ocaml/.ocamlformat +++ b/ocaml/.ocamlformat @@ -1 +1 @@ -version = 0.24.1 +version = 0.26.0 diff --git a/ocaml/bin/main.ml b/ocaml/bin/main.ml index ac72b45f0..eafcf2816 100644 --- a/ocaml/bin/main.ml +++ b/ocaml/bin/main.ml @@ -7,6 +7,7 @@ let main file func_name input = let input = if String.equal input "-" then read_stdin () else input in let file = In_channel.with_open_bin file In_channel.input_all in let plugin = Plugin.create file ~wasi:true |> Result.get_ok in + print_endline (Plugin.id plugin |> Uuidm.to_string); let res = Plugin.call plugin ~name:func_name input |> Result.get_ok in print_endline res diff --git a/ocaml/lib/bindings.ml b/ocaml/lib/bindings.ml index 16d4558d8..e43c9fc61 100644 --- a/ocaml/lib/bindings.ml +++ b/ocaml/lib/bindings.ml @@ -45,9 +45,6 @@ let from = open Ctypes let fn = Foreign.foreign ~from ~release_runtime_lock:true -let context = ptr void -let extism_context_new = fn "extism_context_new" (void @-> returning context) -let extism_context_free = fn "extism_context_free" (context @-> returning void) module Extism_val_type = struct type t = I32 | I64 | F32 | F64 | V128 | FuncRef | ExternRef @@ -94,54 +91,46 @@ module Extism_val = struct let () = seal t end +let plugin = ptr void + +let extism_plugin_new_error_free = + fn "extism_plugin_new_error_free" (ptr char @-> returning void) + let extism_plugin_new = fn "extism_plugin_new" - (context @-> string @-> uint64_t - @-> ptr (ptr void) - @-> uint64_t @-> bool @-> returning int32_t) - -let extism_plugin_update = - fn "extism_plugin_update" - (context @-> int32_t @-> string @-> uint64_t + (string @-> uint64_t @-> ptr (ptr void) - @-> uint64_t @-> bool @-> returning bool) + @-> uint64_t @-> bool + @-> ptr (ptr char) + @-> returning plugin) let extism_plugin_config = - fn "extism_plugin_config" - (context @-> int32_t @-> string @-> uint64_t @-> returning bool) + fn "extism_plugin_config" (plugin @-> string @-> uint64_t @-> returning bool) let extism_plugin_call = fn "extism_plugin_call" - (context @-> int32_t @-> string @-> ptr char @-> uint64_t - @-> returning int32_t) + (plugin @-> string @-> ptr char @-> uint64_t @-> returning int32_t) let extism_plugin_call_s = fn "extism_plugin_call" - (context @-> int32_t @-> string @-> string @-> uint64_t - @-> returning int32_t) + (plugin @-> string @-> string @-> uint64_t @-> returning int32_t) -let extism_error = - fn "extism_error" (context @-> int32_t @-> returning string_opt) +let extism_error = fn "extism_plugin_error" (plugin @-> returning string_opt) let extism_plugin_output_length = - fn "extism_plugin_output_length" (context @-> int32_t @-> returning uint64_t) + fn "extism_plugin_output_length" (plugin @-> returning uint64_t) let extism_plugin_output_data = - fn "extism_plugin_output_data" (context @-> int32_t @-> returning (ptr char)) + fn "extism_plugin_output_data" (plugin @-> returning (ptr char)) let extism_log_file = fn "extism_log_file" (string @-> string_opt @-> returning bool) let extism_version = fn "extism_version" (void @-> returning string) - -let extism_plugin_free = - fn "extism_plugin_free" (context @-> int32_t @-> returning void) - -let extism_context_reset = fn "extism_context_reset" (context @-> returning void) +let extism_plugin_free = fn "extism_plugin_free" (plugin @-> returning void) let extism_plugin_function_exists = - fn "extism_plugin_function_exists" - (context @-> int32_t @-> string @-> returning bool) + fn "extism_plugin_function_exists" (plugin @-> string @-> returning bool) let extism_function_type = Foreign.funptr ~runtime_lock:true @@ -179,7 +168,9 @@ let extism_current_plugin_memory_free = (ptr void @-> uint64_t @-> returning void) let extism_plugin_cancel_handle = - fn "extism_plugin_cancel_handle" (context @-> int32_t @-> returning (ptr void)) + fn "extism_plugin_cancel_handle" (plugin @-> returning (ptr void)) let extism_plugin_cancel = fn "extism_plugin_cancel" (ptr void @-> returning bool) + +let extism_plugin_id = fn "extism_plugin_id" (ptr void @-> returning (ptr char)) diff --git a/ocaml/lib/context.ml b/ocaml/lib/context.ml deleted file mode 100644 index e59921a71..000000000 --- a/ocaml/lib/context.ml +++ /dev/null @@ -1,19 +0,0 @@ -type t = { mutable pointer : unit Ctypes.ptr } - -let create () = - let ptr = Bindings.extism_context_new () in - let t = { pointer = ptr } in - Gc.finalise (fun { pointer } -> Bindings.extism_context_free pointer) t; - t - -let free ctx = - let () = Bindings.extism_context_free ctx.pointer in - ctx.pointer <- Ctypes.null - -let reset ctx = Bindings.extism_context_reset ctx.pointer - -let%test "test context" = - let ctx = create () in - reset ctx; - free ctx; - true diff --git a/ocaml/lib/current_plugin.ml b/ocaml/lib/current_plugin.ml index 891401385..2b942fc93 100644 --- a/ocaml/lib/current_plugin.ml +++ b/ocaml/lib/current_plugin.ml @@ -1,7 +1,7 @@ open Ctypes type t = unit ptr -type memory_block = { offs : Unsigned.UInt64.t; len : Unsigned.UInt64.t } +type memory_handle = { offs : Unsigned.UInt64.t; len : Unsigned.UInt64.t } let memory ?(offs = Unsigned.UInt64.zero) t = Bindings.extism_current_plugin_memory t +@ Unsigned.UInt64.to_int offs @@ -17,7 +17,7 @@ let alloc t len = let free t { offs; _ } = Bindings.extism_current_plugin_memory_free t offs -module Memory_block = struct +module Memory_handle = struct let of_val t v = match Types.Val.to_i64 v with | None -> None @@ -63,22 +63,22 @@ end let return_string t (outputs : Types.Val_array.t) index s = let mem = alloc t (String.length s) in - Memory_block.set_string t mem s; + Memory_handle.set_string t mem s; Types.Val_array.( outputs.$[index] <- Types.Val.of_i64 (Unsigned.UInt64.to_int64 mem.offs)) let return_bigstring t (outputs : Types.Val_array.t) index s = let mem = alloc t (Bigstringaf.length s) in - Memory_block.set_bigstring t mem s; + Memory_handle.set_bigstring t mem s; Types.Val_array.( outputs.$[index] <- Types.Val.of_i64 (Unsigned.UInt64.to_int64 mem.offs)) let input_string t inputs index = let inp = Types.Val_array.(inputs.$[index]) in - let mem = Memory_block.of_val_exn t inp in - Memory_block.get_string t mem + let mem = Memory_handle.of_val_exn t inp in + Memory_handle.get_string t mem let input_bigstring t inputs index = let inp = Types.Val_array.(inputs.$[index]) in - let mem = Memory_block.of_val_exn t inp in - Memory_block.get_bigstring t mem + let mem = Memory_handle.of_val_exn t inp in + Memory_handle.get_bigstring t mem diff --git a/ocaml/lib/dune b/ocaml/lib/dune index 26b00340a..0d83bdd18 100644 --- a/ocaml/lib/dune +++ b/ocaml/lib/dune @@ -3,6 +3,6 @@ (public_name extism) (inline_tests (deps test/code.wasm test/code-functions.wasm)) - (libraries ctypes.foreign bigstringaf extism-manifest) + (libraries ctypes.foreign bigstringaf extism-manifest uuidm) (preprocess (pps ppx_yojson_conv ppx_inline_test))) diff --git a/ocaml/lib/extism.ml b/ocaml/lib/extism.ml index a1705b204..62c71b7c4 100644 --- a/ocaml/lib/extism.ml +++ b/ocaml/lib/extism.ml @@ -1,14 +1,15 @@ module Manifest = Extism_manifest module Error = Error -module Context = Context module Plugin = Plugin module Function = Function module Current_plugin = Current_plugin include Types -let with_context = Plugin.with_context let extism_version = Bindings.extism_version +let with_plugin f p = + Fun.protect ~finally:(fun () -> Plugin.free p) (fun () -> f p) + let%test _ = String.length (extism_version ()) > 0 let set_log_file ?level filename = diff --git a/ocaml/lib/extism.mli b/ocaml/lib/extism.mli index 7ae5c6eb5..6b228fd84 100644 --- a/ocaml/lib/extism.mli +++ b/ocaml/lib/extism.mli @@ -101,20 +101,20 @@ module Current_plugin : sig type t (** Opaque type, wraps [ExtismCurrentPlugin] *) - type memory_block = { offs : Unsigned.UInt64.t; len : Unsigned.UInt64.t } + type memory_handle = { offs : Unsigned.UInt64.t; len : Unsigned.UInt64.t } (** Represents a block of guest memory *) val memory : ?offs:Unsigned.UInt64.t -> t -> Unsigned.uint8 Ctypes.ptr (** Get pointer to entire plugin memory *) - val find : t -> Unsigned.UInt64.t -> memory_block option - (** Find memory block *) + val find : t -> Unsigned.UInt64.t -> memory_handle option + (** Convert an offset into a {memory_handle} *) - val alloc : t -> int -> memory_block + val alloc : t -> int -> memory_handle (** Allocate a new block of memory *) - val free : t -> memory_block -> unit - (** Free an allocated block of memory *) + val free : t -> memory_handle -> unit + (** Free allocated memory *) val return_string : t -> Val_array.t -> int -> string -> unit val return_bigstring : t -> Val_array.t -> int -> Bigstringaf.t -> unit @@ -122,27 +122,27 @@ module Current_plugin : sig val input_bigstring : t -> Val_array.t -> int -> Bigstringaf.t (** Some helpter functions for reading/writing memory *) - module Memory_block : sig - val to_val : memory_block -> Val.t + module Memory_handle : sig + val to_val : memory_handle -> Val.t (** Convert memory block to [Val] *) - val of_val : t -> Val.t -> memory_block option + val of_val : t -> Val.t -> memory_handle option (** Convert [Val] to memory block *) - val of_val_exn : t -> Val.t -> memory_block + val of_val_exn : t -> Val.t -> memory_handle (** Convert [Val] to memory block, raises [Invalid_argument] if the value is not a pointer to a valid memory block *) - val get_string : t -> memory_block -> string + val get_string : t -> memory_handle -> string (** Get a string from memory stored at the provided offset *) - val get_bigstring : t -> memory_block -> Bigstringaf.t + val get_bigstring : t -> memory_handle -> Bigstringaf.t (** Get a bigstring from memory stored at the provided offset *) - val set_string : t -> memory_block -> string -> unit + val set_string : t -> memory_handle -> string -> unit (** Store a string into memory at the provided offset *) - val set_bigstring : t -> memory_block -> Bigstringaf.t -> unit + val set_bigstring : t -> memory_handle -> Bigstringaf.t -> unit (** Store a bigstring into memory at the provided offset *) end end @@ -178,25 +178,6 @@ module Function : sig (** Free a list of functions *) end -(** [Context] is used to group plugins *) -module Context : sig - type t - (** Context type *) - - val create : unit -> t - (** Create a new context *) - - val free : t -> unit - (** Free a context. All plugins will be removed and the value should not be - accessed after this call *) - - val reset : t -> unit - (** Reset a context. All plugins will be removed *) -end - -val with_context : (Context.t -> 'a) -> 'a -(** Execute a function with a fresh context and free it after *) - val set_log_file : ?level:[ `Error | `Warn | `Info | `Debug | `Trace ] -> string -> bool @@ -208,7 +189,6 @@ module Plugin : sig ?config:Manifest.config -> ?wasi:bool -> ?functions:Function.t list -> - ?context:Context.t -> string -> (t, Error.t) result (** Make a new plugin from raw WebAssembly or JSON encoded manifest *) @@ -216,23 +196,10 @@ module Plugin : sig val of_manifest : ?wasi:bool -> ?functions:Function.t list -> - ?context:Context.t -> Manifest.t -> (t, Error.t) result (** Make a new plugin from a [Manifest] *) - val update : - t -> - ?config:(string * string option) list -> - ?wasi:bool -> - ?functions:Function.t list -> - string -> - (unit, [ `Msg of string ]) result - (** Update a plugin from raw WebAssembly or JSON encoded manifest *) - - val update_manifest : t -> ?wasi:bool -> Manifest.t -> (unit, Error.t) result - (** Update a plugin from a [Manifest] *) - val call_bigstring : t -> name:string -> Bigstringaf.t -> (Bigstringaf.t, Error.t) result (** Call a function, uses [Bigstringaf.t] for input/output *) @@ -246,11 +213,15 @@ module Plugin : sig val function_exists : t -> string -> bool (** Check if a function is exported by a plugin *) - module Cancel_handle: sig + module Cancel_handle : sig type t - val cancel: t -> bool + val cancel : t -> bool end - val cancel_handle: t -> Cancel_handle.t + val cancel_handle : t -> Cancel_handle.t + + val id : t -> Uuidm.t end + +val with_plugin : (Plugin.t -> 'a) -> Plugin.t -> 'a diff --git a/ocaml/lib/plugin.ml b/ocaml/lib/plugin.ml index 712e20522..476375948 100644 --- a/ocaml/lib/plugin.ml +++ b/ocaml/lib/plugin.ml @@ -1,17 +1,9 @@ module Manifest = Extism_manifest -type t = { id : int32; ctx : Context.t; mutable functions : Function.t list } - -let with_context f = - let ctx = Context.create () in - let x = - try f ctx - with exc -> - Context.free ctx; - raise exc - in - Context.free ctx; - x +type t = { + mutable pointer : unit Ctypes.ptr; + mutable functions : Function.t list; +} let set_config plugin = function | None -> true @@ -19,39 +11,56 @@ let set_config plugin = function let config = Extism_manifest.yojson_of_config config |> Yojson.Safe.to_string in - Bindings.extism_plugin_config plugin.ctx.pointer plugin.id config + Bindings.extism_plugin_config plugin.pointer config (Unsigned.UInt64.of_int (String.length config)) let free t = - if not (Ctypes.is_null t.ctx.pointer) then - Bindings.extism_plugin_free t.ctx.pointer t.id + if not (Ctypes.is_null t.pointer) then + let () = Bindings.extism_plugin_free t.pointer in + t.pointer <- Ctypes.null + +let strlen ptr = + let rec aux ptr len = + let c = Ctypes.( !@ ) ptr in + if c = char_of_int 0 then len else aux (Ctypes.( +@ ) ptr 1) (len + 1) + in + aux ptr 0 + +let get_errmsg ptr = + if Ctypes.is_null ptr then "Call failed" + else + let length = strlen ptr in + let s = Ctypes.string_from_ptr ~length ptr in + let () = Bindings.extism_plugin_new_error_free ptr in + s -let create ?config ?(wasi = false) ?(functions = []) ?context wasm = - let ctx = match context with Some c -> c | None -> Context.create () in +let create ?config ?(wasi = false) ?(functions = []) wasm = let func_ptrs = List.map (fun x -> x.Function.pointer) functions in let arr = Ctypes.CArray.of_list Ctypes.(ptr void) func_ptrs in let n_funcs = Ctypes.CArray.length arr in - let id = - Bindings.extism_plugin_new ctx.Context.pointer wasm + let errmsg = + Ctypes.(allocate (ptr char) (coerce (ptr void) (ptr char) null)) + in + let pointer = + Bindings.extism_plugin_new wasm (Unsigned.UInt64.of_int (String.length wasm)) (Ctypes.CArray.start arr) (Unsigned.UInt64.of_int n_funcs) - wasi + wasi errmsg in - if id < 0l then - match Bindings.extism_error ctx.pointer (-1l) with - | None -> Error (`Msg "extism_plugin_call failed") - | Some msg -> Error (`Msg msg) + if Ctypes.is_null pointer then + let s = get_errmsg (Ctypes.( !@ ) errmsg) in + Error (`Msg s) else - let t = { id; ctx; functions } in + let t = { pointer; functions } in if not (set_config t config) then Error (`Msg "call to set_config failed") else let () = Gc.finalise free t in Ok t -let of_manifest ?wasi ?functions ?context manifest = +let of_manifest ?wasi ?functions manifest = let data = Manifest.to_json manifest in - create ?wasi ?functions ?context data + create ?wasi ?functions data let%test "free plugin" = let manifest = Manifest.(create [ Wasm.file "test/code.wasm" ]) in @@ -59,54 +68,23 @@ let%test "free plugin" = free plugin; true -let update plugin ?config ?(wasi = false) ?(functions = []) wasm = - let { id; ctx; _ } = plugin in - let func_ptrs = List.map (fun x -> x.Function.pointer) functions in - let arr = Ctypes.CArray.of_list Ctypes.(ptr void) func_ptrs in - let n_funcs = Ctypes.CArray.length arr in - let ok = - Bindings.extism_plugin_update ctx.pointer id wasm - (Unsigned.UInt64.of_int (String.length wasm)) - (Ctypes.CArray.start arr) - (Unsigned.UInt64.of_int n_funcs) - wasi - in - if not ok then - match Bindings.extism_error ctx.pointer (-1l) with - | None -> Error (`Msg "extism_plugin_update failed") - | Some msg -> Error (`Msg msg) - else if not (set_config plugin config) then - Error (`Msg "call to set_config failed") - else - let () = plugin.functions <- functions in - Ok () - -let update_manifest plugin ?wasi manifest = - let data = Manifest.to_json manifest in - update plugin ?wasi data - -let%test "update plugin manifest and config" = - let manifest = Manifest.(create [ Wasm.file "test/code.wasm" ]) in - let config = [ ("a", Some "1") ] in - let plugin = of_manifest manifest |> Error.unwrap in - let manifest = Manifest.with_config manifest config in - update_manifest plugin manifest |> Result.is_ok - -let call' f { id; ctx; _ } ~name input len = - let rc = f ctx.pointer id name input len in - if rc <> 0l then - match Bindings.extism_error ctx.pointer id with - | None -> Error (`Msg "extism_plugin_call failed") - | Some msg -> Error (`Msg msg) +let call' f { pointer; _ } ~name input len = + if Ctypes.is_null pointer then Error.throw (`Msg "Plugin already freed") else - let out_len = Bindings.extism_plugin_output_length ctx.pointer id in - let ptr = Bindings.extism_plugin_output_data ctx.pointer id in - let buf = - Ctypes.bigarray_of_ptr Ctypes.array1 - (Unsigned.UInt64.to_int out_len) - Char ptr - in - Ok buf + let rc = f pointer name input len in + if rc <> 0l then + match Bindings.extism_error pointer with + | None -> Error (`Msg "extism_plugin_call failed") + | Some msg -> Error (`Msg msg) + else + let out_len = Bindings.extism_plugin_output_length pointer in + let ptr = Bindings.extism_plugin_output_data pointer in + let buf = + Ctypes.bigarray_of_ptr Ctypes.array1 + (Unsigned.UInt64.to_int out_len) + Char ptr + in + Ok buf let call_bigstring (t : t) ~name input = let len = Unsigned.UInt64.of_int (Bigstringaf.length input) in @@ -150,8 +128,9 @@ let%test "call_functions" = call plugin ~name:"count_vowels" "this is a test" |> Error.unwrap = "{\"count\": 4}" -let function_exists { id; ctx; _ } name = - Bindings.extism_plugin_function_exists ctx.pointer id name +let function_exists { pointer; _ } name = + if Ctypes.is_null pointer then Error.throw (`Msg "Plugin already freed") + else Bindings.extism_plugin_function_exists pointer name let%test "function exists" = let manifest = Manifest.(create [ Wasm.file "test/code.wasm" ]) in @@ -165,5 +144,13 @@ module Cancel_handle = struct let cancel { inner } = Bindings.extism_plugin_cancel inner end -let cancel_handle { id; ctx; _ } = - Cancel_handle.{ inner = Bindings.extism_plugin_cancel_handle ctx.pointer id } +let cancel_handle { pointer; _ } = + if Ctypes.is_null pointer then Error.throw (`Msg "Plugin already freed") + else Cancel_handle.{ inner = Bindings.extism_plugin_cancel_handle pointer } + +let id { pointer; _ } = + if Ctypes.is_null pointer then Error.throw (`Msg "Plugin already freed") + else + let id = Bindings.extism_plugin_id pointer in + let s = Ctypes.string_from_ptr id ~length:16 in + Uuidm.unsafe_of_bytes s diff --git a/php/example/index.php b/php/example/index.php index 95aa9c765..197923ed6 100644 --- a/php/example/index.php +++ b/php/example/index.php @@ -9,9 +9,3 @@ $json = json_decode(pack('C*', ...$output)); echo "Vowels counted = " . $json->{'count'} . PHP_EOL; -$wasm = file_get_contents("../../wasm/code.wasm"); -$ok = $plugin->update($wasm); -if ($ok) { - $id = $plugin->getId(); - echo "updated plugin: $id"; -} \ No newline at end of file diff --git a/php/src/Context.php b/php/src/Context.php index bbc51175b..fb915d30a 100644 --- a/php/src/Context.php +++ b/php/src/Context.php @@ -36,40 +36,6 @@ function soext() { throw new \Exception("Extism: failed to create new runtime instance"); } -class Context -{ - public $pointer; - public $lib; - - public function __construct() - { - global $lib; - - if ($lib == null) { - $lib = new \ExtismLib(\ExtismLib::SOFILE); - } - - $this->pointer = $lib->extism_context_new(); - $this->lib = $lib; - } - - public function __destruct() - { - global $lib; - - $lib->extism_context_free($this->pointer); - } - - - public function reset() - { - global $lib; - - $lib->extism_context_reset($this->pointer); - } -} - - function set_log_file($filename, $level) { global $lib; diff --git a/php/src/Plugin.php b/php/src/Plugin.php index 0fe804d9a..9eccacd81 100644 --- a/php/src/Plugin.php +++ b/php/src/Plugin.php @@ -24,20 +24,22 @@ public function cancel() class Plugin { private $lib; - private $context; private $wasi; private $config; - private $id; + private $plugin; - public function __construct($data, $wasi = false, $config = null, $ctx = null) + public function __construct($data, $wasi = false, $config = null) { - if ($ctx == null) { - $ctx = new Context(); - } - $this->lib = $ctx->lib; + global $lib; + + if ($lib == null) { + $lib = new \ExtismLib(\ExtismLib::SOFILE); + } + + $this->lib = $lib; $this->wasi = $wasi; $this->config = $config; @@ -50,38 +52,32 @@ public function __construct($data, $wasi = false, $config = null, $ctx = null) $data = string_to_bytes($data); } - $id = $this->lib->extism_plugin_new($ctx->pointer, $data, count($data), null, 0, (int)$wasi); - if ($id < 0) { - $err = $this->lib->extism_error($ctx->pointer, -1); - throw new \Exception("Extism: unable to load plugin: " . $err->toString()); + // TODO: handle error message + $plugin = $this->lib->extism_plugin_new($data, count($data), null, 0, (int)$wasi, null); + if ($plugin == null) { + throw new \Exception("Extism: unable to load plugin"); } - $this->id = $id; - $this->context = $ctx; + $this->plugin = $plugin; if ($this->config != null) { $cfg = string_to_bytes(json_encode($config)); - $this->lib->extism_plugin_config($ctx->pointer, $this->id, $cfg, count($cfg)); + $this->lib->extism_plugin_config($this->plugin, $cfg, count($cfg)); } } public function __destruct() { - $this->lib->extism_plugin_free($this->context->pointer, $this->id); - $this->id = -1; - } - - public function getId() { - return $this->id; - } - + $this->lib->extism_plugin_free($this->plugin); + $this->plugin = null; + } public function functionExists($name) { - return $this->lib->extism_plugin_function_exists($this->context->pointer, $this->id, $name); + return $this->lib->extism_plugin_function_exists($this->plugin, $name); } public function cancelHandle() { - return new \CancelHandle($this->lib, $this->lib->extism_plugin_cancel_handle($this->context->pointer, $this->id)); + return new \CancelHandle($this->lib, $this->lib->extism_plugin_cancel_handle($this->plugin)); } public function call($name, $input = null) @@ -90,19 +86,19 @@ public function call($name, $input = null) $input = string_to_bytes($input); } - $rc = $this->lib->extism_plugin_call($this->context->pointer, $this->id, $name, $input, count($input)); + $rc = $this->lib->extism_plugin_call($this->plugin, $name, $input, count($input)); if ($rc != 0) { $msg = "code = " . $rc; - $err = $this->lib->extism_error($this->context->pointer, $this->id); + $err = $this->lib->extism_error($this->plugin); if ($err) { $msg = $msg . ", error = " . $err->toString(); } throw new \Exception("Extism: call to '".$name."' failed with " . $msg); } - $length = $this->lib->extism_plugin_output_length($this->context->pointer, $this->id); + $length = $this->lib->extism_plugin_output_length($this->plugin); - $buf = $this->lib->extism_plugin_output_data($this->context->pointer, $this->id); + $buf = $this->lib->extism_plugin_output_data($this->plugin); $output = []; $data = $buf->getData(); @@ -112,27 +108,6 @@ public function call($name, $input = null) return $output; } - - public function update($data, $wasi = false, $config = null) { - if (gettype($data) == "object" and $data->wasm != null) { - $data = json_encode($data); - } - - if (gettype($data) == "string") { - $data = string_to_bytes($data); - } - - $ok = $this->lib->extism_plugin_update($this->context->pointer, $this->id, $data, count($data), null, 0, (int)$wasi); - if (!$ok) { - $err = $this->lib->extism_error($this->context->pointer, -1); - throw new \Exception("Extism: unable to update plugin: " . $err->toString()); - } - - if ($config != null) { - $config = json_encode($config); - $this->lib->extism_plugin_config($this->context->pointer, $this->id, $config, strlen($config)); - } - } } function string_to_bytes($string) { diff --git a/python/example.py b/python/example.py index b5021424e..1c55b4c03 100644 --- a/python/example.py +++ b/python/example.py @@ -25,6 +25,7 @@ def count_vowels(data): def main(args): + set_log_file("stderr", "trace") if len(args) > 1: data = args[1].encode() else: @@ -47,6 +48,7 @@ def main(args): ) ] plugin = Plugin(manifest, wasi=True, functions=functions) + print(plugin.id) # Call `count_vowels` wasm_vowel_count = plugin.call("count_vowels", data) print(wasm_vowel_count) diff --git a/python/extism/__init__.py b/python/extism/__init__.py index 4eb56be4a..5d886b9ed 100644 --- a/python/extism/__init__.py +++ b/python/extism/__init__.py @@ -2,7 +2,6 @@ Error, Plugin, set_log_file, - Context, extism_version, host_fn, Function, diff --git a/python/extism/extism.py b/python/extism/extism.py index 32a04a63e..d653c0d52 100644 --- a/python/extism/extism.py +++ b/python/extism/extism.py @@ -4,6 +4,7 @@ from cffi import FFI from typing import Union from enum import Enum +from uuid import UUID class Error(Exception): @@ -134,70 +135,6 @@ def __len__(self): return self.length -class Context: - """ - Context is used to store and manage plugins. You need a context to create - or call plugins. The best way to interact with the Context is - as a context manager as it can ensure that resources are cleaned up. - - Example - ------- - with Context() as ctx: - plugin = ctx.plugin(manifest) - print(plugin.call("my_function", "some-input")) - - If you need a long lived context, you can use the constructor and the `del` keyword to free. - - Example - ------- - ctx = Context() - del ctx - """ - - def __init__(self): - self.pointer = _lib.extism_context_new() - - def __del__(self): - _lib.extism_context_free(self.pointer) - self.pointer = _ffi.NULL - - def __enter__(self): - return self - - def __exit__(self, type, exc, traceback): - self.__del__() - - def reset(self): - """Remove all registered plugins""" - _lib.extism_context_reset(self.pointer) - - def plugin( - self, manifest: Union[str, bytes, dict], wasi=False, config=None, functions=None - ): - """ - Register a new plugin from a WASM module or JSON encoded manifest - - Parameters - ---------- - manifest : Union[str, bytes, dict] - A manifest dictionary describing the plugin or the raw bytes for a module. See [Extism > Concepts > Manifest](https://extism.org/docs/concepts/manifest/). - wasi : bool - Set to `True` to enable WASI support - config : dict - The plugin config dictionary - functions: list - Additional host functions - - Returns - ------- - Plugin - The created plugin - """ - return Plugin( - manifest, context=self, wasi=wasi, config=config, functions=functions - ) - - class Function: def __init__(self, name: str, args, returns, f, *user_data): self.pointer = None @@ -250,7 +187,6 @@ class Plugin: def __init__( self, plugin: Union[str, bytes, dict], - context=None, wasi=False, config=None, functions=None, @@ -259,87 +195,42 @@ def __init__( Construct a Plugin """ - if context is None: - context = Context() - wasm = _wasm(plugin) self.functions = functions # Register plugin + errmsg = _ffi.new("char**") if functions is not None: functions = [f.pointer for f in functions] ptr = _ffi.new("ExtismFunction*[]", functions) self.plugin = _lib.extism_plugin_new( - context.pointer, wasm, len(wasm), ptr, len(functions), wasi + wasm, len(wasm), ptr, len(functions), wasi, errmsg ) else: self.plugin = _lib.extism_plugin_new( - context.pointer, wasm, len(wasm), _ffi.NULL, 0, wasi + wasm, len(wasm), _ffi.NULL, 0, wasi, errmsg ) - self.ctx = context - - if self.plugin < 0: - error = _lib.extism_error(self.ctx.pointer, -1) - if error != _ffi.NULL: - raise Error(_ffi.string(error).decode()) - raise Error("Unable to register plugin") + if self.plugin == _ffi.NULL: + msg = _ffi.string(errmsg[0]) + _lib.extism_plugin_new_error_free(errmsg[0]) + raise Error(msg.decode()) if config is not None: s = json.dumps(config).encode() - _lib.extism_plugin_config(self.ctx.pointer, self.plugin, s, len(s)) - - def cancel_handle(self): - return CancelHandle( - _lib.extism_plugin_cancel_handle(self.ctx.pointer, self.plugin) - ) - - def update( - self, manifest: Union[str, bytes, dict], wasi=False, config=None, functions=None - ): - """ - Update a plugin with a new WASM module or manifest + _lib.extism_plugin_config(self.plugin, s, len(s)) - Parameters - ---------- - plugin : Union[str, bytes, dict] - A manifest dictionary describing the plugin or the raw bytes for a module. See [Extism > Concepts > Manifest](https://extism.org/docs/concepts/manifest/). - wasi : bool - Set to `True` to enable WASI support - config : dict - The plugin config dictionary - """ - wasm = _wasm(manifest) - if functions is not None: - self.functions = functions - functions = [f.pointer for f in functions] - ptr = _ffi.new("ExtismFunction*[]", functions) - ok = _lib.extism_plugin_update( - self.ctx.pointer, - self.plugin, - wasm, - len(wasm), - ptr, - len(functions), - wasi, - ) - else: - ok = _lib.extism_plugin_update( - self.ctx.pointer, self.plugin, wasm, len(wasm), _ffi.NULL, 0, wasi - ) - if not ok: - error = _lib.extism_error(self.ctx.pointer, -1) - if error != _ffi.NULL: - raise Error(_ffi.string(error).decode()) - raise Error("Unable to update plugin") + @property + def id(self) -> UUID: + b = bytes(_ffi.unpack(_lib.extism_plugin_id(self.plugin), 16)) + return UUID(bytes=b) - if config is not None: - s = json.dumps(config).encode() - _lib.extism_plugin_config(self.ctx.pointer, self.plugin, s, len(s)) + def cancel_handle(self): + return CancelHandle(_lib.extism_plugin_cancel_handle(self.plugin)) def _check_error(self, rc): if rc != 0: - error = _lib.extism_error(self.ctx.pointer, self.plugin) + error = _lib.extism_plugin_error(self.plugin) if error != _ffi.NULL: raise Error(_ffi.string(error).decode()) raise Error(f"Error code: {rc}") @@ -357,9 +248,7 @@ def function_exists(self, name: str) -> bool: ------- True if the function exists in the plugin, False otherwise """ - return _lib.extism_plugin_function_exists( - self.ctx.pointer, self.plugin, name.encode() - ) + return _lib.extism_plugin_function_exists(self.plugin, name.encode()) def call(self, function_name: str, data: Union[str, bytes], parse=bytes): """ @@ -384,22 +273,20 @@ def call(self, function_name: str, data: Union[str, bytes], parse=bytes): data = data.encode() self._check_error( _lib.extism_plugin_call( - self.ctx.pointer, self.plugin, function_name.encode(), data, len(data) + self.plugin, function_name.encode(), data, len(data) ) ) - out_len = _lib.extism_plugin_output_length(self.ctx.pointer, self.plugin) - out_buf = _lib.extism_plugin_output_data(self.ctx.pointer, self.plugin) + out_len = _lib.extism_plugin_output_length(self.plugin) + out_buf = _lib.extism_plugin_output_data(self.plugin) buf = _ffi.buffer(out_buf, out_len) if parse is None: return buf return parse(buf) def __del__(self): - if not hasattr(self, "ctx"): - return - if self.ctx.pointer == _ffi.NULL: + if not hasattr(self, "pointer"): return - _lib.extism_plugin_free(self.ctx.pointer, self.plugin) + _lib.extism_plugin_free(self.plugin) self.plugin = -1 def __enter__(self): diff --git a/python/tests/test_extism.py b/python/tests/test_extism.py index fd964f1f5..3bdb3c82c 100644 --- a/python/tests/test_extism.py +++ b/python/tests/test_extism.py @@ -9,74 +9,50 @@ class TestExtism(unittest.TestCase): - def test_context_new(self): - ctx = extism.Context() - self.assertIsNotNone(ctx) - del ctx - def test_call_plugin(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._manifest()) - j = json.loads(plugin.call("count_vowels", "this is a test")) - self.assertEqual(j["count"], 4) - j = json.loads(plugin.call("count_vowels", "this is a test again")) - self.assertEqual(j["count"], 7) - j = json.loads(plugin.call("count_vowels", "this is a test thrice")) - self.assertEqual(j["count"], 6) - j = json.loads(plugin.call("count_vowels", "🌎hello🌎world🌎")) - self.assertEqual(j["count"], 3) - - def test_update_plugin_manifest(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._manifest()) - # update with just the raw bytes of the wasm - plugin.update(self._count_vowels_wasm()) - # should still work - j = json.loads(plugin.call("count_vowels", "this is a test")) - self.assertEqual(j["count"], 4) + plugin = extism.Plugin(self._manifest()) + j = json.loads(plugin.call("count_vowels", "this is a test")) + self.assertEqual(j["count"], 4) + j = json.loads(plugin.call("count_vowels", "this is a test again")) + self.assertEqual(j["count"], 7) + j = json.loads(plugin.call("count_vowels", "this is a test thrice")) + self.assertEqual(j["count"], 6) + j = json.loads(plugin.call("count_vowels", "🌎hello🌎world🌎")) + self.assertEqual(j["count"], 3) def test_function_exists(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._manifest()) - self.assertTrue(plugin.function_exists("count_vowels")) - self.assertFalse(plugin.function_exists("i_dont_exist")) + plugin = extism.Plugin(self._manifest()) + self.assertTrue(plugin.function_exists("count_vowels")) + self.assertFalse(plugin.function_exists("i_dont_exist")) def test_errors_on_unknown_function(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._manifest()) - self.assertRaises( - extism.Error, lambda: plugin.call("i_dont_exist", "someinput") - ) + plugin = extism.Plugin(self._manifest()) + self.assertRaises( + extism.Error, lambda: plugin.call("i_dont_exist", "someinput") + ) def test_can_free_plugin(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._manifest()) - del plugin + plugin = extism.Plugin(self._manifest()) + del plugin def test_errors_on_bad_manifest(self): - with extism.Context() as ctx: - self.assertRaises( - extism.Error, lambda: ctx.plugin({"invalid_manifest": True}) - ) - plugin = ctx.plugin(self._manifest()) - self.assertRaises( - extism.Error, lambda: plugin.update({"invalid_manifest": True}) - ) + self.assertRaises( + extism.Error, lambda: extism.Plugin({"invalid_manifest": True}) + ) def test_extism_version(self): self.assertIsNotNone(extism.extism_version()) def test_extism_plugin_timeout(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._loop_manifest()) - start = datetime.now() - self.assertRaises(extism.Error, lambda: plugin.call("infinite_loop", b"")) - end = datetime.now() - self.assertLess( - end, - start + timedelta(seconds=1.01), - "plugin timeout exceeded 1000ms expectation", - ) + plugin = extism.Plugin(self._loop_manifest()) + start = datetime.now() + self.assertRaises(extism.Error, lambda: plugin.call("infinite_loop", b"")) + end = datetime.now() + self.assertLess( + end, + start + timedelta(seconds=1.01), + "plugin timeout exceeded 1000ms expectation", + ) def test_extism_host_function(self): @extism.host_fn @@ -86,31 +62,29 @@ def hello_world(plugin, params, results, user_data): mem[:] = user_data results[0].value = offs.offset - with extism.Context() as ctx: - f = [ - extism.Function( - "hello_world", - [extism.ValType.I64], - [extism.ValType.I64], - hello_world, - b"test", - ) - ] - plugin = ctx.plugin(self._manifest(functions=True), functions=f, wasi=True) - res = plugin.call("count_vowels", "aaa") - self.assertEqual(res, b"test") + f = [ + extism.Function( + "hello_world", + [extism.ValType.I64], + [extism.ValType.I64], + hello_world, + b"test", + ) + ] + plugin = extism.Plugin(self._manifest(functions=True), functions=f, wasi=True) + res = plugin.call("count_vowels", "aaa") + self.assertEqual(res, b"test") def test_extism_plugin_cancel(self): - with extism.Context() as ctx: - plugin = ctx.plugin(self._loop_manifest()) - cancel_handle = plugin.cancel_handle() + plugin = extism.Plugin(self._loop_manifest()) + cancel_handle = plugin.cancel_handle() - def cancel(handle): - time.sleep(0.5) - handle.cancel() + def cancel(handle): + time.sleep(0.5) + handle.cancel() - Thread(target=cancel, args=[cancel_handle]).run() - self.assertRaises(extism.Error, lambda: plugin.call("infinite_loop", b"")) + Thread(target=cancel, args=[cancel_handle]).run() + self.assertRaises(extism.Error, lambda: plugin.call("infinite_loop", b"")) def _manifest(self, functions=False): wasm = self._count_vowels_wasm(functions) diff --git a/ruby/GETTING_STARTED.md b/ruby/GETTING_STARTED.md index 198a0dc54..818aa4b48 100644 --- a/ruby/GETTING_STARTED.md +++ b/ruby/GETTING_STARTED.md @@ -8,27 +8,19 @@ require "extism" require "json" -Extism.with_context do |ctx| - manifest = { - :wasm => [{ :path => "../wasm/code.wasm" }], - } - plugin = ctx.plugin(manifest) - res = JSON.parse(plugin.call("count_vowels", "this is a test")) - puts res["count"] # => 4 -end +manifest = { + :wasm => [{ :path => "../wasm/code.wasm" }], +} +plugin = Plugin.new(manifest) +res = JSON.parse(plugin.call("count_vowels", "this is a test")) ``` ### API -There are two primary classes you need to understand: +There is just one primary class you need to understand: -* [Context](Extism/Context.html) * [Plugin](Extism/Plugin.html) -#### Context - -The [Context](Extism/Context.html) can be thought of as a session. You need a context to interact with the Extism runtime. The context holds your plugins and when you free the context, it frees your plugins. We recommend using the [Extism.with_context](Extism.html#with_context-class_method) method to ensure that your plugins are cleaned up. But if you need a long lived context for any reason, you can use the constructor [Extism::Context.new](Extism/Context.html#initialize-instance_method). - #### Plugin The [Plugin](Extism/Plugin.html) represents an instance of your WASM program from the given manifest. diff --git a/ruby/lib/extism.rb b/ruby/lib/extism.rb index 0fbe4dc8e..f585a9420 100644 --- a/ruby/lib/extism.rb +++ b/ruby/lib/extism.rb @@ -24,98 +24,14 @@ def self.set_log_file(name, level = nil) end $PLUGINS = {} - $FREE_PLUGIN = proc { |id| - x = $PLUGINS[id] + $FREE_PLUGIN = proc { |ptr| + x = $PLUGINS[ptr] if !x.nil? - C.extism_plugin_free(x[:context].pointer, x[:plugin]) - $PLUGINS.delete(id) + C.extism_plugin_free(x[:plugin]) + $PLUGINS.delete(ptr) end } - $CONTEXTS = {} - $FREE_CONTEXT = proc { |id| - x = $CONTEXTS[id] - if !x.nil? - C.extism_context_free($CONTEXTS[id]) - $CONTEXTS.delete(id) - end - } - - # A Context is needed to create plugins. The Context - # is where your plugins live. Freeing the context - # frees all of the plugins in its scope. - # - # @example Create and free a context - # ctx = Extism::Context.new - # plugin = ctx.plugin(my_manifest) - # puts plugin.call("my_func", "my-input") - # ctx.free # frees any plugins - # - # @example Use with_context to auto-free - # Extism.with_context do |ctx| - # plugin = ctx.plugin(my_manifest) - # puts plugin.call("my_func", "my-input") - # end # frees context after exiting this block - # - # @attr_reader pointer [FFI::Pointer] Pointer to the Extism context. *Used internally*. - class Context - attr_reader :pointer - - # Initialize a new context - def initialize - @pointer = C.extism_context_new() - $CONTEXTS[self.object_id] = @pointer - ObjectSpace.define_finalizer(self, $FREE_CONTEXT) - end - - # Remove all registered plugins in this context - # @return [void] - def reset - C.extism_context_reset(@pointer) - end - - # Free the context, this should be called when it is no longer needed - # @return [void] - def free - return if @pointer.nil? - - $CONTEXTS.delete(self.object_id) - C.extism_context_free(@pointer) - @pointer = nil - end - - # Create a new plugin from a WASM module or JSON encoded manifest - # - # @see Plugin#new - # @param wasm [Hash, String] The manifest for the plugin. See https://extism.org/docs/concepts/manifest/. - # @param wasi [Boolean] Enable WASI support - # @param config [Hash] The plugin config - # @return [Plugin] - def plugin(wasm, wasi = false, config = nil) - Plugin.new(wasm, wasi, config, self) - end - end - - # A context manager to create contexts and ensure that they get freed. - # - # @example Use with_context to auto-free - # Extism.with_context do |ctx| - # plugin = ctx.plugin(my_manifest) - # puts plugin.call("my_func", "my-input") - # end # frees context after exiting this block - # - # @yield [ctx] Yields the created Context - # @return [Object] returns whatever your block returns - def self.with_context(&block) - ctx = Context.new - begin - x = block.call(ctx) - return x - ensure - ctx.free - end - end - # A CancelHandle can be used to cancel a running plugin from another thread class CancelHandle def initialize(handle) @@ -135,61 +51,25 @@ class Plugin # @param wasm [Hash, String] The manifest or WASM binary. See https://extism.org/docs/concepts/manifest/. # @param wasi [Boolean] Enable WASI support # @param config [Hash] The plugin config - # @param context [Context] The context to manager this plugin - def initialize(wasm, wasi = false, config = nil, context = nil) - if context.nil? then - context = Context.new - end - @context = context + def initialize(wasm, wasi = false, config = nil) if wasm.class == Hash wasm = JSON.generate(wasm) end code = FFI::MemoryPointer.new(:char, wasm.bytesize) + errmsg = FFI::MemoryPointer.new(:pointer) code.put_bytes(0, wasm) - @plugin = C.extism_plugin_new(context.pointer, code, wasm.bytesize, nil, 0, wasi) - if @plugin < 0 - err = C.extism_error(@context.pointer, -1) - if err&.empty? - raise Error.new "extism_plugin_new failed" - else - raise Error.new err - end + @plugin = C.extism_plugin_new(code, wasm.bytesize, nil, 0, wasi, errmsg) + if @plugin.null? + err = errmsg.read_pointer.read_string + C.extism_plugin_new_error_free errmsg.read_pointer + raise Error.new err end - $PLUGINS[self.object_id] = { :plugin => @plugin, :context => context } + $PLUGINS[self.object_id] = { :plugin => @plugin } ObjectSpace.define_finalizer(self, $FREE_PLUGIN) - if config != nil and @plugin >= 0 - s = JSON.generate(config) - ptr = FFI::MemoryPointer::from_string(s) - C.extism_plugin_config(@context.pointer, @plugin, ptr, s.bytesize) - end - end - - # Update a plugin with new WASM module or manifest - # - # @param wasm [Hash, String] The manifest or WASM binary. See https://extism.org/docs/concepts/manifest/. - # @param wasi [Boolean] Enable WASI support - # @param config [Hash] The plugin config - # @return [void] - def update(wasm, wasi = false, config = nil) - if wasm.class == Hash - wasm = JSON.generate(wasm) - end - code = FFI::MemoryPointer.new(:char, wasm.bytesize) - code.put_bytes(0, wasm) - ok = C.extism_plugin_update(@context.pointer, @plugin, code, wasm.bytesize, nil, 0, wasi) - if !ok - err = C.extism_error(@context.pointer, @plugin) - if err&.empty? - raise Error.new "extism_plugin_update failed" - else - raise Error.new err - end - end - - if config != nil + if config != nil and @plugin.null? s = JSON.generate(config) ptr = FFI::MemoryPointer::from_string(s) - C.extism_plugin_config(@context.pointer, @plugin, ptr, s.bytesize) + C.extism_plugin_config(@plugin, ptr, s.bytesize) end end @@ -198,7 +78,7 @@ def update(wasm, wasi = false, config = nil) # @param name [String] The name of the function # @return [Boolean] Returns true if function exists def has_function?(name) - C.extism_plugin_function_exists(@context.pointer, @plugin, name) + C.extism_plugin_function_exists(@plugin, name) end # Call a function by name @@ -210,17 +90,17 @@ def call(name, data, &block) # If no block was passed then use Pointer::read_string block ||= ->(buf, len) { buf.read_string(len) } input = FFI::MemoryPointer::from_string(data) - rc = C.extism_plugin_call(@context.pointer, @plugin, name, input, data.bytesize) + rc = C.extism_plugin_call(@plugin, name, input, data.bytesize) if rc != 0 - err = C.extism_error(@context.pointer, @plugin) + err = C.extism_plugin_error(@plugin) if err&.empty? raise Error.new "extism_call failed" else raise Error.new err end end - out_len = C.extism_plugin_output_length(@context.pointer, @plugin) - buf = C.extism_plugin_output_data(@context.pointer, @plugin) + out_len = C.extism_plugin_output_length(@plugin) + buf = C.extism_plugin_output_data(@plugin) block.call(buf, out_len) end @@ -228,16 +108,16 @@ def call(name, data, &block) # # @return [void] def free - return if @context.pointer.nil? + return if @plugin.null? $PLUGINS.delete(self.object_id) - C.extism_plugin_free(@context.pointer, @plugin) - @plugin = -1 + C.extism_plugin_free(@plugin) + @plugin = nil end # Get a CancelHandle for a plugin def cancel_handle - return CancelHandle.new(C.extism_plugin_cancel_handle(@context.pointer, @plugin)) + return CancelHandle.new(C.extism_plugin_cancel_handle(@plugin)) end end @@ -248,20 +128,18 @@ def cancel_handle module C extend FFI::Library ffi_lib "extism" - attach_function :extism_context_new, [], :pointer - attach_function :extism_context_free, [:pointer], :void - attach_function :extism_plugin_new, [:pointer, :pointer, :uint64, :pointer, :uint64, :bool], :int32 - attach_function :extism_plugin_update, [:pointer, :int32, :pointer, :uint64, :pointer, :uint64, :bool], :bool - attach_function :extism_error, [:pointer, :int32], :string - attach_function :extism_plugin_call, [:pointer, :int32, :string, :pointer, :uint64], :int32 - attach_function :extism_plugin_function_exists, [:pointer, :int32, :string], :bool - attach_function :extism_plugin_output_length, [:pointer, :int32], :uint64 - attach_function :extism_plugin_output_data, [:pointer, :int32], :pointer + attach_function :extism_plugin_new_error_free, [:pointer], :void + attach_function :extism_plugin_new, [:pointer, :uint64, :pointer, :uint64, :bool, :pointer], :pointer + attach_function :extism_plugin_error, [:pointer], :string + attach_function :extism_plugin_call, [:pointer, :string, :pointer, :uint64], :int32 + attach_function :extism_plugin_function_exists, [:pointer, :string], :bool + attach_function :extism_plugin_output_length, [:pointer], :uint64 + attach_function :extism_plugin_output_data, [:pointer], :pointer attach_function :extism_log_file, [:string, :pointer], :void - attach_function :extism_plugin_free, [:pointer, :int32], :void - attach_function :extism_context_reset, [:pointer], :void + attach_function :extism_plugin_free, [:pointer], :void attach_function :extism_version, [], :string - attach_function :extism_plugin_cancel_handle, [:pointer, :int32], :pointer + attach_function :extism_plugin_id, [:pointer], :pointer + attach_function :extism_plugin_cancel_handle, [:pointer], :pointer attach_function :extism_plugin_cancel, [:pointer], :bool end end diff --git a/ruby/test/test_extism.rb b/ruby/test/test_extism.rb index db4c2cfea..3a7205973 100644 --- a/ruby/test/test_extism.rb +++ b/ruby/test/test_extism.rb @@ -7,73 +7,43 @@ def test_that_it_has_a_version_number refute_nil Extism::VERSION end - def test_create_context - refute_nil Extism::Context.new - end - def test_plugin_call - Extism.with_context do |ctx| - plugin = ctx.plugin(manifest) - res = JSON.parse(plugin.call("count_vowels", "this is a test")) - assert_equal res["count"], 4 - res = JSON.parse(plugin.call("count_vowels", "this is a test again")) - assert_equal res["count"], 7 - res = JSON.parse(plugin.call("count_vowels", "this is a test thrice")) - assert_equal res["count"], 6 - res = JSON.parse(plugin.call("count_vowels", "🌎hello🌎world🌎")) - assert_equal res["count"], 3 - end + plugin = Extism::Plugin.new(manifest) + res = JSON.parse(plugin.call("count_vowels", "this is a test")) + assert_equal res["count"], 4 + res = JSON.parse(plugin.call("count_vowels", "this is a test again")) + assert_equal res["count"], 7 + res = JSON.parse(plugin.call("count_vowels", "this is a test thrice")) + assert_equal res["count"], 6 + res = JSON.parse(plugin.call("count_vowels", "🌎hello🌎world🌎")) + assert_equal res["count"], 3 end def test_can_free_plugin - ctx = Extism::Context.new - plugin = ctx.plugin(manifest) + plugin = Extism::Plugin.new(manifest) _res = plugin.call("count_vowels", "this is a test") plugin.free assert_raises(Extism::Error) do _res = plugin.call("count_vowels", "this is a test") end - ctx.free - end - - def test_can_update_a_manifest - Extism.with_context do |ctx| - plugin = ctx.plugin(manifest) - # let's load a raw wasm module rather than use a manifest - raw_module = IO.read("../wasm/code.wasm") - plugin.update(raw_module) - # check we can still call it - res = JSON.parse(plugin.call("count_vowels", "this is a test")) - assert_equal res["count"], 4 - end end def test_errors_on_bad_manifest - Extism.with_context do |ctx| - assert_raises(Extism::Error) do - _plugin = ctx.plugin({ not_a_real_manifest: true }) - end - plugin = ctx.plugin(manifest) - assert_raises(Extism::Error) do - plugin.update({ not_a_real_manifest: true }) - end + assert_raises(Extism::Error) do + _plugin = Extism::Plugin.new({ not_a_real_manifest: true }) end end def test_has_function - Extism.with_context do |ctx| - plugin = ctx.plugin(manifest) - assert plugin.has_function? "count_vowels" - refute plugin.has_function? "i_am_not_a_function" - end + plugin = Extism::Plugin.new(manifest) + assert plugin.has_function? "count_vowels" + refute plugin.has_function? "i_am_not_a_function" end def test_errors_on_unknown_function - Extism.with_context do |ctx| - plugin = ctx.plugin(manifest) - assert_raises(Extism::Error) do - plugin.call("non_existent_function", "input") - end + plugin = Extism::Plugin.new(manifest) + assert_raises(Extism::Error) do + plugin.call("non_existent_function", "input") end end diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 2c52f4783..efa7d2d58 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,17 +1,17 @@ [package] -name = "extism-runtime" -version = "0.5.0" +name = "extism" +version = "1.0.0-alpha.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" homepage = "https://extism.org" repository = "https://github.com/extism/extism" -description = "Extism runtime component" +description = "Extism runtime and Rust SDK" [dependencies] -wasmtime = ">= 10.0.0, < 12.0.0" -wasmtime-wasi = ">= 10.0.0, < 12.0.0" -wasmtime-wasi-nn = {version = ">= 10.0.0, < 12.0.0", optional=true} +wasmtime = ">= 10.0.0, < 13.0.0" +wasmtime-wasi = ">= 10.0.0, < 13.0.0" +wasmtime-wasi-nn = {version = ">= 10.0.0, < 13.0.0", optional=true} anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" @@ -22,7 +22,7 @@ log4rs = "1.1" url = "2" glob = "0.3" ureq = {version = "2.5", optional=true} -extism-manifest = { version = "0.5.0", path = "../manifest" } +extism-manifest = { version = "1.0.0-alpha.0", path = "../manifest" } uuid = { version = "1", features = ["v4"] } libc = "0.2" diff --git a/runtime/build.rs b/runtime/build.rs index c78a36ccb..f23391ecd 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -14,11 +14,11 @@ fn main() { .with_pragma_once(true) .with_after_include(fn_macro) .rename_item("Size", "ExtismSize") - .rename_item("PluginIndex", "ExtismPlugin") - .rename_item("Context", "ExtismContext") .rename_item("ValType", "ExtismValType") .rename_item("ValUnion", "ExtismValUnion") - .rename_item("Internal", "ExtismCurrentPlugin") + .rename_item("CurrentPlugin", "ExtismCurrentPlugin") + .rename_item("Plugin", "ExtismPlugin") + .rename_item("Function", "ExtismFunction") .with_style(cbindgen::Style::Type) .generate() { diff --git a/runtime/extism.h b/runtime/extism.h index 507ef44de..2555cec71 100644 --- a/runtime/extism.h +++ b/runtime/extism.h @@ -42,21 +42,24 @@ typedef enum { } ExtismValType; /** - * A `Context` is used to store and manage plugins + * CurrentPlugin stores data that is available to the caller in PDK functions, this should + * only be accessed from inside a host function */ -typedef struct ExtismContext ExtismContext; +typedef struct ExtismCurrentPlugin ExtismCurrentPlugin; typedef struct ExtismCancelHandle ExtismCancelHandle; /** - * Wraps host functions + * Wraps raw host functions with some additional metadata and user data */ typedef struct ExtismFunction ExtismFunction; /** - * Internal stores data that is available to the caller in PDK functions + * Plugin contains everything needed to execute a WASM function */ -typedef struct ExtismCurrentPlugin ExtismCurrentPlugin; +typedef struct ExtismPlugin ExtismPlugin; + +typedef uint64_t ExtismMemoryHandle; typedef uint64_t ExtismSize; @@ -81,19 +84,17 @@ typedef struct { /** * Host function signature */ -typedef void (*ExtismFunctionType)(ExtismCurrentPlugin *plugin, const ExtismVal *inputs, ExtismSize n_inputs, ExtismVal *outputs, ExtismSize n_outputs, void *data); - -typedef int32_t ExtismPlugin; - -/** - * Create a new context - */ -ExtismContext *extism_context_new(void); +typedef void (*ExtismFunctionType)(ExtismCurrentPlugin *plugin, + const ExtismVal *inputs, + ExtismSize n_inputs, + ExtismVal *outputs, + ExtismSize n_outputs, + void *data); /** - * Free a context + * Get a plugin's ID, the returned bytes are a 16 byte buffer that represent a UUID value */ -void extism_context_free(ExtismContext *ctx); +const uint8_t *extism_plugin_id(ExtismPlugin *plugin); /** * Returns a pointer to the memory of the currently running plugin @@ -105,19 +106,19 @@ uint8_t *extism_current_plugin_memory(ExtismCurrentPlugin *plugin); * Allocate a memory block in the currently running plugin * NOTE: this should only be called from host functions. */ -uint64_t extism_current_plugin_memory_alloc(ExtismCurrentPlugin *plugin, ExtismSize n); +ExtismMemoryHandle extism_current_plugin_memory_alloc(ExtismCurrentPlugin *plugin, ExtismSize n); /** * Get the length of an allocated block * NOTE: this should only be called from host functions. */ -ExtismSize extism_current_plugin_memory_length(ExtismCurrentPlugin *plugin, ExtismSize n); +ExtismSize extism_current_plugin_memory_length(ExtismCurrentPlugin *plugin, ExtismMemoryHandle n); /** * Free an allocated memory block * NOTE: this should only be called from host functions. */ -void extism_current_plugin_memory_free(ExtismCurrentPlugin *plugin, uint64_t ptr); +void extism_current_plugin_memory_free(ExtismCurrentPlugin *plugin, ExtismMemoryHandle ptr); /** * Create a new host function @@ -146,14 +147,14 @@ ExtismFunction *extism_function_new(const char *name, void (*free_user_data)(void *_)); /** - * Set the namespace of an `ExtismFunction` + * Free `ExtismFunction` */ -void extism_function_set_namespace(ExtismFunction *ptr, const char *namespace_); +void extism_function_free(ExtismFunction *f); /** - * Free an `ExtismFunction` + * Set the namespace of an `ExtismFunction` */ -void extism_function_free(ExtismFunction *ptr); +void extism_function_set_namespace(ExtismFunction *ptr, const char *namespace_); /** * Create a new plugin with additional host functions @@ -164,61 +165,42 @@ void extism_function_free(ExtismFunction *ptr); * `n_functions`: the number of functions provided * `with_wasi`: enables/disables WASI */ -ExtismPlugin extism_plugin_new(ExtismContext *ctx, - const uint8_t *wasm, - ExtismSize wasm_size, - const ExtismFunction **functions, - ExtismSize n_functions, - bool with_wasi); +ExtismPlugin *extism_plugin_new(const uint8_t *wasm, + ExtismSize wasm_size, + const ExtismFunction **functions, + ExtismSize n_functions, + bool with_wasi, + char **errmsg); /** - * Update a plugin, keeping the existing ID - * - * Similar to `extism_plugin_new` but takes an `index` argument to specify - * which plugin to update - * - * Memory for this plugin will be reset upon update + * Free the error returned by `extism_plugin_new`, errors returned from `extism_plugin_error` don't need to be freed */ -bool extism_plugin_update(ExtismContext *ctx, - ExtismPlugin index, - const uint8_t *wasm, - ExtismSize wasm_size, - const ExtismFunction **functions, - ExtismSize nfunctions, - bool with_wasi); +void extism_plugin_new_error_free(char *err); /** * Remove a plugin from the registry and free associated memory */ -void extism_plugin_free(ExtismContext *ctx, ExtismPlugin plugin); +void extism_plugin_free(ExtismPlugin *plugin); /** * Get plugin ID for cancellation */ -const ExtismCancelHandle *extism_plugin_cancel_handle(ExtismContext *ctx, ExtismPlugin plugin); +const ExtismCancelHandle *extism_plugin_cancel_handle(const ExtismPlugin *plugin); /** * Cancel a running plugin */ bool extism_plugin_cancel(const ExtismCancelHandle *handle); -/** - * Remove all plugins from the registry - */ -void extism_context_reset(ExtismContext *ctx); - /** * Update plugin config values, this will merge with the existing values */ -bool extism_plugin_config(ExtismContext *ctx, - ExtismPlugin plugin, - const uint8_t *json, - ExtismSize json_size); +bool extism_plugin_config(ExtismPlugin *plugin, const uint8_t *json, ExtismSize json_size); /** * Returns true if `func_name` exists */ -bool extism_plugin_function_exists(ExtismContext *ctx, ExtismPlugin plugin, const char *func_name); +bool extism_plugin_function_exists(ExtismPlugin *plugin, const char *func_name); /** * Call a function @@ -227,27 +209,30 @@ bool extism_plugin_function_exists(ExtismContext *ctx, ExtismPlugin plugin, cons * `data`: is the input data * `data_len`: is the length of `data` */ -int32_t extism_plugin_call(ExtismContext *ctx, - ExtismPlugin plugin_id, +int32_t extism_plugin_call(ExtismPlugin *plugin, const char *func_name, const uint8_t *data, ExtismSize data_len); /** - * Get the error associated with a `Context` or `Plugin`, if `plugin` is `-1` then the context - * error will be returned + * Get the error associated with a `Plugin` + */ +const char *extism_error(ExtismPlugin *plugin); + +/** + * Get the error associated with a `Plugin` */ -const char *extism_error(ExtismContext *ctx, ExtismPlugin plugin); +const char *extism_plugin_error(ExtismPlugin *plugin); /** * Get the length of a plugin's output data */ -ExtismSize extism_plugin_output_length(ExtismContext *ctx, ExtismPlugin plugin); +ExtismSize extism_plugin_output_length(ExtismPlugin *plugin); /** * Get a pointer to the output data */ -const uint8_t *extism_plugin_output_data(ExtismContext *ctx, ExtismPlugin plugin); +const uint8_t *extism_plugin_output_data(ExtismPlugin *plugin); /** * Set log file and level diff --git a/runtime/src/context.rs b/runtime/src/context.rs deleted file mode 100644 index c8e5c6e2b..000000000 --- a/runtime/src/context.rs +++ /dev/null @@ -1,145 +0,0 @@ -use std::collections::{BTreeMap, VecDeque}; - -use crate::*; - -static mut TIMER: std::sync::Mutex> = std::sync::Mutex::new(None); - -/// A `Context` is used to store and manage plugins -pub struct Context { - /// Plugin registry - pub plugins: BTreeMap, - - /// Error message - pub error: Option, - next_id: std::sync::atomic::AtomicI32, - reclaimed_ids: VecDeque, - - // Timeout thread - pub(crate) epoch_timer_tx: std::sync::mpsc::SyncSender, -} - -impl Default for Context { - fn default() -> Self { - Context::new() - } -} - -const START_REUSING_IDS: usize = 25; - -impl Context { - pub(crate) fn timer() -> std::sync::MutexGuard<'static, Option> { - match unsafe { TIMER.lock() } { - Ok(x) => x, - Err(e) => e.into_inner(), - } - } - - /// Create a new context - pub fn new() -> Context { - let timer = &mut *Self::timer(); - - let tx = match timer { - None => Timer::init(timer), - Some(t) => t.tx.clone(), - }; - - Context { - plugins: BTreeMap::new(), - error: None, - next_id: std::sync::atomic::AtomicI32::new(0), - reclaimed_ids: VecDeque::new(), - epoch_timer_tx: tx, - } - } - - /// Get the next valid plugin ID - pub fn next_id(&mut self) -> Result { - // Make sure we haven't exhausted all plugin IDs, to reach this it would require the machine - // running this code to have a lot of memory - no computer I tested on was able to allocate - // the max number of plugins. - // - // Since `Context::remove` collects IDs that have been removed we will - // try to use one of those before returning an error - let exhausted = self.next_id.load(std::sync::atomic::Ordering::SeqCst) == PluginIndex::MAX; - - // If there are a significant number of old IDs we can start to re-use them - if self.reclaimed_ids.len() >= START_REUSING_IDS || exhausted { - if let Some(x) = self.reclaimed_ids.pop_front() { - return Ok(x); - } - - if exhausted { - return Err(anyhow::format_err!( - "All plugin descriptors are in use, unable to allocate a new plugin" - )); - } - } - - Ok(self - .next_id - .fetch_add(1, std::sync::atomic::Ordering::SeqCst)) - } - - pub fn insert(&mut self, plugin: Plugin) -> PluginIndex { - // Generate a new plugin ID - let id: i32 = match self.next_id() { - Ok(id) => id, - Err(e) => { - error!("Error creating Plugin: {:?}", e); - self.set_error(e); - return -1; - } - }; - self.plugins.insert(id, plugin); - id - } - - pub fn new_plugin<'a>( - &mut self, - data: impl AsRef<[u8]>, - imports: impl IntoIterator, - with_wasi: bool, - ) -> PluginIndex { - let plugin = match Plugin::new(data, imports, with_wasi) { - Ok(x) => x, - Err(e) => { - error!("Error creating Plugin: {:?}", e); - self.set_error(e); - return -1; - } - }; - self.insert(plugin) - } - - /// Set the context error - pub fn set_error(&mut self, e: impl std::fmt::Debug) { - trace!("Set context error: {:?}", e); - self.error = Some(error_string(e)); - } - - /// Convenience function to set error and return the value passed as the final parameter - pub fn error(&mut self, e: impl std::fmt::Debug, x: T) -> T { - self.set_error(e); - x - } - - /// Get a plugin from the context - pub fn plugin(&mut self, id: PluginIndex) -> Option<*mut Plugin> { - match self.plugins.get_mut(&id) { - Some(x) => Some(x), - None => None, - } - } - - pub fn plugin_exists(&mut self, id: PluginIndex) -> bool { - self.plugins.contains_key(&id) - } - - /// Remove a plugin from the context - pub fn remove(&mut self, id: PluginIndex) { - if self.plugins.remove(&id).is_some() { - // Collect old IDs in case we need to re-use them - self.reclaimed_ids.push_back(id); - } - } -} diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs new file mode 100644 index 000000000..3037a8c9a --- /dev/null +++ b/runtime/src/current_plugin.rs @@ -0,0 +1,374 @@ +use crate::*; + +#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord)] +pub struct MemoryHandle(u64, u64); + +impl MemoryHandle { + /// Create a new memory handle, this is unsafe because the values are provided by the user + /// and may not be a valid handle + /// + /// # Safety + /// This function is unsafe because there is no validation that the offset or + /// length of the handle is correct + pub unsafe fn new(offs: u64, len: u64) -> MemoryHandle { + MemoryHandle(offs, len) + } + + /// Get the length of the memory block + pub fn len(&self) -> usize { + self.1 as usize + } + + /// Returns `true` when the handle length is 0 + pub fn is_empty(&self) -> bool { + self.1 == 0 + } + + /// Get the offset to this block in Extism memory + pub fn offset(&self) -> u64 { + self.0 + } +} + +impl From for Val { + fn from(m: MemoryHandle) -> Self { + Val::I64(m.0 as i64) + } +} + +/// CurrentPlugin stores data that is available to the caller in PDK functions, this should +/// only be accessed from inside a host function +pub struct CurrentPlugin { + /// Plugin variables + pub(crate) vars: std::collections::BTreeMap>, + + /// Extism manifest + pub(crate) manifest: extism_manifest::Manifest, + pub(crate) store: *mut Store, + pub(crate) linker: *mut wasmtime::Linker, + pub(crate) wasi: Option, + pub(crate) http_status: u16, + pub(crate) available_pages: Option, + pub(crate) memory_limiter: Option, +} + +unsafe impl Sync for CurrentPlugin {} +unsafe impl Send for CurrentPlugin {} + +pub(crate) struct MemoryLimiter { + bytes_left: usize, + max_bytes: usize, +} + +impl MemoryLimiter { + pub(crate) fn reset(&mut self) { + self.bytes_left = self.max_bytes; + } +} + +impl wasmtime::ResourceLimiter for MemoryLimiter { + fn memory_growing( + &mut self, + current: usize, + desired: usize, + maximum: Option, + ) -> Result { + if let Some(max) = maximum { + if desired > max { + return Ok(false); + } + } + + let d = desired - current; + if d > self.bytes_left { + return Ok(false); + } + + self.bytes_left -= d; + Ok(true) + } + + fn table_growing(&mut self, _current: u32, desired: u32, maximum: Option) -> Result { + if let Some(max) = maximum { + return Ok(desired <= max); + } + + Ok(true) + } +} + +impl CurrentPlugin { + /// Access a plugin's variables + pub fn vars(&self) -> &std::collections::BTreeMap> { + &self.vars + } + + /// Mutable access to a plugin's variables + pub fn vars_mut(&mut self) -> &mut std::collections::BTreeMap> { + &mut self.vars + } + + /// Plugin manifest + pub fn manifest(&self) -> &Manifest { + &self.manifest + } + + pub(crate) fn new( + manifest: extism_manifest::Manifest, + wasi: bool, + available_pages: Option, + ) -> Result { + let wasi = if wasi { + let auth = wasmtime_wasi::ambient_authority(); + let mut ctx = wasmtime_wasi::WasiCtxBuilder::new(); + for (k, v) in manifest.config.iter() { + ctx = ctx.env(k, v)?; + } + + if let Some(a) = &manifest.allowed_paths { + for (k, v) in a.iter() { + let d = wasmtime_wasi::Dir::open_ambient_dir(k, auth)?; + ctx = ctx.preopened_dir(d, v)?; + } + } + + #[cfg(feature = "nn")] + let nn = wasmtime_wasi_nn::WasiNnCtx::new()?; + + Some(Wasi { + ctx: ctx.build(), + #[cfg(feature = "nn")] + nn, + }) + } else { + None + }; + + let memory_limiter = if let Some(pgs) = available_pages { + let n = pgs as usize * 65536; + Some(crate::current_plugin::MemoryLimiter { + max_bytes: n, + bytes_left: n, + }) + } else { + None + }; + + Ok(CurrentPlugin { + wasi, + manifest, + http_status: 0, + vars: BTreeMap::new(), + linker: std::ptr::null_mut(), + store: std::ptr::null_mut(), + available_pages, + memory_limiter, + }) + } + + /// Get a pointer to the plugin memory + pub fn memory_ptr(&mut self) -> *mut u8 { + let (linker, mut store) = self.linker_and_store(); + if let Some(mem) = linker.get(&mut store, "env", "memory") { + if let Some(mem) = mem.into_memory() { + return mem.data_ptr(&mut store); + } + } + + std::ptr::null_mut() + } + + /// Get a slice that contains the entire plugin memory + pub fn memory(&mut self) -> &mut [u8] { + let (linker, mut store) = self.linker_and_store(); + let mem = linker + .get(&mut store, "env", "memory") + .unwrap() + .into_memory() + .unwrap(); + let ptr = mem.data_ptr(&store); + if ptr.is_null() { + return &mut []; + } + let size = mem.data_size(&store); + unsafe { std::slice::from_raw_parts_mut(ptr, size) } + } + + /// Read a section of Extism plugin memory + pub fn memory_read(&mut self, handle: MemoryHandle) -> &[u8] { + trace!("memory_read: {}, {}", handle.0, handle.1); + let offs = handle.0 as usize; + let len = handle.1 as usize; + let mem = self.memory(); + &mem[offs..offs + len] + } + + /// Read a section of Extism plugin memory and convert to to an `str` + pub fn memory_read_str(&mut self, handle: MemoryHandle) -> Result<&str, std::str::Utf8Error> { + std::str::from_utf8(self.memory_read(handle)) + } + + /// Write data to an offset in Extism plugin memory + pub fn memory_write(&mut self, handle: MemoryHandle, bytes: impl AsRef<[u8]>) { + trace!("memory_write: {}", handle.0); + let b = bytes.as_ref(); + let offs = handle.0 as usize; + let len = b.len(); + self.memory()[offs..offs + len.min(handle.len())].copy_from_slice(bytes.as_ref()); + } + + /// Allocate a new block of Extism plugin memory + pub fn memory_alloc(&mut self, n: Size) -> Result { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + if let Some(f) = linker.get(&mut store, "env", "extism_alloc") { + f.into_func() + .unwrap() + .call(&mut store, &[Val::I64(n as i64)], output)?; + } else { + anyhow::bail!("Unable to allocate memory"); + } + let offs = output[0].unwrap_i64() as u64; + if offs == 0 { + anyhow::bail!("out of memory") + } + trace!("memory_alloc: {}, {}", offs, n); + Ok(MemoryHandle(offs, n)) + } + + /// Allocate a new block in Extism plugin memory and fill it will the provided bytes + pub fn memory_alloc_bytes(&mut self, bytes: impl AsRef<[u8]>) -> Result { + let b = bytes.as_ref(); + let offs = self.memory_alloc(b.len() as Size)?; + self.memory_write(offs, b); + Ok(offs) + } + + /// Free a block of Extism plugin memory + pub fn memory_free(&mut self, handle: MemoryHandle) { + let (linker, mut store) = self.linker_and_store(); + linker + .get(&mut store, "env", "extism_free") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(handle.0 as i64)], &mut []) + .unwrap(); + } + + /// Get a `MemoryHandle` from an offset + pub fn memory_handle(&mut self, offs: u64) -> Option { + if offs == 0 { + return None; + } + let length = self.memory_length(offs); + if length == 0 { + return None; + } + Some(MemoryHandle(offs, length)) + } + + /// Get a `MemoryHandle` from a `Val` reference - this can be used to convert a host function's + /// argument directly to `MemoryHandle` + pub fn memory_handle_val(&mut self, offs: &Val) -> Option { + let offs = offs.i64()? as u64; + let length = self.memory_length(offs); + if length == 0 { + return None; + } + Some(MemoryHandle(offs, length)) + } + + pub(crate) fn memory_length(&mut self, offs: u64) -> u64 { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_length") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(offs as i64)], output) + .unwrap(); + let len = output[0].unwrap_i64() as u64; + trace!("memory_length: {}, {}", offs, len); + len + } + + /// Clear the current plugin error + pub fn clear_error(&mut self) { + trace!("CurrentPlugin::clear_error"); + let (linker, mut store) = self.linker_and_store(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { + f.into_func() + .unwrap() + .call(&mut store, &[Val::I64(0)], &mut []) + .unwrap(); + } + } + + /// Returns true when the error has been set + pub fn has_error(&mut self) -> bool { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_error_get") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], output) + .unwrap(); + output[0].unwrap_i64() != 0 + } + + /// Get the current error message + pub fn get_error(&mut self) -> Option<&str> { + let (offs, length) = self.get_error_position(); + if offs == 0 { + return None; + } + + let data = self.memory_read(MemoryHandle(offs, length)); + let s = std::str::from_utf8(data); + match s { + Ok(s) => Some(s), + Err(_) => None, + } + } + + pub(crate) fn get_error_position(&mut self) -> (u64, u64) { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_error_get") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], output) + .unwrap(); + let offs = output[0].unwrap_i64() as u64; + let length = self.memory_length(offs); + (offs, length) + } +} + +impl Internal for CurrentPlugin { + fn store(&self) -> &Store { + unsafe { &*self.store } + } + + fn store_mut(&mut self) -> &mut Store { + unsafe { &mut *self.store } + } + + fn linker(&self) -> &Linker { + unsafe { &*self.linker } + } + + fn linker_mut(&mut self) -> &mut Linker { + unsafe { &mut *self.linker } + } + + fn linker_and_store(&mut self) -> (&mut Linker, &mut Store) { + unsafe { (&mut *self.linker, &mut *self.store) } + } +} diff --git a/runtime/src/function.rs b/runtime/src/function.rs index b5967607b..0a0489054 100644 --- a/runtime/src/function.rs +++ b/runtime/src/function.rs @@ -1,6 +1,6 @@ -use crate::{Error, Internal}; +use crate::{CurrentPlugin, Error}; -/// A list of all possible value types in WebAssembly. +/// An enumeration of all possible value types in WebAssembly. #[derive(Debug, Clone, Hash, Eq, PartialEq)] #[repr(C)] pub enum ValType { @@ -54,6 +54,8 @@ impl From for wasmtime::ValType { pub type Val = wasmtime::Val; +/// UserData is an opaque pointer used to store additional data +/// that gets passed into host function callbacks pub struct UserData { ptr: *mut std::ffi::c_void, free: Option, @@ -66,6 +68,8 @@ extern "C" fn free_any(ptr: *mut std::ffi::c_void) { } impl UserData { + /// Create a new `UserData` from an existing pointer and free function, this is used + /// by the C API to wrap C pointers into user data pub fn new_pointer( ptr: *mut std::ffi::c_void, free: Option, @@ -77,6 +81,7 @@ impl UserData { } } + /// Create a new `UserData` with any Rust type pub fn new(x: T) -> Self { let ptr = Box::into_raw(Box::new(x)) as *mut _; UserData { @@ -86,11 +91,13 @@ impl UserData { } } + /// Returns `true` if the underlying pointer is `null` pub fn is_null(&self) -> bool { self.ptr.is_null() } - pub fn as_ptr(&self) -> *mut std::ffi::c_void { + /// Get the user data pointer + pub(crate) fn as_ptr(&self) -> *mut std::ffi::c_void { self.ptr } @@ -102,6 +109,8 @@ impl UserData { } } + /// Get the pointer as an `Any` value - this will only return `Some` if `UserData::new` was used to create the value, + /// when `UserData::new_pointer` is used there is no way to know the original type of the pointer pub fn any(&self) -> Option<&dyn std::any::Any> { if !self.is_any || self.is_null() { return None; @@ -110,6 +119,8 @@ impl UserData { unsafe { Some(&*self.ptr) } } + /// Get the pointer as a mutable `Any` value - this will only return `Some` if `UserData::new` was used to create the value, + /// when `UserData::new_pointer` is used there is no way to know the original type of the pointer pub fn any_mut(&mut self) -> Option<&mut dyn std::any::Any> { if !self.is_any || self.is_null() { return None; @@ -146,10 +157,11 @@ impl Drop for UserData { unsafe impl Send for UserData {} unsafe impl Sync for UserData {} -type FunctionInner = dyn Fn(wasmtime::Caller, &[wasmtime::Val], &mut [wasmtime::Val]) -> Result<(), Error> +type FunctionInner = dyn Fn(wasmtime::Caller, &[wasmtime::Val], &mut [wasmtime::Val]) -> Result<(), Error> + Sync + Send; +/// Wraps raw host functions with some additional metadata and user data #[derive(Clone)] pub struct Function { pub(crate) name: String, @@ -160,6 +172,7 @@ pub struct Function { } impl Function { + /// Create a new host function pub fn new( name: impl Into, args: impl IntoIterator, @@ -169,7 +182,7 @@ impl Function { ) -> Function where F: 'static - + Fn(&mut Internal, &[Val], &mut [Val], UserData) -> Result<(), Error> + + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + Sync + Send, { diff --git a/runtime/src/internal.rs b/runtime/src/internal.rs index a43dfe58d..1d7990530 100644 --- a/runtime/src/internal.rs +++ b/runtime/src/internal.rs @@ -1,5 +1,3 @@ -use std::collections::BTreeMap; - use crate::*; /// WASI context @@ -12,334 +10,23 @@ pub struct Wasi { pub nn: wasmtime_wasi_nn::WasiNnCtx, } -/// Internal stores data that is available to the caller in PDK functions -pub struct Internal { - /// Store - pub store: *mut Store, - - /// Linker - pub linker: *mut wasmtime::Linker, - - /// WASI context - pub wasi: Option, - - /// Keep track of the status from the last HTTP request - pub http_status: u16, - - /// Plugin variables - pub vars: BTreeMap>, - - pub manifest: Manifest, - - pub available_pages: Option, - - pub(crate) memory_limiter: Option, -} - /// InternalExt provides a unified way of acessing `memory`, `store` and `internal` values -pub trait InternalExt { - fn store(&self) -> &Store; +pub(crate) trait Internal { + fn store(&self) -> &Store; - fn store_mut(&mut self) -> &mut Store; + fn store_mut(&mut self) -> &mut Store; - fn linker(&self) -> &Linker; + fn linker(&self) -> &Linker; - fn linker_mut(&mut self) -> &mut Linker; + fn linker_mut(&mut self) -> &mut Linker; - fn linker_and_store(&mut self) -> (&mut Linker, &mut Store); + fn linker_and_store(&mut self) -> (&mut Linker, &mut Store); - fn internal(&self) -> &Internal { + fn current_plugin(&self) -> &CurrentPlugin { self.store().data() } - fn internal_mut(&mut self) -> &mut Internal { + fn current_plugin_mut(&mut self) -> &mut CurrentPlugin { self.store_mut().data_mut() } - - fn memory_ptr(&mut self) -> *mut u8 { - let (linker, mut store) = self.linker_and_store(); - if let Some(mem) = linker.get(&mut store, "env", "memory") { - if let Some(mem) = mem.into_memory() { - return mem.data_ptr(&mut store); - } - } - - std::ptr::null_mut() - } - - fn memory(&mut self) -> &mut [u8] { - let (linker, mut store) = self.linker_and_store(); - let mem = linker - .get(&mut store, "env", "memory") - .unwrap() - .into_memory() - .unwrap(); - let ptr = mem.data_ptr(&store); - if ptr.is_null() { - return &mut []; - } - let size = mem.data_size(&store); - unsafe { std::slice::from_raw_parts_mut(ptr, size) } - } - - fn memory_read(&mut self, offs: u64, len: Size) -> &[u8] { - trace!("memory_read: {}, {}", offs, len); - let offs = offs as usize; - let len = len as usize; - let mem = self.memory(); - &mem[offs..offs + len] - } - - fn memory_read_str(&mut self, offs: u64) -> Result<&str, std::str::Utf8Error> { - let len = self.memory_length(offs); - std::str::from_utf8(self.memory_read(offs, len)) - } - - fn memory_write(&mut self, offs: u64, bytes: impl AsRef<[u8]>) { - trace!("memory_write: {}", offs); - let b = bytes.as_ref(); - let offs = offs as usize; - let len = b.len(); - self.memory()[offs..offs + len].copy_from_slice(bytes.as_ref()); - } - - fn memory_alloc(&mut self, n: Size) -> Result { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_alloc") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[Val::I64(n as i64)], output)?; - let offs = output[0].unwrap_i64() as u64; - if offs == 0 { - anyhow::bail!("out of memory") - } - trace!("memory_alloc: {}, {}", offs, n); - Ok(offs) - } - - fn memory_alloc_bytes(&mut self, bytes: impl AsRef<[u8]>) -> Result { - let b = bytes.as_ref(); - let offs = self.memory_alloc(b.len() as Size)?; - self.memory_write(offs, b); - Ok(offs) - } - - fn memory_free(&mut self, offs: u64) { - let (linker, mut store) = self.linker_and_store(); - linker - .get(&mut store, "env", "extism_free") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[Val::I64(offs as i64)], &mut []) - .unwrap(); - } - - fn memory_length(&mut self, offs: u64) -> u64 { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_length") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[Val::I64(offs as i64)], output) - .unwrap(); - let len = output[0].unwrap_i64() as u64; - trace!("memory_length: {}, {}", offs, len); - len - } - - // A convenience method to set the plugin error and return a value - fn error(&mut self, e: impl std::fmt::Debug, x: E) -> E { - let s = format!("{e:?}"); - debug!("Set error: {:?}", s); - if let Ok(offs) = self.memory_alloc_bytes(&s) { - let (linker, mut store) = self.linker_and_store(); - if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { - f.into_func() - .unwrap() - .call(&mut store, &[Val::I64(offs as i64)], &mut []) - .unwrap(); - } - } - x - } - - fn clear_error(&mut self) { - let (linker, mut store) = self.linker_and_store(); - if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { - f.into_func() - .unwrap() - .call(&mut store, &[Val::I64(0)], &mut []) - .unwrap(); - } - } - - fn has_error(&mut self) -> bool { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_error_get") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[], output) - .unwrap(); - output[0].unwrap_i64() != 0 - } - - fn get_error(&mut self) -> Option<&str> { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_error_get") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[], output) - .unwrap(); - let offs = output[0].unwrap_i64() as u64; - if offs == 0 { - return None; - } - - let length = self.memory_length(offs); - let data = self.memory_read(offs, length); - let s = std::str::from_utf8(data); - match s { - Ok(s) => Some(s), - Err(_) => None, - } - } -} - -impl Internal { - pub(crate) fn new( - manifest: Manifest, - wasi: bool, - available_pages: Option, - ) -> Result { - let wasi = if wasi { - let auth = wasmtime_wasi::ambient_authority(); - let mut ctx = wasmtime_wasi::WasiCtxBuilder::new(); - for (k, v) in manifest.as_ref().config.iter() { - ctx = ctx.env(k, v)?; - } - - if let Some(a) = &manifest.as_ref().allowed_paths { - for (k, v) in a.iter() { - let d = wasmtime_wasi::Dir::open_ambient_dir(k, auth)?; - ctx = ctx.preopened_dir(d, v)?; - } - } - - #[cfg(feature = "nn")] - let nn = wasmtime_wasi_nn::WasiNnCtx::new()?; - - Some(Wasi { - ctx: ctx.build(), - #[cfg(feature = "nn")] - nn, - }) - } else { - None - }; - - let memory_limiter = if let Some(pgs) = available_pages { - let n = pgs as usize * 65536; - Some(MemoryLimiter { - max_bytes: n, - bytes_left: n, - }) - } else { - None - }; - - Ok(Internal { - wasi, - manifest, - http_status: 0, - vars: BTreeMap::new(), - linker: std::ptr::null_mut(), - store: std::ptr::null_mut(), - available_pages, - memory_limiter, - }) - } - - pub fn linker(&self) -> &wasmtime::Linker { - unsafe { &*self.linker } - } - - pub fn linker_mut(&mut self) -> &mut wasmtime::Linker { - unsafe { &mut *self.linker } - } -} - -impl InternalExt for Internal { - fn store(&self) -> &Store { - unsafe { &*self.store } - } - - fn store_mut(&mut self) -> &mut Store { - unsafe { &mut *self.store } - } - - fn linker(&self) -> &Linker { - unsafe { &*self.linker } - } - - fn linker_mut(&mut self) -> &mut Linker { - unsafe { &mut *self.linker } - } - - fn linker_and_store(&mut self) -> (&mut Linker, &mut Store) { - unsafe { (&mut *self.linker, &mut *self.store) } - } -} - -pub(crate) struct MemoryLimiter { - bytes_left: usize, - max_bytes: usize, -} - -impl MemoryLimiter { - pub(crate) fn reset(&mut self) { - self.bytes_left = self.max_bytes; - } -} - -impl wasmtime::ResourceLimiter for MemoryLimiter { - fn memory_growing( - &mut self, - current: usize, - desired: usize, - maximum: Option, - ) -> Result { - if let Some(max) = maximum { - if desired > max { - return Ok(false); - } - } - - let d = desired - current; - if d > self.bytes_left { - return Ok(false); - } - - self.bytes_left -= d; - Ok(true) - } - - fn table_growing(&mut self, _current: u32, desired: u32, maximum: Option) -> Result { - if let Some(max) = maximum { - return Ok(desired <= max); - } - - Ok(true) - } } diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index da4f39bf1..92181fafc 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -1,37 +1,73 @@ -pub use anyhow::Error; +pub(crate) use std::collections::BTreeMap; pub(crate) use wasmtime::*; -mod context; +pub use anyhow::Error; + +mod current_plugin; mod function; mod internal; -pub mod manifest; +pub(crate) mod manifest; pub(crate) mod pdk; mod plugin; -mod plugin_ref; +mod plugin_builder; pub mod sdk; mod timer; -pub use context::Context; +pub use current_plugin::{CurrentPlugin, MemoryHandle}; +pub use extism_manifest::Manifest; pub use function::{Function, UserData, Val, ValType}; -pub use internal::{Internal, InternalExt, Wasi}; -pub use manifest::Manifest; pub use plugin::Plugin; -pub use plugin_ref::PluginRef; +pub use plugin_builder::PluginBuilder; +pub use sdk::ExtismCancelHandle as CancelHandle; + +pub(crate) use internal::{Internal, Wasi}; pub(crate) use timer::{Timer, TimerAction}; pub type Size = u64; -pub type PluginIndex = i32; pub(crate) use log::{debug, error, trace}; -/// Converts any type implementing `std::fmt::Debug` into a suitable CString to use -/// as an error message -pub(crate) fn error_string(e: impl std::fmt::Debug) -> std::ffi::CString { - let x = format!("{:?}", e).into_bytes(); - let x = if x[0] == b'"' && x[x.len() - 1] == b'"' { - x[1..x.len() - 1].to_vec() +#[cfg(test)] +mod tests; + +pub(crate) const VERSION: &str = concat!(env!("CARGO_PKG_VERSION"), "\0"); + +/// Returns a string containing the Extism version of the current runtime, this is the same as the Cargo package +/// version +pub fn extism_version() -> &'static str { + VERSION +} + +/// Set the log file Extism will use, this is a global configuration +pub fn set_log_file(file: impl AsRef, level: log::Level) -> Result<(), Error> { + use log4rs::append::console::ConsoleAppender; + use log4rs::append::file::FileAppender; + use log4rs::config::{Appender, Config, Logger, Root}; + use log4rs::encode::pattern::PatternEncoder; + let encoder = Box::new(PatternEncoder::new("{t} {l} {d} - {m}\n")); + let file = file.as_ref(); + + let logfile: Box = if file == std::path::PathBuf::from("stdout") { + let target = log4rs::append::console::Target::Stdout; + let console = ConsoleAppender::builder().target(target).encoder(encoder); + Box::new(console.build()) + } else if file == std::path::PathBuf::from("-") || file == std::path::PathBuf::from("stderr") { + let target = log4rs::append::console::Target::Stderr; + let console = ConsoleAppender::builder().target(target).encoder(encoder); + Box::new(console.build()) } else { - x + Box::new(FileAppender::builder().encoder(encoder).build(file)?) }; - unsafe { std::ffi::CString::from_vec_unchecked(x) } + + let config = Config::builder() + .appender(Appender::builder().build("logfile", logfile)) + .logger( + Logger::builder() + .appender("logfile") + .build("extism", level.to_level_filter()), + ) + .build(Root::builder().build(log::LevelFilter::Off))?; + + log4rs::init_config(config)?; + Ok(()) } diff --git a/runtime/src/manifest.rs b/runtime/src/manifest.rs index 42d09488b..6cac3ec54 100644 --- a/runtime/src/manifest.rs +++ b/runtime/src/manifest.rs @@ -6,11 +6,6 @@ use sha2::Digest; use crate::*; -/// Manifest wraps the manifest exported by `extism_manifest` -#[derive(Default, Clone, serde::Serialize, serde::Deserialize)] -#[serde(transparent)] -pub struct Manifest(extism_manifest::Manifest); - fn hex(data: &[u8]) -> String { let mut s = String::new(); for &byte in data { @@ -166,64 +161,55 @@ fn to_module(engine: &Engine, wasm: &extism_manifest::Wasm) -> Result<(String, M const WASM_MAGIC: [u8; 4] = [0x00, 0x61, 0x73, 0x6d]; -impl Manifest { - /// Create a new Manifest, returns the manifest and a map of modules - pub fn new(engine: &Engine, data: &[u8]) -> Result<(Self, BTreeMap), Error> { - let extism_module = Module::new(engine, WASM)?; - let has_magic = data.len() >= 4 && data[0..4] == WASM_MAGIC; - let is_wast = data.starts_with(b"(module") || data.starts_with(b";;"); - if !has_magic && !is_wast { - if let Ok(s) = std::str::from_utf8(data) { - if let Ok(t) = toml::from_str::(s) { - let m = t.modules(engine)?; - return Ok((t, m)); - } +pub(crate) fn load( + engine: &Engine, + data: &[u8], +) -> Result<(extism_manifest::Manifest, BTreeMap), Error> { + let extism_module = Module::new(engine, WASM)?; + let has_magic = data.len() >= 4 && data[0..4] == WASM_MAGIC; + let is_wast = data.starts_with(b"(module") || data.starts_with(b";;"); + if !has_magic && !is_wast { + if let Ok(s) = std::str::from_utf8(data) { + if let Ok(t) = toml::from_str::(s) { + let m = modules(&t, engine)?; + return Ok((t, m)); } - - let t = serde_json::from_slice::(data)?; - let mut m = t.modules(engine)?; - m.insert("env".to_string(), extism_module); - return Ok((t, m)); } - let m = Module::new(engine, data)?; - let mut modules = BTreeMap::new(); - modules.insert("env".to_string(), extism_module); - modules.insert("main".to_string(), m); - Ok((Manifest::default(), modules)) + let t = serde_json::from_slice::(data)?; + let mut m = modules(&t, engine)?; + m.insert("env".to_string(), extism_module); + return Ok((t, m)); } - fn modules(&self, engine: &Engine) -> Result, Error> { - if self.0.wasm.is_empty() { - return Err(anyhow::format_err!("No wasm files specified")); - } - - let mut modules = BTreeMap::new(); + let m = Module::new(engine, data)?; + let mut modules = BTreeMap::new(); + modules.insert("env".to_string(), extism_module); + modules.insert("main".to_string(), m); + Ok((Default::default(), modules)) +} - // If there's only one module, it should be called `main` - if self.0.wasm.len() == 1 { - let (_, m) = to_module(engine, &self.0.wasm[0])?; - modules.insert("main".to_string(), m); - return Ok(modules); - } +pub(crate) fn modules( + manifest: &extism_manifest::Manifest, + engine: &Engine, +) -> Result, Error> { + if manifest.wasm.is_empty() { + return Err(anyhow::format_err!("No wasm files specified")); + } - for f in &self.0.wasm { - let (name, m) = to_module(engine, f)?; - modules.insert(name, m); - } + let mut modules = BTreeMap::new(); - Ok(modules) + // If there's only one module, it should be called `main` + if manifest.wasm.len() == 1 { + let (_, m) = to_module(engine, &manifest.wasm[0])?; + modules.insert("main".to_string(), m); + return Ok(modules); } -} -impl AsRef for Manifest { - fn as_ref(&self) -> &extism_manifest::Manifest { - &self.0 + for f in &manifest.wasm { + let (name, m) = to_module(engine, f)?; + modules.insert(name, m); } -} -impl AsMut for Manifest { - fn as_mut(&mut self) -> &mut extism_manifest::Manifest { - &mut self.0 - } + Ok(modules) } diff --git a/runtime/src/pdk.rs b/runtime/src/pdk.rs index 853f79199..043b7dc22 100644 --- a/runtime/src/pdk.rs +++ b/runtime/src/pdk.rs @@ -22,18 +22,22 @@ macro_rules! args { /// Params: i64 (offset) /// Returns: i64 (offset) pub(crate) fn config_get( - mut caller: Caller, + mut caller: Caller, input: &[Val], output: &mut [Val], ) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); + let data: &mut CurrentPlugin = caller.data_mut(); let offset = args!(input, 0, i64) as u64; - let key = data.memory_read_str(offset)?; + let handle = match data.memory_handle(offset) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {offset}"), + }; + let key = data.memory_read_str(handle)?; let key = unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key.as_ptr(), key.len())) }; - let val = data.internal().manifest.as_ref().config.get(key); + let val = data.manifest.config.get(key); let ptr = val.map(|x| (x.len(), x.as_ptr())); let mem = match ptr { Some((len, ptr)) => { @@ -45,7 +49,7 @@ pub(crate) fn config_get( return Ok(()); } }; - output[0] = Val::I64(mem as i64); + output[0] = Val::I64(mem.offset() as i64); Ok(()) } @@ -53,18 +57,22 @@ pub(crate) fn config_get( /// Params: i64 (offset) /// Returns: i64 (offset) pub(crate) fn var_get( - mut caller: Caller, + mut caller: Caller, input: &[Val], output: &mut [Val], ) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); + let data: &mut CurrentPlugin = caller.data_mut(); let offset = args!(input, 0, i64) as u64; - let key = data.memory_read_str(offset)?; + let handle = match data.memory_handle(offset) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {offset}"), + }; + let key = data.memory_read_str(handle)?; let key = unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key.as_ptr(), key.len())) }; - let val = data.internal().vars.get(key); + let val = data.vars.get(key); let ptr = val.map(|x| (x.len(), x.as_ptr())); let mem = match ptr { Some((len, ptr)) => { @@ -76,7 +84,7 @@ pub(crate) fn var_get( return Ok(()); } }; - output[0] = Val::I64(mem as i64); + output[0] = Val::I64(mem.offset() as i64); Ok(()) } @@ -84,11 +92,11 @@ pub(crate) fn var_get( /// Params: i64 (key offset), i64 (value offset) /// Returns: none pub(crate) fn var_set( - mut caller: Caller, + mut caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); + let data: &mut CurrentPlugin = caller.data_mut(); let mut size = 0; for v in data.vars.values() { @@ -104,7 +112,11 @@ pub(crate) fn var_set( let key_offs = args!(input, 0, i64) as u64; let key = { - let key = data.memory_read_str(key_offs)?; + let handle = match data.memory_handle(key_offs) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {key_offs}"), + }; + let key = data.memory_read_str(handle)?; let key_len = key.len(); let key_ptr = key.as_ptr(); unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key_ptr, key_len)) } @@ -116,8 +128,11 @@ pub(crate) fn var_set( return Ok(()); } - let vlen = data.memory_length(voffset); - let value = data.memory_read(voffset, vlen).to_vec(); + let handle = match data.memory_handle(voffset) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {key_offs}"), + }; + let value = data.memory_read(handle).to_vec(); // Insert the value from memory into the `vars` map data.vars.insert(key.to_string(), value); @@ -129,7 +144,7 @@ pub(crate) fn var_set( /// Params: i64 (offset to JSON encoded HttpRequest), i64 (offset to body or 0) /// Returns: i64 (offset) pub(crate) fn http_request( - #[allow(unused_mut)] mut caller: Caller, + #[allow(unused_mut)] mut caller: Caller, input: &[Val], output: &mut [Val], ) -> Result<(), Error> { @@ -145,12 +160,14 @@ pub(crate) fn http_request( #[cfg(feature = "http")] { use std::io::Read; - let data: &mut Internal = caller.data_mut(); + let data: &mut CurrentPlugin = caller.data_mut(); let http_req_offset = args!(input, 0, i64) as u64; - let http_req_len = data.memory_length(http_req_offset); - let req: extism_manifest::HttpRequest = - serde_json::from_slice(data.memory_read(http_req_offset, http_req_len))?; + let handle = match data.memory_handle(http_req_offset) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {http_req_offset}"), + }; + let req: extism_manifest::HttpRequest = serde_json::from_slice(data.memory_read(handle))?; let body_offset = args!(input, 1, i64) as u64; @@ -158,7 +175,7 @@ pub(crate) fn http_request( Ok(u) => u, Err(e) => return Err(Error::msg(format!("Invalid URL: {e:?}"))), }; - let allowed_hosts = &data.internal().manifest.as_ref().allowed_hosts; + let allowed_hosts = &data.manifest.allowed_hosts; let host_str = url.host_str().unwrap_or_default(); let host_matches = if let Some(allowed_hosts) = allowed_hosts { allowed_hosts.iter().any(|url| { @@ -187,8 +204,11 @@ pub(crate) fn http_request( } let res = if body_offset > 0 { - let len = data.memory_length(body_offset); - let buf = data.memory_read(body_offset, len); + let handle = match data.memory_handle(body_offset) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {http_req_offset}"), + }; + let buf = data.memory_read(handle); r.send_bytes(buf) } else { r.call() @@ -216,7 +236,7 @@ pub(crate) fn http_request( .read_to_end(&mut buf)?; let mem = data.memory_alloc_bytes(buf)?; - output[0] = Val::I64(mem as i64); + output[0] = Val::I64(mem.offset() as i64); } else { output[0] = Val::I64(0); } @@ -229,24 +249,30 @@ pub(crate) fn http_request( /// Params: none /// Returns: i32 (status code) pub(crate) fn http_status_code( - mut caller: Caller, + mut caller: Caller, _input: &[Val], output: &mut [Val], ) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); + let data: &mut CurrentPlugin = caller.data_mut(); output[0] = Val::I32(data.http_status as i32); Ok(()) } pub fn log( level: log::Level, - mut caller: Caller, + mut caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { - let data: &mut Internal = caller.data_mut(); + let data: &mut CurrentPlugin = caller.data_mut(); let offset = args!(input, 0, i64) as u64; - let buf = data.memory_read_str(offset); + + let handle = match data.memory_handle(offset) { + Some(h) => h, + None => anyhow::bail!("invalid handle offset: {offset}"), + }; + + let buf = data.memory_read_str(handle); match buf { Ok(buf) => log::log!(level, "{}", buf), @@ -259,7 +285,7 @@ pub fn log( /// Params: i64 (offset) /// Returns: none pub(crate) fn log_warn( - caller: Caller, + caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { @@ -270,7 +296,7 @@ pub(crate) fn log_warn( /// Params: i64 (offset) /// Returns: none pub(crate) fn log_info( - caller: Caller, + caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { @@ -281,7 +307,7 @@ pub(crate) fn log_info( /// Params: i64 (offset) /// Returns: none pub(crate) fn log_debug( - caller: Caller, + caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { @@ -292,7 +318,7 @@ pub(crate) fn log_debug( /// Params: i64 (offset) /// Returns: none pub(crate) fn log_error( - caller: Caller, + caller: Caller, input: &[Val], _output: &mut [Val], ) -> Result<(), Error> { diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 6e66bbfdc..6e6601755 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -2,53 +2,86 @@ use std::collections::BTreeMap; use crate::*; +#[derive(Default, Clone)] +pub(crate) struct Output { + pub(crate) offset: u64, + pub(crate) length: u64, + pub(crate) error_offset: u64, + pub(crate) error_length: u64, +} + /// Plugin contains everything needed to execute a WASM function pub struct Plugin { - /// All modules that were provided to the linker - pub modules: BTreeMap, + /// A unique ID for each plugin + pub id: uuid::Uuid, + + /// Wasmtime linker + pub(crate) linker: Linker, + + /// Wasmtime store + pub(crate) store: Store, + + /// A handle used to cancel execution of a plugin + pub(crate) cancel_handle: sdk::ExtismCancelHandle, - /// Used to define functions and create new instances - pub linker: Linker, - pub store: Store, + /// All modules that were provided to the linker + pub(crate) modules: BTreeMap, - /// Instance provides the ability to call functions in a module - pub instance: Option, - pub instance_pre: InstancePre, + /// Instance provides the ability to call functions in a module, a `Plugin` is initialized with + /// an `instance_pre` but no `instance`. The `instance` will be created during `Plugin::raw_call` + pub(crate) instance: std::sync::Arc>>, + pub(crate) instance_pre: InstancePre, /// Keep track of the number of times we're instantiated, this exists /// to avoid issues with memory piling up since `Instance`s are only /// actually cleaned up along with a `Store` instantiations: usize, - /// The ID used to identify this plugin with the `Timer` - pub timer_id: uuid::Uuid, - - /// A handle used to cancel execution of a plugin - pub(crate) cancel_handle: sdk::ExtismCancelHandle, - /// Runtime determines any initialization functions needed /// to run a module - pub(crate) runtime: Option, + pub(crate) runtime: Option, + + /// Keep a reference to the host functions + _functions: Vec, + + /// Communication with the timer thread + pub(crate) timer_tx: std::sync::mpsc::Sender, + + /// Information that gets populated after a call + pub(crate) output: Output, + + /// Set to `true` when de-initializarion may have occured (i.e.a call to `_start`), + /// in this case we need to re-initialize the entire module. + pub(crate) needs_reset: bool, +} + +unsafe impl Send for Plugin {} +unsafe impl Sync for Plugin {} + +impl std::fmt::Debug for Plugin { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "Plugin({})", self.id) + } } -impl InternalExt for Plugin { - fn store(&self) -> &Store { +impl Internal for Plugin { + fn store(&self) -> &Store { &self.store } - fn store_mut(&mut self) -> &mut Store { + fn store_mut(&mut self) -> &mut Store { &mut self.store } - fn linker(&self) -> &Linker { + fn linker(&self) -> &Linker { &self.linker } - fn linker_mut(&mut self) -> &mut Linker { + fn linker_mut(&mut self) -> &mut Linker { &mut self.linker } - fn linker_and_store(&mut self) -> (&mut Linker, &mut Store) { + fn linker_and_store(&mut self) -> (&mut Linker, &mut Store) { (&mut self.linker, &mut self.store) } } @@ -119,11 +152,29 @@ fn calculate_available_memory( Ok(()) } +// Raise an error when the epoch deadline is encountered - this is used for timeout/cancellation +// to stop a plugin that is executing +fn deadline_callback(_: StoreContextMut) -> Result { + Err(Error::msg("timeout")) +} + impl Plugin { - /// Create a new plugin from the given WASM code - pub fn new<'a>( + /// Create a new plugin from the given manifest, and host functions. The `with_wasi` parameter determines + /// whether or not the module should be executed with WASI enabled. + pub fn new_with_manifest( + manifest: &Manifest, + functions: impl IntoIterator, + with_wasi: bool, + ) -> Result { + let data = serde_json::to_vec(manifest)?; + Self::new(data, functions, with_wasi) + } + + /// Create a new plugin from the given WebAssembly module or JSON encoded manifest, and host functions. The `with_wasi` + /// parameter determines whether or not the module should be executed with WASI enabled. + pub fn new( wasm: impl AsRef<[u8]>, - imports: impl IntoIterator, + imports: impl IntoIterator, with_wasi: bool, ) -> Result { // Create a new engine, if the `EXITSM_DEBUG` environment variable is set @@ -135,20 +186,21 @@ impl Plugin { .profiler(profiling_strategy()), )?; let mut imports = imports.into_iter(); - let (manifest, modules) = Manifest::new(&engine, wasm.as_ref())?; + let (manifest, modules) = manifest::load(&engine, wasm.as_ref())?; // Calculate how much memory is available based on the value of `max_pages` and the exported // memory of the modules. An error will be returned if a module doesn't have an exported memory // or there is no maximum set for a module's exported memory. - let mut available_pages = manifest.as_ref().memory.max_pages; + let mut available_pages = manifest.memory.max_pages; calculate_available_memory(&mut available_pages, &modules)?; log::trace!("Available pages: {available_pages:?}"); let mut store = Store::new( &engine, - Internal::new(manifest, with_wasi, available_pages)?, + CurrentPlugin::new(manifest, with_wasi, available_pages)?, ); - store.epoch_deadline_callback(|_internal| Ok(wasmtime::UpdateDeadline::Continue(1))); + + store.set_epoch_deadline(1); if available_pages.is_some() { store.limiter(|internal| internal.memory_limiter.as_mut().unwrap()); @@ -158,12 +210,12 @@ impl Plugin { // If wasi is enabled then add it to the linker if with_wasi { - wasmtime_wasi::add_to_linker(&mut linker, |x: &mut Internal| { + wasmtime_wasi::add_to_linker(&mut linker, |x: &mut CurrentPlugin| { &mut x.wasi.as_mut().unwrap().ctx })?; #[cfg(feature = "nn")] - wasmtime_wasi_nn::add_to_linker(&mut linker, |x: &mut Internal| { + wasmtime_wasi_nn::add_to_linker(&mut linker, |x: &mut CurrentPlugin| { &mut x.wasi.as_mut().unwrap().nn })?; } @@ -223,105 +275,130 @@ impl Plugin { })?; } - let instance_pre = linker.instantiate_pre(&main)?; - let timer_id = uuid::Uuid::new_v4(); + let instance_pre = linker.instantiate_pre(main)?; + let id = uuid::Uuid::new_v4(); + let timer_tx = Timer::tx(); let mut plugin = Plugin { modules, linker, - instance: None, + instance: std::sync::Arc::new(std::sync::Mutex::new(None)), instance_pre, store, runtime: None, - timer_id, - cancel_handle: sdk::ExtismCancelHandle { - id: timer_id, - epoch_timer_tx: None, - }, + id, + timer_tx: timer_tx.clone(), + cancel_handle: sdk::ExtismCancelHandle { id, timer_tx }, instantiations: 0, + output: Output::default(), + _functions: imports.collect(), + needs_reset: false, }; - plugin.internal_mut().store = &mut plugin.store; - plugin.internal_mut().linker = &mut plugin.linker; + plugin.current_plugin_mut().store = &mut plugin.store; + plugin.current_plugin_mut().linker = &mut plugin.linker; Ok(plugin) } - pub(crate) fn reset_store(&mut self) -> Result<(), Error> { - self.instance = None; - if self.instantiations > 5 { - let (main_name, main) = self - .modules - .get("main") - .map(|x| ("main", x)) - .unwrap_or_else(|| { - let entry = self.modules.iter().last().unwrap(); - (entry.0.as_str(), entry.1) - }); - + // Resets the store and linker to avoid running into Wasmtime memory limits + pub(crate) fn reset_store( + &mut self, + instance_lock: &mut std::sync::MutexGuard>, + ) -> Result<(), Error> { + if self.instantiations > 100 { let engine = self.store.engine().clone(); - let internal = self.internal(); + let internal = self.current_plugin_mut(); self.store = Store::new( &engine, - Internal::new( + CurrentPlugin::new( internal.manifest.clone(), internal.wasi.is_some(), internal.available_pages, )?, ); - self.store - .epoch_deadline_callback(|_internal| Ok(UpdateDeadline::Continue(1))); - if self.internal().available_pages.is_some() { + self.store.set_epoch_deadline(1); + + if self.current_plugin().available_pages.is_some() { self.store .limiter(|internal| internal.memory_limiter.as_mut().unwrap()); } + let (main_name, main) = self + .modules + .get("main") + .map(|x| ("main", x)) + .unwrap_or_else(|| { + let entry = self.modules.iter().last().unwrap(); + (entry.0.as_str(), entry.1) + }); + for (name, module) in self.modules.iter() { if name != main_name { self.linker.module(&mut self.store, name, module)?; } } self.instantiations = 0; - self.instance_pre = self.linker.instantiate_pre(&main)?; + self.instance_pre = self.linker.instantiate_pre(main)?; let store = &mut self.store as *mut _; let linker = &mut self.linker as *mut _; - let internal = self.internal_mut(); - internal.store = store; - internal.linker = linker; + let current_plugin = self.current_plugin_mut(); + current_plugin.store = store; + current_plugin.linker = linker; } + **instance_lock = None; Ok(()) } - pub(crate) fn instantiate(&mut self) -> Result<(), Error> { - self.instance = Some(self.instance_pre.instantiate(&mut self.store)?); + // Instantiate the module. This is done lazily to avoid running any code outside of the `call` function, + // since wasmtime may execute a start function (if configured) at instantiation time, + pub(crate) fn instantiate( + &mut self, + instance_lock: &mut std::sync::MutexGuard>, + ) -> Result<(), Error> { + if instance_lock.is_some() { + return Ok(()); + } + + let instance = self.instance_pre.instantiate(&mut self.store)?; + trace!("Plugin::instance is none, instantiating"); + **instance_lock = Some(instance); self.instantiations += 1; - if let Some(limiter) = &mut self.internal_mut().memory_limiter { + if let Some(limiter) = &mut self.current_plugin_mut().memory_limiter { limiter.reset(); } - self.detect_runtime(); - self.initialize_runtime()?; + self.detect_guest_runtime(instance_lock); + self.initialize_guest_runtime()?; Ok(()) } - /// Get a function by name - pub fn get_func(&mut self, function: impl AsRef) -> Option { - if let None = &self.instance { - if let Err(e) = self.instantiate() { - error!("Unable to instantiate: {e}"); - return None; - } - } - - if let Some(instance) = &mut self.instance { + /// Get an exported function by name + pub(crate) fn get_func( + &mut self, + instance_lock: &mut std::sync::MutexGuard>, + function: impl AsRef, + ) -> Option { + if let Some(instance) = &mut **instance_lock { instance.get_func(&mut self.store, function.as_ref()) } else { None } } - /// Store input in memory and initialize `Internal` pointer + /// Returns `true` if the given function exists, otherwise `false` + pub fn function_exists(&mut self, function: impl AsRef) -> bool { + self.modules["main"] + .get_export(function.as_ref()) + .map(|x| x.func().is_some()) + .unwrap_or(false) + } + + // Store input in memory and re-initialize `Internal` pointer pub(crate) fn set_input(&mut self, input: *const u8, mut len: usize) -> Result<(), Error> { + self.output = Output::default(); + self.clear_error(); + if input.is_null() { len = 0; } @@ -329,9 +406,9 @@ impl Plugin { { let store = &mut self.store as *mut _; let linker = &mut self.linker as *mut _; - let internal = self.internal_mut(); - internal.store = store; - internal.linker = linker; + let current_plugin = self.current_plugin_mut(); + current_plugin.store = store; + current_plugin.linker = linker; } let bytes = unsafe { std::slice::from_raw_parts(input, len) }; @@ -343,12 +420,12 @@ impl Plugin { error!("Call to extism_reset failed"); } - let offs = self.memory_alloc_bytes(bytes)?; + let handle = self.current_plugin_mut().memory_alloc_bytes(bytes)?; if let Some(f) = self.linker.get(&mut self.store, "env", "extism_input_set") { f.into_func().unwrap().call( &mut self.store, - &[Val::I64(offs as i64), Val::I64(len as i64)], + &[Val::I64(handle.offset() as i64), Val::I64(len as i64)], &mut [], )?; } @@ -358,15 +435,19 @@ impl Plugin { /// Determine if wasi is enabled pub fn has_wasi(&self) -> bool { - self.internal().wasi.is_some() + self.current_plugin().wasi.is_some() } - fn detect_runtime(&mut self) { + // Do a best-effort attempt to detect any guest runtime. + fn detect_guest_runtime( + &mut self, + instance_lock: &mut std::sync::MutexGuard>, + ) { // Check for Haskell runtime initialization functions // Initialize Haskell runtime if `hs_init` is present, // by calling the `hs_init` export - if let Some(init) = self.get_func("hs_init") { - let reactor_init = if let Some(init) = self.get_func("_initialize") { + if let Some(init) = self.get_func(instance_lock, "hs_init") { + let reactor_init = if let Some(init) = self.get_func(instance_lock, "_initialize") { if init.typed::<(), ()>(&self.store()).is_err() { trace!( "_initialize function found with type {:?}", @@ -380,13 +461,13 @@ impl Plugin { } else { None }; - self.runtime = Some(Runtime::Haskell { init, reactor_init }); + self.runtime = Some(GuestRuntime::Haskell { init, reactor_init }); return; } // Check for `__wasm_call_ctors` or `_initialize`, this is used by WASI to // initialize certain interfaces. - let init = if let Some(init) = self.get_func("__wasm_call_ctors") { + let init = if let Some(init) = self.get_func(instance_lock, "__wasm_call_ctors") { if init.typed::<(), ()>(&self.store()).is_err() { trace!( "__wasm_call_ctors function found with type {:?}", @@ -396,7 +477,7 @@ impl Plugin { } trace!("WASI runtime detected"); init - } else if let Some(init) = self.get_func("_initialize") { + } else if let Some(init) = self.get_func(instance_lock, "_initialize") { if init.typed::<(), ()>(&self.store()).is_err() { trace!( "_initialize function found with type {:?}", @@ -410,17 +491,18 @@ impl Plugin { return; }; - self.runtime = Some(Runtime::Wasi { init }); + self.runtime = Some(GuestRuntime::Wasi { init }); trace!("No runtime detected"); } - pub(crate) fn initialize_runtime(&mut self) -> Result<(), Error> { + // Initialize the guest runtime + pub(crate) fn initialize_guest_runtime(&mut self) -> Result<(), Error> { let mut store = &mut self.store; if let Some(runtime) = &self.runtime { trace!("Plugin::initialize_runtime"); match runtime { - Runtime::Haskell { init, reactor_init } => { + GuestRuntime::Haskell { init, reactor_init } => { if let Some(reactor_init) = reactor_init { reactor_init.call(&mut store, &[], &mut [])?; } @@ -432,7 +514,7 @@ impl Plugin { )?; debug!("Initialized Haskell language runtime"); } - Runtime::Wasi { init } => { + GuestRuntime::Wasi { init } => { init.call(&mut store, &[], &mut [])?; debug!("Initialied WASI runtime"); } @@ -442,45 +524,207 @@ impl Plugin { Ok(()) } - /// Start the timer for a Plugin - this is used for both timeouts - /// and cancellation - pub(crate) fn start_timer( + // Return the position of the output in memory + fn output_memory_position(&mut self) -> (u64, u64) { + let out = &mut [Val::I64(0)]; + let out_len = &mut [Val::I64(0)]; + let mut store = &mut self.store; + self.linker + .get(&mut store, "env", "extism_output_offset") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], out) + .unwrap(); + self.linker + .get(&mut store, "env", "extism_output_length") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[], out_len) + .unwrap(); + + let offs = out[0].unwrap_i64() as u64; + let len = out_len[0].unwrap_i64() as u64; + (offs, len) + } + + // Get the output data after a call has returned + fn output(&mut self) -> &[u8] { + trace!("Output offset: {}", self.output.offset); + let offs = self.output.offset; + let len = self.output.length; + self.current_plugin_mut() + .memory_read(unsafe { MemoryHandle::new(offs, len) }) + } + + // Cache output memory and error information after call is complete + fn get_output_after_call(&mut self) { + let (offs, len) = self.output_memory_position(); + self.output.offset = offs; + self.output.length = len; + + let err = self.current_plugin_mut().get_error_position(); + self.output.error_offset = err.0; + self.output.error_length = err.1; + } + + // Implements the build of the `call` function, `raw_call` is also used in the SDK + // code + pub(crate) fn raw_call( &mut self, - tx: &std::sync::mpsc::SyncSender, - ) -> Result<(), Error> { - let duration = self - .internal() - .manifest - .as_ref() - .timeout_ms - .map(std::time::Duration::from_millis); - self.cancel_handle.epoch_timer_tx = Some(tx.clone()); - self.store_mut().set_epoch_deadline(1); + lock: &mut std::sync::MutexGuard>, + name: impl AsRef, + input: impl AsRef<[u8]>, + ) -> Result { + let name = name.as_ref(); + let input = input.as_ref(); + + if self.needs_reset { + if let Err(e) = self.reset_store(lock) { + error!("Call to Plugin::reset_store failed: {e:?}"); + } + self.needs_reset = false; + } + + self.instantiate(lock).map_err(|e| (e, -1))?; + + self.set_input(input.as_ptr(), input.len()) + .map_err(|x| (x, -1))?; + + let func = match self.get_func(lock, name) { + Some(x) => x, + None => return Err((anyhow::anyhow!("Function not found: {name}"), -1)), + }; + + // Check the number of results, reject functions with more than 1 result + let n_results = func.ty(self.store()).results().len(); + if n_results > 1 { + return Err(( + anyhow::anyhow!("Function {name} has {n_results} results, expected 0 or 1"), + -1, + )); + } + + // Start timer + self.timer_tx + .send(TimerAction::Start { + id: self.id, + engine: self.store.engine().clone(), + duration: self + .current_plugin() + .manifest + .timeout_ms + .map(std::time::Duration::from_millis), + }) + .unwrap(); + self.store.epoch_deadline_callback(deadline_callback); + + // Call the function + let mut results = vec![wasmtime::Val::null(); n_results]; + let res = func.call(self.store_mut(), &[], results.as_mut_slice()); + + // Stop timer + self.timer_tx + .send(TimerAction::Stop { id: self.id }) + .unwrap(); self.store - .epoch_deadline_callback(|_internal| Err(Error::msg("timeout"))); - let engine: Engine = self.store().engine().clone(); - tx.send(TimerAction::Start { - id: self.timer_id, - duration, - engine, - })?; - Ok(()) + .epoch_deadline_callback(|_| Ok(UpdateDeadline::Continue(1))); + + self.get_output_after_call(); + + match res { + Ok(()) => { + self.needs_reset = name == "_start"; + } + Err(e) => match e.downcast::() { + Ok(exit) => { + trace!("WASI return code: {}", exit.0); + if exit.0 != 0 { + return Err((Error::msg("WASI return code"), exit.0)); + } + return Ok(0); + } + Err(e) => { + if e.root_cause().to_string() == "timeout" { + return Err((Error::msg("timeout"), -1)); + } + + error!("Call: {e:?}"); + return Err((e.context("Call failed"), -1)); + } + }, + }; + + // If `results` is empty and the return value wasn't a WASI exit code then + // the call succeeded + if results.is_empty() { + return Ok(0); + } + + // Return result to caller + Ok(0) } - /// Send TimerAction::Stop - pub(crate) fn stop_timer(&mut self) -> Result<(), Error> { - if let Some(tx) = &self.cancel_handle.epoch_timer_tx { - tx.send(TimerAction::Stop { id: self.timer_id })?; + /// Call a function by name with the given input, the return value is the output data returned by the plugin. + /// This data will be invalidated next time the plugin is called. + pub fn call(&mut self, name: impl AsRef, input: impl AsRef<[u8]>) -> Result<&[u8], Error> { + let lock = self.instance.clone(); + let mut lock = lock.lock().unwrap(); + self.raw_call(&mut lock, name, input) + .map(|_| self.output()) + .map_err(|e| e.0) + } + + /// Get a `CancelHandle`, which can be used from another thread to cancel a running plugin + pub fn cancel_handle(&self) -> CancelHandle { + self.cancel_handle.clone() + } + + pub(crate) fn clear_error(&mut self) { + trace!("Clearing error on plugin {}", self.id); + let (linker, mut store) = self.linker_and_store(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { + f.into_func() + .unwrap() + .call(&mut store, &[Val::I64(0)], &mut []) + .unwrap(); + } else { + error!("Plugin::clear_error failed, extism_error_set not found") } - self.store - .epoch_deadline_callback(|_internal| Ok(wasmtime::UpdateDeadline::Continue(1))); - Ok(()) + } + + // A convenience method to set the plugin error and return a value + pub(crate) fn return_error(&mut self, e: impl std::fmt::Debug, x: E) -> E { + let s = format!("{e:?}"); + debug!("Set error: {:?}", s); + match self.current_plugin_mut().memory_alloc_bytes(&s) { + Ok(handle) => { + let (linker, mut store) = self.linker_and_store(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { + if let Ok(()) = f.into_func().unwrap().call( + &mut store, + &[Val::I64(handle.offset() as i64)], + &mut [], + ) { + self.output.error_offset = handle.offset(); + self.output.error_length = s.len() as u64; + } + } else { + error!("extism_error_set not found"); + } + } + Err(e) => { + error!("Unable to set error: {e:?}") + } + } + x } } -// Enumerates the supported PDK language runtimes +// Enumerates the PDK languages that need some additional initialization #[derive(Clone)] -pub(crate) enum Runtime { +pub(crate) enum GuestRuntime { Haskell { init: Func, reactor_init: Option, diff --git a/rust/src/plugin_builder.rs b/runtime/src/plugin_builder.rs similarity index 57% rename from rust/src/plugin_builder.rs rename to runtime/src/plugin_builder.rs index 76378c85f..3fd46f6e3 100644 --- a/rust/src/plugin_builder.rs +++ b/runtime/src/plugin_builder.rs @@ -38,8 +38,27 @@ impl PluginBuilder { } /// Add a single host function - pub fn with_function(mut self, f: Function) -> Self { - self.functions.push(f); + pub fn with_function( + mut self, + name: impl Into, + args: impl IntoIterator, + returns: impl IntoIterator, + user_data: Option, + f: F, + ) -> Self + where + F: 'static + + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + + Sync + + Send, + { + self.functions.push(Function::new( + name, + args, + returns, + user_data.map(UserData::new), + f, + )); self } @@ -49,18 +68,11 @@ impl PluginBuilder { self } - pub fn build<'a>(self, context: Option<&'a Context>) -> Result, Error> { - match context { - Some(context) => match self.source { - Source::Manifest(m) => { - Plugin::new_with_manifest(context, &m, self.functions, self.wasi) - } - Source::Data(d) => Plugin::new(context, d, self.functions, self.wasi), - }, - None => match self.source { - Source::Manifest(m) => Plugin::create_with_manifest(&m, self.functions, self.wasi), - Source::Data(d) => Plugin::create(d, self.functions, self.wasi), - }, + /// Generate a new plugin with the configured settings + pub fn build(self) -> Result { + match self.source { + Source::Manifest(m) => Plugin::new_with_manifest(&m, self.functions, self.wasi), + Source::Data(d) => Plugin::new(d, self.functions, self.wasi), } } } diff --git a/runtime/src/plugin_ref.rs b/runtime/src/plugin_ref.rs deleted file mode 100644 index de5c114fc..000000000 --- a/runtime/src/plugin_ref.rs +++ /dev/null @@ -1,95 +0,0 @@ -use crate::*; - -// PluginRef is used to access a plugin from a context-scoped plugin registry -pub struct PluginRef<'a> { - pub id: PluginIndex, - running: bool, - pub(crate) epoch_timer_tx: std::sync::mpsc::SyncSender, - plugin: *mut Plugin, - _t: std::marker::PhantomData<&'a ()>, -} - -impl<'a> PluginRef<'a> { - /// Initialize the plugin for a new call - pub(crate) fn start_call(mut self, is_start: bool) -> Self { - trace!("PluginRef::start_call: {}", self.id,); - - let plugin = unsafe { &mut *self.plugin }; - if is_start { - if let Err(e) = plugin.reset_store() { - error!("Call to Plugin::reset_store failed: {e:?}"); - } - } - - if plugin.instance.is_none() { - trace!("Plugin::instance is none, instantiating"); - if let Err(e) = plugin.instantiate() { - error!("Plugin::instantiate failed: {e:?}"); - plugin.error(e, ()); - } - } - - self.running = true; - self - } - - /// Create a `PluginRef` from a context - /// - /// - Reinstantiates the plugin if `should_reinstantiate` is set to `true` and WASI is enabled - pub fn new(ctx: &'a mut Context, plugin_id: PluginIndex, clear_error: bool) -> Option { - trace!("Loading plugin {plugin_id}"); - - let epoch_timer_tx = ctx.epoch_timer_tx.clone(); - - let plugin = if let Some(plugin) = ctx.plugin(plugin_id) { - plugin - } else { - error!("Plugin does not exist: {plugin_id}"); - return ctx.error(format!("Plugin does not exist: {plugin_id}"), None); - }; - - let plugin = unsafe { &mut *plugin }; - - if clear_error { - trace!("Clearing context error"); - ctx.error = None; - trace!("Clearing plugin error: {plugin_id}"); - plugin.clear_error(); - } - - Some(PluginRef { - id: plugin_id, - plugin, - epoch_timer_tx, - _t: std::marker::PhantomData, - running: false, - }) - } -} - -impl<'a> AsRef for PluginRef<'a> { - fn as_ref(&self) -> &Plugin { - unsafe { &*self.plugin } - } -} - -impl<'a> AsMut for PluginRef<'a> { - fn as_mut(&mut self) -> &mut Plugin { - unsafe { &mut *self.plugin } - } -} - -impl<'a> Drop for PluginRef<'a> { - fn drop(&mut self) { - trace!("Dropping PluginRef {}", self.id); - if self.running { - let plugin = self.as_mut(); - - // Stop timer - if let Err(e) = plugin.stop_timer() { - let id = plugin.timer_id; - error!("Failed to stop timeout manager for {id}: {e:?}"); - } - } - } -} diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index f686a8734..971c7ed85 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -5,6 +5,8 @@ use std::str::FromStr; use crate::*; +pub type ExtismMemoryHandle = u64; + /// A union type for host function argument/return values #[repr(C)] pub union ValUnion { @@ -22,18 +24,15 @@ pub struct ExtismVal { v: ValUnion, } -/// Wraps host functions -pub struct ExtismFunction(Function); - -impl From for ExtismFunction { - fn from(x: Function) -> Self { - ExtismFunction(x) - } +#[repr(C)] +pub struct ExtismPluginResult { + pub plugin: *mut Plugin, + pub error: *mut std::ffi::c_char, } /// Host function signature pub type ExtismFunctionType = extern "C" fn( - plugin: *mut Internal, + plugin: *mut CurrentPlugin, inputs: *const ExtismVal, n_inputs: Size, outputs: *mut ExtismVal, @@ -73,27 +72,21 @@ impl From<&wasmtime::Val> for ExtismVal { } } -/// Create a new context -#[no_mangle] -pub unsafe extern "C" fn extism_context_new() -> *mut Context { - trace!("Creating new Context"); - Box::into_raw(Box::new(Context::new())) -} - -/// Free a context +/// Get a plugin's ID, the returned bytes are a 16 byte buffer that represent a UUID value #[no_mangle] -pub unsafe extern "C" fn extism_context_free(ctx: *mut Context) { - trace!("Freeing context"); - if ctx.is_null() { - return; +pub unsafe extern "C" fn extism_plugin_id(plugin: *mut Plugin) -> *const u8 { + if plugin.is_null() { + return std::ptr::null_mut(); } - drop(Box::from_raw(ctx)) + + let plugin = &mut *plugin; + plugin.id.as_bytes().as_ptr() } /// Returns a pointer to the memory of the currently running plugin /// NOTE: this should only be called from host functions. #[no_mangle] -pub unsafe extern "C" fn extism_current_plugin_memory(plugin: *mut Internal) -> *mut u8 { +pub unsafe extern "C" fn extism_current_plugin_memory(plugin: *mut CurrentPlugin) -> *mut u8 { if plugin.is_null() { return std::ptr::null_mut(); } @@ -105,21 +98,27 @@ pub unsafe extern "C" fn extism_current_plugin_memory(plugin: *mut Internal) -> /// Allocate a memory block in the currently running plugin /// NOTE: this should only be called from host functions. #[no_mangle] -pub unsafe extern "C" fn extism_current_plugin_memory_alloc(plugin: *mut Internal, n: Size) -> u64 { +pub unsafe extern "C" fn extism_current_plugin_memory_alloc( + plugin: *mut CurrentPlugin, + n: Size, +) -> ExtismMemoryHandle { if plugin.is_null() { return 0; } let plugin = &mut *plugin; - plugin.memory_alloc(n as u64).unwrap_or_default() + match plugin.memory_alloc(n) { + Ok(x) => x.offset(), + Err(_) => 0, + } } /// Get the length of an allocated block /// NOTE: this should only be called from host functions. #[no_mangle] pub unsafe extern "C" fn extism_current_plugin_memory_length( - plugin: *mut Internal, - n: Size, + plugin: *mut CurrentPlugin, + n: ExtismMemoryHandle, ) -> Size { if plugin.is_null() { return 0; @@ -132,13 +131,18 @@ pub unsafe extern "C" fn extism_current_plugin_memory_length( /// Free an allocated memory block /// NOTE: this should only be called from host functions. #[no_mangle] -pub unsafe extern "C" fn extism_current_plugin_memory_free(plugin: *mut Internal, ptr: u64) { +pub unsafe extern "C" fn extism_current_plugin_memory_free( + plugin: *mut CurrentPlugin, + ptr: ExtismMemoryHandle, +) { if plugin.is_null() { return; } let plugin = &mut *plugin; - plugin.memory_free(ptr); + if let Some(handle) = plugin.memory_handle(ptr) { + plugin.memory_free(handle); + } } /// Create a new host function @@ -166,7 +170,7 @@ pub unsafe extern "C" fn extism_function_new( func: ExtismFunctionType, user_data: *mut std::ffi::c_void, free_user_data: Option, -) -> *mut ExtismFunction { +) -> *mut Function { let name = match std::ffi::CStr::from_ptr(name).to_str() { Ok(x) => x.to_string(), Err(_) => { @@ -225,24 +229,24 @@ pub unsafe extern "C" fn extism_function_new( Ok(()) }, ); - Box::into_raw(Box::new(ExtismFunction(f))) + Box::into_raw(Box::new(f)) +} + +/// Free `ExtismFunction` +#[no_mangle] +pub unsafe extern "C" fn extism_function_free(f: *mut Function) { + drop(Box::from_raw(f)) } /// Set the namespace of an `ExtismFunction` #[no_mangle] pub unsafe extern "C" fn extism_function_set_namespace( - ptr: *mut ExtismFunction, + ptr: *mut Function, namespace: *const std::ffi::c_char, ) { let namespace = std::ffi::CStr::from_ptr(namespace); let f = &mut *ptr; - f.0.set_namespace(namespace.to_string_lossy().to_string()); -} - -/// Free an `ExtismFunction` -#[no_mangle] -pub unsafe extern "C" fn extism_function_free(ptr: *mut ExtismFunction) { - drop(Box::from_raw(ptr)) + f.set_namespace(namespace.to_string_lossy().to_string()); } /// Create a new plugin with additional host functions @@ -254,15 +258,14 @@ pub unsafe extern "C" fn extism_function_free(ptr: *mut ExtismFunction) { /// `with_wasi`: enables/disables WASI #[no_mangle] pub unsafe extern "C" fn extism_plugin_new( - ctx: *mut Context, wasm: *const u8, wasm_size: Size, - functions: *mut *const ExtismFunction, + functions: *mut *const Function, n_functions: Size, with_wasi: bool, -) -> PluginIndex { + errmsg: *mut *mut std::ffi::c_char, +) -> *mut Plugin { trace!("Call to extism_plugin_new with wasm pointer {:?}", wasm); - let ctx = &mut *ctx; let data = std::slice::from_raw_parts(wasm, wasm_size as usize); let mut funcs = vec![]; @@ -273,100 +276,69 @@ pub unsafe extern "C" fn extism_plugin_new( if f.is_null() { continue; } - let f = &*f; - funcs.push(&f.0); + let f = (*f).clone(); + funcs.push(f); } } } - ctx.new_plugin(data, funcs, with_wasi) -} -/// Update a plugin, keeping the existing ID -/// -/// Similar to `extism_plugin_new` but takes an `index` argument to specify -/// which plugin to update -/// -/// Memory for this plugin will be reset upon update -#[no_mangle] -pub unsafe extern "C" fn extism_plugin_update( - ctx: *mut Context, - index: PluginIndex, - wasm: *const u8, - wasm_size: Size, - functions: *mut *const ExtismFunction, - nfunctions: Size, - with_wasi: bool, -) -> bool { - trace!("Call to extism_plugin_update with wasm pointer {:?}", wasm); - let ctx = &mut *ctx; - - let data = std::slice::from_raw_parts(wasm, wasm_size as usize); - - let mut funcs = vec![]; - - if !functions.is_null() { - for i in 0..nfunctions { - unsafe { - let f = *functions.add(i as usize); - if f.is_null() { - continue; - } - let f = &*f; - funcs.push(&f.0); + let plugin = Plugin::new(data, funcs, with_wasi); + match plugin { + Err(e) => { + if !errmsg.is_null() { + let e = + std::ffi::CString::new(format!("Unable to create plugin: {:?}", e)).unwrap(); + *errmsg = e.into_raw(); } + std::ptr::null_mut() } + Ok(p) => Box::into_raw(Box::new(p)), } +} - let plugin = match Plugin::new(data, funcs, with_wasi) { - Ok(x) => x, - Err(e) => { - error!("Error creating Plugin: {:?}", e); - ctx.set_error(e); - return false; - } - }; - - if !ctx.plugins.contains_key(&index) { - ctx.set_error("Plugin index does not exist"); - return false; +/// Free the error returned by `extism_plugin_new`, errors returned from `extism_plugin_error` don't need to be freed +#[no_mangle] +pub unsafe extern "C" fn extism_plugin_new_error_free(err: *mut std::ffi::c_char) { + if err.is_null() { + return; } - - ctx.plugins.insert(index, plugin); - - debug!("Plugin updated: {index}"); - true + drop(std::ffi::CString::from_raw(err)) } /// Remove a plugin from the registry and free associated memory #[no_mangle] -pub unsafe extern "C" fn extism_plugin_free(ctx: *mut Context, plugin: PluginIndex) { - if plugin < 0 || ctx.is_null() { +pub unsafe extern "C" fn extism_plugin_free(plugin: *mut Plugin) { + if plugin.is_null() { return; } - trace!("Freeing plugin {plugin}"); - - let ctx = &mut *ctx; - ctx.remove(plugin); + let plugin = Box::from_raw(plugin); + trace!("Freeing plugin {}", plugin.id); + drop(plugin) } +#[derive(Clone)] pub struct ExtismCancelHandle { - pub(crate) epoch_timer_tx: Option>, + pub(crate) timer_tx: std::sync::mpsc::Sender, pub id: uuid::Uuid, } +impl ExtismCancelHandle { + pub fn cancel(&self) -> Result<(), Error> { + self.timer_tx.send(TimerAction::Cancel { id: self.id })?; + Ok(()) + } +} + /// Get plugin ID for cancellation #[no_mangle] pub unsafe extern "C" fn extism_plugin_cancel_handle( - ctx: *mut Context, - plugin: PluginIndex, + plugin: *const Plugin, ) -> *const ExtismCancelHandle { - let ctx = &mut *ctx; - let mut plugin = match PluginRef::new(ctx, plugin, true) { - None => return std::ptr::null_mut(), - Some(p) => p, - }; - let plugin = plugin.as_mut(); + if plugin.is_null() { + return std::ptr::null(); + } + let plugin = &*plugin; &plugin.cancel_handle as *const _ } @@ -374,56 +346,38 @@ pub unsafe extern "C" fn extism_plugin_cancel_handle( #[no_mangle] pub unsafe extern "C" fn extism_plugin_cancel(handle: *const ExtismCancelHandle) -> bool { let handle = &*handle; - if let Some(tx) = &handle.epoch_timer_tx { - return tx.send(TimerAction::Cancel { id: handle.id }).is_ok(); - } - - false -} - -/// Remove all plugins from the registry -#[no_mangle] -pub unsafe extern "C" fn extism_context_reset(ctx: *mut Context) { - let ctx = &mut *ctx; - - trace!( - "Resetting context, plugins cleared: {:?}", - ctx.plugins.keys().collect::>() - ); - - ctx.plugins.clear(); + handle.cancel().is_ok() } /// Update plugin config values, this will merge with the existing values #[no_mangle] pub unsafe extern "C" fn extism_plugin_config( - ctx: *mut Context, - plugin: PluginIndex, + plugin: *mut Plugin, json: *const u8, json_size: Size, ) -> bool { - let ctx = &mut *ctx; - let mut plugin_ref = match PluginRef::new(ctx, plugin, true) { - None => return false, - Some(p) => p, - }; + if plugin.is_null() { + return false; + } + let plugin = &mut *plugin; + let _lock = plugin.instance.clone(); + let _lock = _lock.lock().unwrap(); + trace!( "Call to extism_plugin_config for {} with json pointer {:?}", - plugin_ref.id, + plugin.id, json ); - let plugin = plugin_ref.as_mut(); - let data = std::slice::from_raw_parts(json, json_size as usize); let json: std::collections::BTreeMap> = match serde_json::from_slice(data) { Ok(x) => x, Err(e) => { - return plugin.error(e, false); + return plugin.return_error(e, false); } }; - let wasi = &mut plugin.internal_mut().wasi; + let wasi = &mut plugin.current_plugin_mut().wasi; if let Some(Wasi { ctx, .. }) = wasi { for (k, v) in json.iter() { match v { @@ -437,7 +391,7 @@ pub unsafe extern "C" fn extism_plugin_config( } } - let config = &mut plugin.internal_mut().manifest.as_mut().config; + let config = &mut plugin.current_plugin_mut().manifest.config; for (k, v) in json.into_iter() { match v { Some(v) => { @@ -451,21 +405,22 @@ pub unsafe extern "C" fn extism_plugin_config( } } + plugin.clear_error(); true } /// Returns true if `func_name` exists #[no_mangle] pub unsafe extern "C" fn extism_plugin_function_exists( - ctx: *mut Context, - plugin: PluginIndex, + plugin: *mut Plugin, func_name: *const c_char, ) -> bool { - let ctx = &mut *ctx; - let mut plugin = match PluginRef::new(ctx, plugin, true) { - None => return false, - Some(p) => p, - }; + if plugin.is_null() { + return false; + } + let plugin = &mut *plugin; + let _lock = plugin.instance.clone(); + let _lock = _lock.lock().unwrap(); let name = std::ffi::CStr::from_ptr(func_name); trace!("Call to extism_plugin_function_exists for: {:?}", name); @@ -473,11 +428,12 @@ pub unsafe extern "C" fn extism_plugin_function_exists( let name = match name.to_str() { Ok(x) => x, Err(e) => { - return plugin.as_mut().error(e, false); + return plugin.return_error(e, false); } }; - plugin.as_mut().get_func(name).is_some() + plugin.clear_error(); + plugin.function_exists(name) } /// Call a function @@ -487,196 +443,90 @@ pub unsafe extern "C" fn extism_plugin_function_exists( /// `data_len`: is the length of `data` #[no_mangle] pub unsafe extern "C" fn extism_plugin_call( - ctx: *mut Context, - plugin_id: PluginIndex, + plugin: *mut Plugin, func_name: *const c_char, data: *const u8, data_len: Size, ) -> i32 { - let ctx = &mut *ctx; + if plugin.is_null() { + return -1; + } + let plugin = &mut *plugin; + let lock = plugin.instance.clone(); + let mut lock = lock.lock().unwrap(); // Get function name let name = std::ffi::CStr::from_ptr(func_name); let name = match name.to_str() { Ok(name) => name, - Err(e) => return ctx.error(e, -1), - }; - let is_start = name == "_start"; - - // Get a `PluginRef` and call `init` to set up the plugin input and memory, this is only - // needed before a new call - let mut plugin_ref = match PluginRef::new(ctx, plugin_id, true) { - None => return -1, - Some(p) => p.start_call(is_start), - }; - let tx = plugin_ref.epoch_timer_tx.clone(); - let plugin = plugin_ref.as_mut(); - - let func = match plugin.get_func(name) { - Some(x) => x, - None => return plugin.error(format!("Function not found: {name}"), -1), + Err(e) => return plugin.return_error(e, -1), }; - // Check the number of results, reject functions with more than 1 result - let n_results = func.ty(plugin.store()).results().len(); - if n_results > 1 { - return plugin.error( - format!("Function {name} has {n_results} results, expected 0 or 1"), - -1, - ); - } - - if let Err(e) = plugin.set_input(data, data_len as usize) { - return plugin.error(e, -1); - } - - if plugin.has_error() { - return -1; - } - - // Start timer, this will be stopped when PluginRef goes out of scope - if let Err(e) = plugin.start_timer(&tx) { - return plugin.error(e, -1); - } - - debug!("Calling function: {name} in plugin {plugin_id}"); - - // Call the function - let mut results = vec![wasmtime::Val::null(); n_results]; - let res = func.call(plugin.store_mut(), &[], results.as_mut_slice()); + trace!("Calling function {} of plugin {}", name, plugin.id); + let input = std::slice::from_raw_parts(data, data_len as usize); + let res = plugin.raw_call(&mut lock, name, input); match res { - Ok(()) => (), - Err(e) => { - plugin.store.set_epoch_deadline(1); - if let Some(exit) = e.downcast_ref::() { - trace!("WASI return code: {}", exit.0); - if exit.0 != 0 { - return plugin.error(&e, exit.0); - } - return exit.0; - } - - if e.root_cause().to_string() == "timeout" { - return plugin.error("timeout", -1); - } - - error!("Call: {e:?}"); - return plugin.error(e.context("Call failed"), -1); - } - }; - - // If `results` is empty and the return value wasn't a WASI exit code then - // the call succeeded - if results.is_empty() { - return 0; + Err((e, rc)) => plugin.return_error(e, rc), + Ok(x) => x, } - - // Return result to caller - results[0].unwrap_i32() } -pub fn get_context_error(ctx: &Context) -> *const c_char { - match &ctx.error { - Some(e) => e.as_ptr() as *const _, - None => { - trace!("Context error is NULL"); - std::ptr::null() - } - } +/// Get the error associated with a `Plugin` +#[no_mangle] +#[deprecated] +pub unsafe extern "C" fn extism_error(plugin: *mut Plugin) -> *const c_char { + extism_plugin_error(plugin) } -/// Get the error associated with a `Context` or `Plugin`, if `plugin` is `-1` then the context -/// error will be returned +/// Get the error associated with a `Plugin` #[no_mangle] -pub unsafe extern "C" fn extism_error(ctx: *mut Context, plugin: PluginIndex) -> *const c_char { - trace!("Call to extism_error for plugin {plugin}"); - - let ctx = &mut *ctx; - - if !ctx.plugin_exists(plugin) { - return get_context_error(ctx); +pub unsafe extern "C" fn extism_plugin_error(plugin: *mut Plugin) -> *const c_char { + if plugin.is_null() { + return std::ptr::null(); } + let plugin = &mut *plugin; + let _lock = plugin.instance.clone(); + let _lock = _lock.lock().unwrap(); + trace!("Call to extism_plugin_error for plugin {}", plugin.id); - let mut plugin_ref = match PluginRef::new(ctx, plugin, false) { - None => return std::ptr::null(), - Some(p) => p, - }; - let plugin = plugin_ref.as_mut(); - let output = &mut [Val::I64(0)]; - if let Some(f) = plugin - .linker - .get(&mut plugin.store, "env", "extism_error_get") - { - f.into_func() - .unwrap() - .call(&mut plugin.store, &[], output) - .unwrap(); - } - if output[0].unwrap_i64() == 0 { + if plugin.output.error_offset == 0 { trace!("Error is NULL"); return std::ptr::null(); } - plugin.memory_ptr().add(output[0].unwrap_i64() as usize) as *const _ + plugin + .current_plugin_mut() + .memory_ptr() + .add(plugin.output.error_offset as usize) as *const _ } /// Get the length of a plugin's output data #[no_mangle] -pub unsafe extern "C" fn extism_plugin_output_length( - ctx: *mut Context, - plugin: PluginIndex, -) -> Size { - trace!("Call to extism_plugin_output_length for plugin {plugin}"); - - let ctx = &mut *ctx; - let mut plugin_ref = match PluginRef::new(ctx, plugin, true) { - None => return 0, - Some(p) => p, - }; - let plugin = plugin_ref.as_mut(); - let out = &mut [Val::I64(0)]; - let _ = plugin - .linker - .get(&mut plugin.store, "env", "extism_output_length") - .unwrap() - .into_func() - .unwrap() - .call(&mut plugin.store_mut(), &[], out); - let len = out[0].unwrap_i64() as Size; - trace!("Output length: {len}"); - len +pub unsafe extern "C" fn extism_plugin_output_length(plugin: *mut Plugin) -> Size { + if plugin.is_null() { + return 0; + } + let plugin = &mut *plugin; + let _lock = plugin.instance.clone(); + let _lock = _lock.lock().unwrap(); + trace!("Output length: {}", plugin.output.length); + plugin.output.length } /// Get a pointer to the output data #[no_mangle] -pub unsafe extern "C" fn extism_plugin_output_data( - ctx: *mut Context, - plugin: PluginIndex, -) -> *const u8 { - trace!("Call to extism_plugin_output_data for plugin {plugin}"); - - let ctx = &mut *ctx; - let mut plugin_ref = match PluginRef::new(ctx, plugin, true) { - None => return std::ptr::null(), - Some(p) => p, - }; - let plugin = plugin_ref.as_mut(); - let ptr = plugin.memory_ptr(); - let out = &mut [Val::I64(0)]; - let mut store = &mut *(plugin.store_mut() as *mut Store<_>); - plugin - .linker - .get(&mut store, "env", "extism_output_offset") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[], out) - .unwrap(); - - let offs = out[0].unwrap_i64() as usize; - trace!("Output offset: {}", offs); - ptr.add(offs) +pub unsafe extern "C" fn extism_plugin_output_data(plugin: *mut Plugin) -> *const u8 { + if plugin.is_null() { + return std::ptr::null(); + } + let plugin = &mut *plugin; + let _lock = plugin.instance.clone(); + let _lock = _lock.lock().unwrap(); + trace!("Call to extism_plugin_output_data for plugin {}", plugin.id); + + let ptr = plugin.current_plugin_mut().memory_ptr(); + ptr.add(plugin.output.offset as usize) } /// Set log file and level @@ -685,11 +535,7 @@ pub unsafe extern "C" fn extism_log_file( filename: *const c_char, log_level: *const c_char, ) -> bool { - use log::LevelFilter; - use log4rs::append::console::ConsoleAppender; - use log4rs::append::file::FileAppender; - use log4rs::config::{Appender, Config, Logger, Root}; - use log4rs::encode::pattern::PatternEncoder; + use log::Level; let file = if !filename.is_null() { let file = std::ffi::CStr::from_ptr(filename); @@ -715,56 +561,16 @@ pub unsafe extern "C" fn extism_log_file( "error" }; - let level = match LevelFilter::from_str(level) { + let level = match Level::from_str(&level.to_ascii_lowercase()) { Ok(x) => x, Err(_) => { return false; } }; - let encoder = Box::new(PatternEncoder::new("{t} {l} {d} - {m}\n")); - - let logfile: Box = - if file == "-" || file == "stdout" || file == "stderr" { - let target = if file == "-" || file == "stdout" { - log4rs::append::console::Target::Stdout - } else { - log4rs::append::console::Target::Stderr - }; - let console = ConsoleAppender::builder().target(target).encoder(encoder); - Box::new(console.build()) - } else { - match FileAppender::builder().encoder(encoder).build(file) { - Ok(x) => Box::new(x), - Err(_) => { - return false; - } - } - }; - - let config = match Config::builder() - .appender(Appender::builder().build("logfile", logfile)) - .logger( - Logger::builder() - .appender("logfile") - .build("extism_runtime", level), - ) - .build(Root::builder().build(LevelFilter::Off)) - { - Ok(x) => x, - Err(_) => { - return false; - } - }; - - if log4rs::init_config(config).is_err() { - return false; - } - true + set_log_file(file, level).is_ok() } -const VERSION: &str = concat!(env!("CARGO_PKG_VERSION"), "\0"); - /// Get the Extism version string #[no_mangle] pub unsafe extern "C" fn extism_version() -> *const c_char { diff --git a/runtime/src/tests.rs b/runtime/src/tests.rs new file mode 100644 index 000000000..3689a8f8b --- /dev/null +++ b/runtime/src/tests.rs @@ -0,0 +1,245 @@ +use super::*; +use std::time::Instant; + +const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); +const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); +const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); + +fn hello_world( + plugin: &mut CurrentPlugin, + inputs: &[Val], + outputs: &mut [Val], + _user_data: UserData, +) -> Result<(), Error> { + let handle = plugin.memory_handle_val(&inputs[0]).unwrap(); + let input = plugin.memory_read_str(handle).unwrap().to_string(); + + let output = plugin.memory_alloc_bytes(&input).unwrap(); + outputs[0] = output.into(); + Ok(()) +} + +fn hello_world_panic( + _plugin: &mut CurrentPlugin, + _inputs: &[Val], + _outputs: &mut [Val], + _user_data: UserData, +) -> Result<(), Error> { + panic!("This should not run"); +} + +#[test] +fn it_works() { + let wasm_start = Instant::now(); + assert!(set_log_file("test.log", log::Level::Trace).is_ok()); + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ) + .with_namespace("env"); + let g = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world_panic, + ) + .with_namespace("test"); + + let mut plugin = Plugin::new(WASM, [f, g], true).unwrap(); + println!("register loaded plugin: {:?}", wasm_start.elapsed()); + + let repeat = 1182; + let input = "aeiouAEIOU____________________________________&smtms_y?".repeat(repeat); + let data = plugin.call("count_vowels", &input).unwrap(); + + assert_eq!( + data, + b"{\"count\": 11820}", + "expecting vowel count of {}, input size: {}, output size: {}", + 10 * repeat, + input.len(), + data.len() + ); + + println!( + "register plugin + function call: {:?}, sent input size: {} bytes", + wasm_start.elapsed(), + input.len() + ); + + println!("--------------"); + + let mut test_times = vec![]; + for _ in 0..100 { + let test_start = Instant::now(); + plugin.call("count_vowels", &input).unwrap(); + test_times.push(test_start.elapsed()); + } + + let native_test = || { + let native_start = Instant::now(); + // let native_vowel_count = input + // .chars() + // .filter(|c| match c { + // 'A' | 'E' | 'I' | 'O' | 'U' | 'a' | 'e' | 'i' | 'o' | 'u' => true, + // _ => false, + // }) + // .collect::>() + // .len(); + + let mut _native_vowel_count = 0; + let input: &[u8] = input.as_ref(); + for i in 0..input.len() { + if input[i] == b'A' + || input[i] == b'E' + || input[i] == b'I' + || input[i] == b'O' + || input[i] == b'U' + || input[i] == b'a' + || input[i] == b'e' + || input[i] == b'i' + || input[i] == b'o' + || input[i] == b'u' + { + _native_vowel_count += 1; + } + } + native_start.elapsed() + }; + + let native_test_times = (0..100).map(|_| native_test()); + let native_num_tests = native_test_times.len(); + + let native_sum: std::time::Duration = native_test_times + .into_iter() + .reduce(|accum: std::time::Duration, elapsed| accum + elapsed) + .unwrap(); + let native_avg: std::time::Duration = native_sum / native_num_tests as u32; + + println!( + "native function call (avg, N = {}): {:?}", + native_num_tests, native_avg + ); + + let num_tests = test_times.len(); + let sum: std::time::Duration = test_times + .into_iter() + .reduce(|accum: std::time::Duration, elapsed| accum + elapsed) + .unwrap(); + let avg: std::time::Duration = sum / num_tests as u32; + + println!("wasm function call (avg, N = {}): {:?}", num_tests, avg); +} + +#[test] +fn test_plugin_threads() { + let p = std::sync::Arc::new(std::sync::Mutex::new( + PluginBuilder::new_with_module(WASM) + .with_function( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ) + .with_wasi(true) + .build() + .unwrap(), + )); + + let mut threads = vec![]; + for _ in 0..3 { + let plugin = p.clone(); + let a = std::thread::spawn(move || { + let mut plugin = plugin.lock().unwrap(); + for _ in 0..10 { + let output = plugin.call("count_vowels", "this is a test aaa").unwrap(); + assert_eq!(b"{\"count\": 7}", output); + } + }); + threads.push(a); + } + for thread in threads { + thread.join().unwrap(); + } +} + +#[test] +fn test_cancel() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let mut plugin = Plugin::new(WASM_LOOP, [f], true).unwrap(); + let handle = plugin.cancel_handle(); + + let start = std::time::Instant::now(); + std::thread::spawn(move || { + std::thread::sleep(std::time::Duration::from_secs(1)); + assert!(handle.cancel().is_ok()); + }); + let _output = plugin.call("infinite_loop", "abc123"); + let end = std::time::Instant::now(); + let time = end - start; + println!("Cancelled plugin ran for {:?}", time); + // std::io::stdout().write_all(output).unwrap(); +} + +#[test] +fn test_timeout() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let manifest = Manifest::new([extism_manifest::Wasm::data(WASM_LOOP)]) + .with_timeout(std::time::Duration::from_secs(1)); + let mut plugin = Plugin::new_with_manifest(&manifest, [f], true).unwrap(); + + let start = std::time::Instant::now(); + let _output = plugin.call("infinite_loop", "abc123"); + let end = std::time::Instant::now(); + let time = end - start; + println!("Timed out plugin ran for {:?}", time); + // std::io::stdout().write_all(output).unwrap(); +} + +#[test] +fn test_multiple_instantiations() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let mut plugin = Plugin::new(WASM, [f], true).unwrap(); + + // This is 10,001 because the wasmtime store limit is 10,000 - we want to test + // that our reinstantiation process is working and that limit is never hit. + for _ in 0..10001 { + let _output = plugin.call("count_vowels", "abc123").unwrap(); + } +} + +#[test] +fn test_globals() { + let mut plugin = Plugin::new(WASM_GLOBALS, [], true).unwrap(); + for i in 0..1000 { + let output = plugin.call("globals", "").unwrap(); + let count: serde_json::Value = serde_json::from_slice(output).unwrap(); + assert_eq!(count.get("count").unwrap().as_i64().unwrap(), i); + } +} diff --git a/runtime/src/timer.rs b/runtime/src/timer.rs index 76d814b55..f09585ba6 100644 --- a/runtime/src/timer.rs +++ b/runtime/src/timer.rs @@ -16,18 +16,38 @@ pub(crate) enum TimerAction { } pub(crate) struct Timer { - pub tx: std::sync::mpsc::SyncSender, + pub tx: std::sync::mpsc::Sender, pub thread: Option>, } #[cfg(not(target_family = "windows"))] extern "C" fn cleanup_timer() { - drop(Context::timer().take()) + let mut timer = match unsafe { TIMER.lock() } { + Ok(x) => x, + Err(e) => e.into_inner(), + }; + drop(timer.take()); } +static mut TIMER: std::sync::Mutex> = std::sync::Mutex::new(None); + impl Timer { - pub fn init(timer: &mut Option) -> std::sync::mpsc::SyncSender { - let (tx, rx) = std::sync::mpsc::sync_channel(128); + pub(crate) fn tx() -> std::sync::mpsc::Sender { + let mut timer = match unsafe { TIMER.lock() } { + Ok(x) => x, + Err(e) => e.into_inner(), + }; + + let timer = &mut *timer; + + match timer { + None => Timer::init(timer), + Some(t) => t.tx.clone(), + } + } + + pub fn init(timer: &mut Option) -> std::sync::mpsc::Sender { + let (tx, rx) = std::sync::mpsc::channel(); let thread = std::thread::spawn(move || { let mut plugins = std::collections::BTreeMap::new(); diff --git a/rust/Cargo.toml b/rust/Cargo.toml deleted file mode 100644 index 278c0a4f6..000000000 --- a/rust/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "extism" -version = "0.5.0" -edition = "2021" -authors = ["The Extism Authors", "oss@extism.org"] -license = "BSD-3-Clause" -homepage = "https://extism.org" -repository = "https://github.com/extism/extism" -description = "Extism Host SDK for Rust" - -[dependencies] -extism-manifest = { version = "0.5.0", path = "../manifest" } -extism-runtime = { version = "0.5.0", path = "../runtime"} -serde_json = "1" -log = "0.4" -anyhow = "1" -uuid = { version = "1", features = ["v4"] } diff --git a/rust/Makefile b/rust/Makefile deleted file mode 100644 index 307e09557..000000000 --- a/rust/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -bindings: - bindgen ../runtime/extism.h --allowlist-function extism.* > src/bindings.rs diff --git a/rust/src/bindings.rs b/rust/src/bindings.rs deleted file mode 100644 index c1e136d24..000000000 --- a/rust/src/bindings.rs +++ /dev/null @@ -1,309 +0,0 @@ -/* automatically generated by rust-bindgen 0.65.1 */ - -#[doc = " Signed 32 bit integer."] -pub const ExtismValType_I32: ExtismValType = 0; -#[doc = " Signed 64 bit integer."] -pub const ExtismValType_I64: ExtismValType = 1; -#[doc = " Floating point 32 bit integer."] -pub const ExtismValType_F32: ExtismValType = 2; -#[doc = " Floating point 64 bit integer."] -pub const ExtismValType_F64: ExtismValType = 3; -#[doc = " A 128 bit number."] -pub const ExtismValType_V128: ExtismValType = 4; -#[doc = " A reference to a Wasm function."] -pub const ExtismValType_FuncRef: ExtismValType = 5; -#[doc = " A reference to opaque data in the Wasm instance."] -pub const ExtismValType_ExternRef: ExtismValType = 6; -#[doc = " A list of all possible value types in WebAssembly."] -pub type ExtismValType = ::std::os::raw::c_uint; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ExtismContext { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ExtismCancelHandle { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ExtismFunction { - _unused: [u8; 0], -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct ExtismCurrentPlugin { - _unused: [u8; 0], -} -pub type ExtismSize = u64; -#[doc = " A union type for host function argument/return values"] -#[repr(C)] -#[derive(Copy, Clone)] -pub union ExtismValUnion { - pub i32_: i32, - pub i64_: i64, - pub f32_: f32, - pub f64_: f64, -} -#[test] -fn bindgen_test_layout_ExtismValUnion() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 8usize, - concat!("Size of: ", stringify!(ExtismValUnion)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ExtismValUnion)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i32_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ExtismValUnion), - "::", - stringify!(i32_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).i64_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ExtismValUnion), - "::", - stringify!(i64_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).f32_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ExtismValUnion), - "::", - stringify!(f32_) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).f64_) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ExtismValUnion), - "::", - stringify!(f64_) - ) - ); -} -#[doc = " `ExtismVal` holds the type and value of a function argument/return"] -#[repr(C)] -#[derive(Copy, Clone)] -pub struct ExtismVal { - pub t: ExtismValType, - pub v: ExtismValUnion, -} -#[test] -fn bindgen_test_layout_ExtismVal() { - const UNINIT: ::std::mem::MaybeUninit = ::std::mem::MaybeUninit::uninit(); - let ptr = UNINIT.as_ptr(); - assert_eq!( - ::std::mem::size_of::(), - 16usize, - concat!("Size of: ", stringify!(ExtismVal)) - ); - assert_eq!( - ::std::mem::align_of::(), - 8usize, - concat!("Alignment of ", stringify!(ExtismVal)) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).t) as usize - ptr as usize }, - 0usize, - concat!( - "Offset of field: ", - stringify!(ExtismVal), - "::", - stringify!(t) - ) - ); - assert_eq!( - unsafe { ::std::ptr::addr_of!((*ptr).v) as usize - ptr as usize }, - 8usize, - concat!( - "Offset of field: ", - stringify!(ExtismVal), - "::", - stringify!(v) - ) - ); -} -#[doc = " Host function signature"] -pub type ExtismFunctionType = ::std::option::Option< - unsafe extern "C" fn( - plugin: *mut ExtismCurrentPlugin, - inputs: *const ExtismVal, - n_inputs: ExtismSize, - outputs: *mut ExtismVal, - n_outputs: ExtismSize, - data: *mut ::std::os::raw::c_void, - ), ->; -pub type ExtismPlugin = i32; -extern "C" { - #[doc = " Create a new context"] - pub fn extism_context_new() -> *mut ExtismContext; -} -extern "C" { - #[doc = " Free a context"] - pub fn extism_context_free(ctx: *mut ExtismContext); -} -extern "C" { - #[doc = " Returns a pointer to the memory of the currently running plugin\n NOTE: this should only be called from host functions."] - pub fn extism_current_plugin_memory(plugin: *mut ExtismCurrentPlugin) -> *mut u8; -} -extern "C" { - #[doc = " Allocate a memory block in the currently running plugin\n NOTE: this should only be called from host functions."] - pub fn extism_current_plugin_memory_alloc( - plugin: *mut ExtismCurrentPlugin, - n: ExtismSize, - ) -> u64; -} -extern "C" { - #[doc = " Get the length of an allocated block\n NOTE: this should only be called from host functions."] - pub fn extism_current_plugin_memory_length( - plugin: *mut ExtismCurrentPlugin, - n: ExtismSize, - ) -> ExtismSize; -} -extern "C" { - #[doc = " Free an allocated memory block\n NOTE: this should only be called from host functions."] - pub fn extism_current_plugin_memory_free(plugin: *mut ExtismCurrentPlugin, ptr: u64); -} -extern "C" { - #[doc = " Create a new host function\n\n Arguments\n - `name`: function name, this should be valid UTF-8\n - `inputs`: argument types\n - `n_inputs`: number of argument types\n - `outputs`: return types\n - `n_outputs`: number of return types\n - `func`: the function to call\n - `user_data`: a pointer that will be passed to the function when it's called\n this value should live as long as the function exists\n - `free_user_data`: a callback to release the `user_data` value when the resulting\n `ExtismFunction` is freed.\n\n Returns a new `ExtismFunction` or `null` if the `name` argument is invalid."] - pub fn extism_function_new( - name: *const ::std::os::raw::c_char, - inputs: *const ExtismValType, - n_inputs: ExtismSize, - outputs: *const ExtismValType, - n_outputs: ExtismSize, - func: ExtismFunctionType, - user_data: *mut ::std::os::raw::c_void, - free_user_data: ::std::option::Option< - unsafe extern "C" fn(__: *mut ::std::os::raw::c_void), - >, - ) -> *mut ExtismFunction; -} -extern "C" { - #[doc = " Set the namespace of an `ExtismFunction`"] - pub fn extism_function_set_namespace( - ptr: *mut ExtismFunction, - namespace_: *const ::std::os::raw::c_char, - ); -} -extern "C" { - #[doc = " Free an `ExtismFunction`"] - pub fn extism_function_free(ptr: *mut ExtismFunction); -} -extern "C" { - #[doc = " Create a new plugin with additional host functions\n\n `wasm`: is a WASM module (wat or wasm) or a JSON encoded manifest\n `wasm_size`: the length of the `wasm` parameter\n `functions`: an array of `ExtismFunction*`\n `n_functions`: the number of functions provided\n `with_wasi`: enables/disables WASI"] - pub fn extism_plugin_new( - ctx: *mut ExtismContext, - wasm: *const u8, - wasm_size: ExtismSize, - functions: *mut *const ExtismFunction, - n_functions: ExtismSize, - with_wasi: bool, - ) -> ExtismPlugin; -} -extern "C" { - #[doc = " Update a plugin, keeping the existing ID\n\n Similar to `extism_plugin_new` but takes an `index` argument to specify\n which plugin to update\n\n Memory for this plugin will be reset upon update"] - pub fn extism_plugin_update( - ctx: *mut ExtismContext, - index: ExtismPlugin, - wasm: *const u8, - wasm_size: ExtismSize, - functions: *mut *const ExtismFunction, - nfunctions: ExtismSize, - with_wasi: bool, - ) -> bool; -} -extern "C" { - #[doc = " Remove a plugin from the registry and free associated memory"] - pub fn extism_plugin_free(ctx: *mut ExtismContext, plugin: ExtismPlugin); -} -extern "C" { - #[doc = " Get plugin ID for cancellation"] - pub fn extism_plugin_cancel_handle( - ctx: *mut ExtismContext, - plugin: ExtismPlugin, - ) -> *const ExtismCancelHandle; -} -extern "C" { - #[doc = " Cancel a running plugin"] - pub fn extism_plugin_cancel(handle: *const ExtismCancelHandle) -> bool; -} -extern "C" { - #[doc = " Remove all plugins from the registry"] - pub fn extism_context_reset(ctx: *mut ExtismContext); -} -extern "C" { - #[doc = " Update plugin config values, this will merge with the existing values"] - pub fn extism_plugin_config( - ctx: *mut ExtismContext, - plugin: ExtismPlugin, - json: *const u8, - json_size: ExtismSize, - ) -> bool; -} -extern "C" { - #[doc = " Returns true if `func_name` exists"] - pub fn extism_plugin_function_exists( - ctx: *mut ExtismContext, - plugin: ExtismPlugin, - func_name: *const ::std::os::raw::c_char, - ) -> bool; -} -extern "C" { - #[doc = " Call a function\n\n `func_name`: is the function to call\n `data`: is the input data\n `data_len`: is the length of `data`"] - pub fn extism_plugin_call( - ctx: *mut ExtismContext, - plugin_id: ExtismPlugin, - func_name: *const ::std::os::raw::c_char, - data: *const u8, - data_len: ExtismSize, - ) -> i32; -} -extern "C" { - #[doc = " Get the error associated with a `Context` or `Plugin`, if `plugin` is `-1` then the context\n error will be returned"] - pub fn extism_error( - ctx: *mut ExtismContext, - plugin: ExtismPlugin, - ) -> *const ::std::os::raw::c_char; -} -extern "C" { - #[doc = " Get the length of a plugin's output data"] - pub fn extism_plugin_output_length(ctx: *mut ExtismContext, plugin: ExtismPlugin) - -> ExtismSize; -} -extern "C" { - #[doc = " Get a pointer to the output data"] - pub fn extism_plugin_output_data(ctx: *mut ExtismContext, plugin: ExtismPlugin) -> *const u8; -} -extern "C" { - #[doc = " Set log file and level"] - pub fn extism_log_file( - filename: *const ::std::os::raw::c_char, - log_level: *const ::std::os::raw::c_char, - ) -> bool; -} -extern "C" { - #[doc = " Get the Extism version string"] - pub fn extism_version() -> *const ::std::os::raw::c_char; -} diff --git a/rust/src/context.rs b/rust/src/context.rs deleted file mode 100644 index 4198cccdf..000000000 --- a/rust/src/context.rs +++ /dev/null @@ -1,34 +0,0 @@ -use crate::*; - -#[derive(Clone)] -pub struct Context(pub(crate) std::sync::Arc>); - -impl Default for Context { - fn default() -> Context { - Context::new() - } -} - -unsafe impl Sync for Context {} -unsafe impl Send for Context {} - -impl Context { - /// Create a new context - pub fn new() -> Context { - Context(std::sync::Arc::new(std::sync::Mutex::new( - extism_runtime::Context::new(), - ))) - } - - /// Remove all registered plugins - pub fn reset(&mut self) { - unsafe { bindings::extism_context_reset(&mut *self.lock()) } - } - - pub(crate) fn lock(&self) -> std::sync::MutexGuard { - match self.0.lock() { - Ok(x) => x, - Err(x) => x.into_inner(), - } - } -} diff --git a/rust/src/lib.rs b/rust/src/lib.rs deleted file mode 100644 index fa1828832..000000000 --- a/rust/src/lib.rs +++ /dev/null @@ -1,322 +0,0 @@ -pub use extism_manifest::{self as manifest, Manifest}; -pub use extism_runtime::{ - sdk as bindings, Function, Internal as CurrentPlugin, InternalExt, UserData, Val, ValType, -}; - -mod context; -mod plugin; -mod plugin_builder; - -pub use context::Context; -pub use plugin::{CancelHandle, Plugin}; -pub use plugin_builder::PluginBuilder; -pub type Error = anyhow::Error; - -/// Gets the version of Extism -pub fn extism_version() -> String { - let err = unsafe { bindings::extism_version() }; - let buf = unsafe { std::ffi::CStr::from_ptr(err) }; - return buf.to_str().unwrap().to_string(); -} - -/// Set the log file and level, this is a global setting -pub fn set_log_file(filename: impl AsRef, log_level: Option) -> bool { - if let Ok(filename) = std::ffi::CString::new(filename.as_ref().to_string_lossy().as_bytes()) { - let log_level_s = log_level.map(|x| x.as_str()); - let log_level_c = log_level_s.map(|x| std::ffi::CString::new(x)); - if let Some(Ok(log_level_c)) = log_level_c { - unsafe { - return bindings::extism_log_file(filename.as_ptr(), log_level_c.as_ptr()); - } - } else { - unsafe { - return bindings::extism_log_file(filename.as_ptr(), std::ptr::null()); - } - } - } - false -} - -#[cfg(test)] -mod tests { - use super::*; - use std::time::Instant; - - const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); - const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); - const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); - - fn hello_world( - plugin: &mut CurrentPlugin, - inputs: &[Val], - outputs: &mut [Val], - _user_data: UserData, - ) -> Result<(), Error> { - let input_offs = inputs[0].unwrap_i64() as u64; - let input = plugin.memory_read_str(input_offs).unwrap().to_string(); - - let output = plugin.memory_alloc_bytes(&input).unwrap(); - outputs[0] = Val::I64(output as i64); - Ok(()) - } - - fn hello_world_panic( - _plugin: &mut CurrentPlugin, - _inputs: &[Val], - _outputs: &mut [Val], - _user_data: UserData, - ) -> Result<(), Error> { - panic!("This should not run"); - } - - #[test] - fn it_works() { - let wasm_start = Instant::now(); - assert!(set_log_file("test.log", Some(log::Level::Trace))); - let context = Context::new(); - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ) - .with_namespace("env"); - let g = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world_panic, - ) - .with_namespace("test"); - - let mut plugin = Plugin::new(&context, WASM, [f, g], true).unwrap(); - println!("register loaded plugin: {:?}", wasm_start.elapsed()); - - let repeat = 1182; - let input = "aeiouAEIOU____________________________________&smtms_y?".repeat(repeat); - let data = plugin.call("count_vowels", &input).unwrap(); - - assert_eq!( - data, - b"{\"count\": 11820}", - "expecting vowel count of {}, input size: {}, output size: {}", - 10 * repeat, - input.len(), - data.len() - ); - - println!( - "register plugin + function call: {:?}, sent input size: {} bytes", - wasm_start.elapsed(), - input.len() - ); - - println!("--------------"); - - let test_times = (0..100) - .map(|_| { - let test_start = Instant::now(); - plugin.call("count_vowels", &input).unwrap(); - test_start.elapsed() - }) - .collect::>(); - - let native_test = || { - let native_start = Instant::now(); - // let native_vowel_count = input - // .chars() - // .filter(|c| match c { - // 'A' | 'E' | 'I' | 'O' | 'U' | 'a' | 'e' | 'i' | 'o' | 'u' => true, - // _ => false, - // }) - // .collect::>() - // .len(); - - let mut _native_vowel_count = 0; - let input: &[u8] = input.as_ref(); - for i in 0..input.len() { - if input[i] == b'A' - || input[i] == b'E' - || input[i] == b'I' - || input[i] == b'O' - || input[i] == b'U' - || input[i] == b'a' - || input[i] == b'e' - || input[i] == b'i' - || input[i] == b'o' - || input[i] == b'u' - { - _native_vowel_count += 1; - } - } - native_start.elapsed() - }; - - let native_test_times = (0..100).map(|_| native_test()); - let native_num_tests = native_test_times.len(); - - let native_sum: std::time::Duration = native_test_times - .into_iter() - .reduce(|accum: std::time::Duration, elapsed| accum + elapsed) - .unwrap(); - let native_avg: std::time::Duration = native_sum / native_num_tests as u32; - - println!( - "native function call (avg, N = {}): {:?}", - native_num_tests, native_avg - ); - - let num_tests = test_times.len(); - let sum: std::time::Duration = test_times - .into_iter() - .reduce(|accum: std::time::Duration, elapsed| accum + elapsed) - .unwrap(); - let avg: std::time::Duration = sum / num_tests as u32; - - println!("wasm function call (avg, N = {}): {:?}", num_tests, avg); - } - - #[test] - fn test_context_threads() { - use std::io::Write; - std::thread::spawn(|| { - let context = Context::new(); - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ); - let mut plugin = Plugin::new(&context, WASM, [f], true).unwrap(); - let output = plugin.call("count_vowels", "this is a test").unwrap(); - std::io::stdout().write_all(output).unwrap(); - }); - - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ); - - // One context shared between two threads - let context = Context::new(); - let mut threads = vec![]; - for _ in 0..3 { - let ctx = context.clone(); - let g = f.clone(); - let a = std::thread::spawn(move || { - let mut plugin = PluginBuilder::new_with_module(WASM) - .with_function(g) - .with_wasi(true) - .build(Some(&ctx)) - .unwrap(); - for _ in 0..10 { - let output = plugin.call("count_vowels", "this is a test aaa").unwrap(); - assert_eq!(b"{\"count\": 7}", output); - } - }); - threads.push(a); - } - for thread in threads { - thread.join().unwrap(); - } - } - - #[test] - fn test_plugin_threads() { - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ); - - let p = std::sync::Arc::new(std::sync::Mutex::new( - PluginBuilder::new_with_module(WASM) - .with_function(f) - .with_wasi(true) - .build(None) - .unwrap(), - )); - - let mut threads = vec![]; - for _ in 0..3 { - let plugin = p.clone(); - let a = std::thread::spawn(move || { - let mut plugin = plugin.lock().unwrap(); - for _ in 0..10 { - let output = plugin.call("count_vowels", "this is a test aaa").unwrap(); - assert_eq!(b"{\"count\": 7}", output); - } - }); - threads.push(a); - } - for thread in threads { - thread.join().unwrap(); - } - } - - #[test] - fn test_cancel() { - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ); - - let context = Context::new(); - let mut plugin = Plugin::new(&context, WASM_LOOP, [f], true).unwrap(); - let handle = plugin.cancel_handle(); - - std::thread::spawn(move || { - std::thread::sleep(std::time::Duration::from_secs(1)); - handle.cancel(); - }); - - let start = std::time::Instant::now(); - let _output = plugin.call("infinite_loop", "abc123"); - let end = std::time::Instant::now(); - let time = end - start; - println!("Cancelled plugin ran for {:?}", time); - // std::io::stdout().write_all(output).unwrap(); - } - - #[test] - fn test_multiple_instantiations() { - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ); - - let context = Context::new(); - let mut plugin = Plugin::new(&context, WASM, [f], true).unwrap(); - - // This is 10,001 because the wasmtime store limit is 10,000 - we want to test - // that our reinstantiation process is working and that limit is never hit. - for _ in 0..10001 { - let _output = plugin.call("count_vowels", "abc123").unwrap(); - } - } - - #[test] - fn test_globals() { - let context = Context::new(); - let mut plugin = Plugin::new(&context, WASM_GLOBALS, [], true).unwrap(); - for i in 0..1000 { - let output = plugin.call("globals", "").unwrap(); - let count: serde_json::Value = serde_json::from_slice(&output).unwrap(); - assert_eq!(count.get("count").unwrap().as_i64().unwrap(), i); - } - } -} diff --git a/rust/src/plugin.rs b/rust/src/plugin.rs deleted file mode 100644 index 757d7d693..000000000 --- a/rust/src/plugin.rs +++ /dev/null @@ -1,284 +0,0 @@ -use crate::*; -use std::collections::BTreeMap; - -enum RefOrOwned<'a, T> { - Ref(&'a T), - Owned(T), -} - -pub struct Plugin<'a> { - id: extism_runtime::PluginIndex, - context: RefOrOwned<'a, Context>, - functions: Vec, -} - -impl<'a, T> From<&'a T> for RefOrOwned<'a, T> { - fn from(value: &'a T) -> Self { - RefOrOwned::Ref(value) - } -} - -impl<'a, T> From for RefOrOwned<'a, T> { - fn from(value: T) -> Self { - RefOrOwned::Owned(value) - } -} - -impl<'a, T> AsRef for RefOrOwned<'a, T> { - fn as_ref(&self) -> &T { - match self { - RefOrOwned::Ref(x) => x, - RefOrOwned::Owned(x) => x, - } - } -} - -pub struct CancelHandle(pub(crate) *const extism_runtime::sdk::ExtismCancelHandle); - -unsafe impl Sync for CancelHandle {} -unsafe impl Send for CancelHandle {} - -impl CancelHandle { - pub fn cancel(&self) -> bool { - unsafe { extism_runtime::sdk::extism_plugin_cancel(self.0) } - } -} - -impl<'a> Plugin<'a> { - /// Create plugin from a known-good ID - /// - /// # Safety - /// This function does not check to ensure the provided ID is valid - pub unsafe fn from_id(id: i32, context: &'a Context) -> Plugin<'a> { - let context = RefOrOwned::Ref(context); - Plugin { - id, - context, - functions: vec![], - } - } - - pub fn context(&self) -> &Context { - match &self.context { - RefOrOwned::Ref(x) => x, - RefOrOwned::Owned(x) => x, - } - } - - pub fn as_i32(&self) -> i32 { - self.id - } - - /// Create a new plugin from the given manifest in its own context - pub fn create_with_manifest( - manifest: &Manifest, - functions: impl IntoIterator, - wasi: bool, - ) -> Result, Error> { - let data = serde_json::to_vec(manifest)?; - Self::create(data, functions, wasi) - } - - /// Create a new plugin from a WASM module in its own context - pub fn create( - data: impl AsRef<[u8]>, - functions: impl IntoIterator, - wasi: bool, - ) -> Result, Error> { - let ctx = Context::new(); - let functions = functions.into_iter().collect(); - let plugin = ctx.lock().new_plugin(data, &functions, wasi); - - if plugin < 0 { - let err = unsafe { bindings::extism_error(&mut *ctx.lock(), -1) }; - let buf = unsafe { std::ffi::CStr::from_ptr(err) }; - let buf = buf.to_str().unwrap(); - return Err(Error::msg(buf)); - } - - Ok(Plugin { - id: plugin, - context: ctx.into(), - functions, - }) - } - - /// Create a new plugin from the given manifest - pub fn new_with_manifest( - ctx: &'a Context, - manifest: &Manifest, - functions: impl IntoIterator, - wasi: bool, - ) -> Result, Error> { - let data = serde_json::to_vec(manifest)?; - Self::new(ctx, data, functions, wasi) - } - - /// Create a new plugin from a WASM module - pub fn new( - ctx: &'a Context, - data: impl AsRef<[u8]>, - functions: impl IntoIterator, - wasi: bool, - ) -> Result, Error> { - let functions = functions.into_iter().collect(); - let plugin = ctx.lock().new_plugin(data, &functions, wasi); - - if plugin < 0 { - let err = unsafe { bindings::extism_error(&mut *ctx.lock(), -1) }; - let buf = unsafe { std::ffi::CStr::from_ptr(err) }; - let buf = buf.to_str().unwrap(); - return Err(Error::msg(buf)); - } - - Ok(Plugin { - id: plugin, - context: ctx.into(), - functions, - }) - } - - /// Update a plugin with the given manifest - pub fn update_with_manifest( - &mut self, - manifest: &Manifest, - functions: impl IntoIterator, - wasi: bool, - ) -> Result<(), Error> { - let data = serde_json::to_vec(manifest)?; - self.update(data, functions, wasi) - } - - /// Update a plugin with the given WASM module - pub fn update( - &mut self, - data: impl AsRef<[u8]>, - functions: impl IntoIterator, - wasi: bool, - ) -> Result<(), Error> { - self.functions = functions.into_iter().collect(); - let functions = self - .functions - .iter() - .map(|x| bindings::ExtismFunction::from(x.clone())); - let mut functions = functions - .into_iter() - .map(|x| &x as *const _) - .collect::>(); - let b = unsafe { - bindings::extism_plugin_update( - &mut *self.context.as_ref().lock(), - self.id, - data.as_ref().as_ptr(), - data.as_ref().len() as u64, - functions.as_mut_ptr(), - functions.len() as u64, - wasi, - ) - }; - if b { - return Ok(()); - } - - let err = unsafe { bindings::extism_error(&mut *self.context.as_ref().lock(), -1) }; - if !err.is_null() { - let s = unsafe { std::ffi::CStr::from_ptr(err) }; - return Err(Error::msg(s.to_str().unwrap())); - } - - Err(Error::msg("extism_plugin_update failed")) - } - - /// Set configuration values - pub fn set_config(&mut self, config: &BTreeMap>) -> Result<(), Error> { - let encoded = serde_json::to_vec(config)?; - unsafe { - bindings::extism_plugin_config( - &mut *self.context.as_ref().lock(), - self.id, - encoded.as_ptr() as *const _, - encoded.len() as u64, - ) - }; - Ok(()) - } - - /// Set configuration values, builder-style - pub fn with_config(mut self, config: &BTreeMap>) -> Result { - self.set_config(config)?; - Ok(self) - } - - /// Returns true if the plugin has a function matching `name` - pub fn has_function(&self, name: impl AsRef) -> bool { - let name = std::ffi::CString::new(name.as_ref()).expect("Invalid function name"); - unsafe { - bindings::extism_plugin_function_exists( - &mut *self.context.as_ref().lock(), - self.id, - name.as_ptr() as *const _, - ) - } - } - - pub fn cancel_handle(&self) -> CancelHandle { - let ptr = unsafe { - bindings::extism_plugin_cancel_handle(&mut *self.context.as_ref().lock(), self.id) - }; - - CancelHandle(ptr) - } - - /// Call a function with the given input and call a callback with the output, this should be preferred when - /// a single plugin may be acessed from multiple threads because the lock on the plugin is held during the - /// callback, ensuring the output value is protected from modification. - pub fn call_map<'b, T, F: FnOnce(&'b [u8]) -> Result>( - &'b mut self, - name: impl AsRef, - input: impl AsRef<[u8]>, - f: F, - ) -> Result { - let context = &mut *self.context.as_ref().lock(); - let name = std::ffi::CString::new(name.as_ref()).expect("Invalid function name"); - let rc = unsafe { - bindings::extism_plugin_call( - context, - self.id, - name.as_ptr() as *const _, - input.as_ref().as_ptr() as *const _, - input.as_ref().len() as u64, - ) - }; - - if rc != 0 { - let err = unsafe { bindings::extism_error(context, self.id) }; - if !err.is_null() { - let s = unsafe { std::ffi::CStr::from_ptr(err) }; - return Err(Error::msg(s.to_str().unwrap())); - } - - return Err(Error::msg("extism_call failed")); - } - - let out_len = unsafe { bindings::extism_plugin_output_length(context, self.id) }; - unsafe { - let ptr = bindings::extism_plugin_output_data(context, self.id); - f(std::slice::from_raw_parts(ptr, out_len as usize)) - } - } - - /// Call a function with the given input - pub fn call<'b>( - &'b mut self, - name: impl AsRef, - input: impl AsRef<[u8]>, - ) -> Result<&'b [u8], Error> { - self.call_map(name, input, |x| Ok(x)) - } -} - -impl<'a> Drop for Plugin<'a> { - fn drop(&mut self) { - unsafe { bindings::extism_plugin_free(&mut *self.context.as_ref().lock(), self.id) } - } -} diff --git a/zig/examples/basic.zig b/zig/examples/basic.zig index 1cd1f6291..218d07e87 100644 --- a/zig/examples/basic.zig +++ b/zig/examples/basic.zig @@ -1,7 +1,6 @@ const std = @import("std"); const testing = std.testing; const sdk = @import("extism"); -const Context = sdk.Context; const Plugin = sdk.Plugin; const CurrentPlugin = sdk.CurrentPlugin; const Function = sdk.Function; @@ -23,8 +22,6 @@ pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; const allocator = gpa.allocator(); _ = sdk.setLogFile("extism.log", .Debug); - var context = Context.init(); - defer context.deinit(); const wasmfile_manifest = manifest.WasmFile{ .path = "../wasm/code-functions.wasm" }; const man = .{ .wasm = &[_]manifest.Wasm{.{ .wasm_file = wasmfile_manifest }} }; @@ -36,8 +33,7 @@ pub fn main() !void { @constCast(@as(*const anyopaque, @ptrCast("user data"))), ); defer f.deinit(); - var my_plugin = try Plugin.initFromManifest(allocator, &context, man, &[_]Function{f}, true); - // var my_plugin = try Plugin.init(allocator, &context, wasm, &[_]Function{f}, true); + var my_plugin = try Plugin.initFromManifest(allocator, man, &[_]Function{f}, true); defer my_plugin.deinit(); var config = std.json.ArrayHashMap([]const u8){}; diff --git a/zig/src/context.zig b/zig/src/context.zig deleted file mode 100644 index a669992b5..000000000 --- a/zig/src/context.zig +++ /dev/null @@ -1,31 +0,0 @@ -const std = @import("std"); -const c = @import("ffi.zig"); - -const Self = @This(); - -mutex: std.Thread.Mutex, -ctx: *c.ExtismContext, - -// We have to use this until ziglang/zig#2647 is resolved. -error_info: ?[]const u8, - -/// Creates a new context, it should be freed using `deinit` -pub fn init() Self { - const new_ctx = c.extism_context_new(); - return .{ - .mutex = .{}, - .ctx = new_ctx orelse unreachable, - .error_info = null, - }; -} - -// Free a context -pub fn deinit(self: Self) void { - c.extism_context_free(self.ctx); -} - -pub fn reset(self: *Self) void { - self.mutex.lock(); - defer self.mutex.unlock(); - c.extism_context_reset(self.ctx); -} diff --git a/zig/src/current_plugin.zig b/zig/src/current_plugin.zig index b965d92e1..93be5f64e 100644 --- a/zig/src/current_plugin.zig +++ b/zig/src/current_plugin.zig @@ -4,27 +4,28 @@ const c = @import("ffi.zig"); c_currplugin: *c.ExtismCurrentPlugin, const Self = @This(); +const MemoryHandle = u64; pub fn getCurrentPlugin(ptr: *c.ExtismCurrentPlugin) Self { return .{ .c_currplugin = ptr }; } -pub fn getMemory(self: Self, offset: u64) []const u8 { +pub fn getMemory(self: Self, offset: MemoryHandle) []const u8 { const len = c.extism_current_plugin_memory_length(self.c_currplugin, offset); const c_data = c.extism_current_plugin_memory(self.c_currplugin); const data: [*:0]u8 = std.mem.span(c_data); return data[offset .. offset + len]; } -pub fn alloc(self: *Self, n: u64) u64 { +pub fn alloc(self: *Self, n: u64) MemoryHandle { return c.extism_current_plugin_memory_alloc(self.c_currplugin, n); } -pub fn free(self: *Self, offset: u64) void { +pub fn free(self: *Self, offset: MemoryHandle) void { c.extism_current_plugin_memory_free(self.c_currplugin, offset); } -pub fn length(self: *Self, offset: u64) u64 { +pub fn length(self: *Self, offset: MemoryHandle) u64 { return c.extism_current_plugin_memory_length(self.c_currplugin, offset); } diff --git a/zig/src/main.zig b/zig/src/main.zig index bcf09b384..0a41dbbd8 100644 --- a/zig/src/main.zig +++ b/zig/src/main.zig @@ -2,7 +2,6 @@ const std = @import("std"); const testing = std.testing; pub const c = @import("ffi.zig"); -pub const Context = @import("context.zig"); pub const Plugin = @import("plugin.zig"); pub const CurrentPlugin = @import("current_plugin.zig"); pub const CancelHandle = @import("cancel_handle.zig"); diff --git a/zig/src/plugin.zig b/zig/src/plugin.zig index 58333c1da..cb2035086 100644 --- a/zig/src/plugin.zig +++ b/zig/src/plugin.zig @@ -1,5 +1,4 @@ const std = @import("std"); -const Context = @import("context.zig"); const Manifest = @import("manifest.zig").Manifest; const Function = @import("function.zig"); const CancelHandle = @import("cancel_handle.zig"); @@ -7,18 +6,15 @@ const c = @import("ffi.zig"); const Self = @This(); -ctx: *Context, -owns_context: bool, -id: i32, +ptr: *c.ExtismPlugin, // We have to use this until ziglang/zig#2647 is resolved. error_info: ?[]const u8, /// Create a new plugin from a WASM module -pub fn init(allocator: std.mem.Allocator, ctx: *Context, data: []const u8, functions: []const Function, wasi: bool) !Self { - ctx.mutex.lock(); - defer ctx.mutex.unlock(); - var plugin: i32 = -1; +pub fn init(allocator: std.mem.Allocator, data: []const u8, functions: []const Function, wasi: bool) !Self { + var plugin: ?*c.ExtismPlugin = null; + var errmsg: [*c]u8 = null; if (functions.len > 0) { var funcPtrs = try allocator.alloc(?*c.ExtismFunction, functions.len); defer allocator.free(funcPtrs); @@ -27,71 +23,46 @@ pub fn init(allocator: std.mem.Allocator, ctx: *Context, data: []const u8, funct funcPtrs[i] = function.c_func; i += 1; } - plugin = c.extism_plugin_new(ctx.ctx, data.ptr, @as(u64, data.len), &funcPtrs[0], functions.len, wasi); + plugin = c.extism_plugin_new(data.ptr, @as(u64, data.len), &funcPtrs[0], functions.len, wasi, &errmsg); } else { - plugin = c.extism_plugin_new(ctx.ctx, data.ptr, @as(u64, data.len), null, 0, wasi); + plugin = c.extism_plugin_new(data.ptr, @as(u64, data.len), null, 0, wasi, &errmsg); } - if (plugin < 0) { - const err_c = c.extism_error(ctx.ctx, @as(i32, -1)); - const err = std.mem.span(err_c); - if (!std.mem.eql(u8, err, "")) { - ctx.error_info = err; - } - ctx.error_info = "Unknown"; + if (plugin == null) { + // TODO: figure out what to do with this error + std.debug.print("extism_plugin_new: {s}", .{ + errmsg, + }); + c.extism_plugin_new_error_free(errmsg); return error.PluginLoadFailed; } return Self{ - .id = plugin, - .ctx = ctx, + .ptr = plugin.?, .error_info = null, - .owns_context = false, }; } /// Create a new plugin from the given manifest -pub fn initFromManifest(allocator: std.mem.Allocator, ctx: *Context, manifest: Manifest, functions: []const Function, wasi: bool) !Self { - const json = try std.json.stringifyAlloc(allocator, manifest, .{ .emit_null_optional_fields = false }); - defer allocator.free(json); - return init(allocator, ctx, json, functions, wasi); -} - -/// Create a new plugin from a WASM module in its own context -pub fn create(allocator: std.mem.Allocator, data: []const u8, functions: []const Function, wasi: bool) !Self { - const ctx = Context.init(); - var plugin = init(allocator, ctx, data, functions, wasi); - plugin.owns_context = true; - return plugin; -} - -/// Create a new plugin from the given manifest in its own context -pub fn createFromManifest(allocator: std.mem.Allocator, manifest: Manifest, functions: []const Function, wasi: bool) !Self { +pub fn initFromManifest(allocator: std.mem.Allocator, manifest: Manifest, functions: []const Function, wasi: bool) !Self { const json = try std.json.stringifyAlloc(allocator, manifest, .{ .emit_null_optional_fields = false }); defer allocator.free(json); - return create(allocator, json, functions, wasi); + return init(allocator, json, functions, wasi); } pub fn deinit(self: *Self) void { - self.ctx.mutex.lock(); - defer self.ctx.mutex.unlock(); - c.extism_plugin_free(self.ctx.ctx, self.id); - if (self.owns_context) { - self.ctx.deinit(); - } + c.extism_plugin_free(self.ptr); } pub fn cancelHandle(self: *Self) CancelHandle { - const ptr = c.extism_plugin_cancel_handle(self.ctx.ctx, self.id); + const ptr = c.extism_plugin_cancel_handle(self.ptr); return .{ .handle = ptr }; } /// Call a function with the given input pub fn call(self: *Self, function_name: []const u8, input: []const u8) ![]const u8 { - self.ctx.mutex.lock(); - defer self.ctx.mutex.unlock(); - const res = c.extism_plugin_call(self.ctx.ctx, self.id, function_name.ptr, input.ptr, @as(u64, input.len)); + const res = c.extism_plugin_call(self.ptr, function_name.ptr, input.ptr, @as(u64, input.len)); if (res != 0) { - var err_c = c.extism_error(self.ctx.ctx, self.id); + var err_c = c.extism_plugin_error(self.ptr); const err = std.mem.span(err_c); if (!std.mem.eql(u8, err, "")) { @@ -101,49 +72,23 @@ pub fn call(self: *Self, function_name: []const u8, input: []const u8) ![]const return error.PluginCallFailed; } - const len = c.extism_plugin_output_length(self.ctx.ctx, self.id); + const len = c.extism_plugin_output_length(self.ptr); if (len > 0) { - const output_data = c.extism_plugin_output_data(self.ctx.ctx, self.id); + const output_data = c.extism_plugin_output_data(self.ptr); return output_data[0..len]; } return ""; } - -/// Update a plugin with the given WASM module -pub fn update(self: *Self, data: []const u8, wasi: bool) !void { - self.ctx.mutex.lock(); - defer self.ctx.mutex.unlock(); - const res = c.extism_plugin_update(self.ctx.ctx, self.id, data.ptr, @as(u64, data.len), null, 0, wasi); - if (res) return; - const err_c = c.extism_error(self.ctx.ctx, @as(i32, -1)); - const err = std.mem.span(err_c); - if (!std.mem.eql(u8, err, "")) { - self.error_info = err; - } - self.error_info = "Unknown"; - return error.PluginUpdateFailed; -} - -/// Update a plugin with the given manifest -pub fn updateWithManifest(self: *Self, allocator: std.mem.Allocator, manifest: Manifest, wasi: bool) !void { - const json = try std.json.stringifyAlloc(allocator, manifest, .{ .emit_null_optional_fields = false }); - defer allocator.free(json); - return self.update(json, wasi); -} /// Set configuration values pub fn setConfig(self: *Self, allocator: std.mem.Allocator, config: std.json.ArrayHashMap([]const u8)) !void { - self.ctx.mutex.lock(); - defer self.ctx.mutex.unlock(); const config_json = try std.json.stringifyAlloc(allocator, config, .{ .emit_null_optional_fields = false }); defer allocator.free(config_json); - _ = c.extism_plugin_config(self.ctx.ctx, self.id, config_json.ptr, @as(u64, config_json.len)); + _ = c.extism_plugin_config(self.ptr, config_json.ptr, @as(u64, config_json.len)); } /// Returns true if the plugin has a function matching `function_name` pub fn hasFunction(self: Self, function_name: []const u8) bool { - self.ctx.mutex.lock(); - defer self.ctx.mutex.unlock(); - const res = c.extism_plugin_function_exists(self.ctx.ctx, self.id, function_name.ptr); + const res = c.extism_plugin_function_exists(self.ptr, function_name.ptr); return res; } diff --git a/zig/test.zig b/zig/test.zig index a58e04299..446bb59a7 100644 --- a/zig/test.zig +++ b/zig/test.zig @@ -1,7 +1,6 @@ const std = @import("std"); const testing = std.testing; const sdk = @import("extism"); -const Context = sdk.Context; const Plugin = sdk.Plugin; const CurrentPlugin = sdk.CurrentPlugin; const Function = sdk.Function; @@ -26,9 +25,6 @@ test "Single threaded tests" { var wasm_start = try std.time.Timer.start(); _ = sdk.setLogFile("test.log", .Debug); - var ctx = Context.init(); - defer ctx.deinit(); - var f = Function.init( "hello_world", &[_]sdk.c.ExtismValType{sdk.c.I64}, @@ -38,7 +34,7 @@ test "Single threaded tests" { ); defer f.deinit(); - var plugin = try Plugin.initFromManifest(testing.allocator, &ctx, man, &[_]Function{f}, true); + var plugin = try Plugin.initFromManifest(testing.allocator, man, &[_]Function{f}, true); defer plugin.deinit(); std.debug.print("\nregister loaded plugin: {}\n", .{std.fmt.fmtDuration(wasm_start.read())}); @@ -78,8 +74,6 @@ test "Single threaded tests" { test "Multi threaded tests" { const S = struct { fn _test() !void { - var ctx = Context.init(); - defer ctx.deinit(); var f = Function.init( "hello_world", &[_]sdk.c.ExtismValType{sdk.c.I64}, @@ -88,7 +82,7 @@ test "Multi threaded tests" { @constCast(@as(*const anyopaque, @ptrCast("user data"))), ); defer f.deinit(); - var plugin = try Plugin.initFromManifest(testing.allocator, &ctx, man, &[_]Function{f}, true); + var plugin = try Plugin.initFromManifest(testing.allocator, man, &[_]Function{f}, true); defer plugin.deinit(); const output = try plugin.call("count_vowels", "this is a test"); std.debug.print("{s}\n", .{output}); @@ -99,8 +93,6 @@ test "Multi threaded tests" { t1.join(); t2.join(); _ = sdk.setLogFile("test.log", .Debug); - var ctx = Context.init(); - defer ctx.deinit(); var f = Function.init( "hello_world", @@ -111,7 +103,7 @@ test "Multi threaded tests" { ); defer f.deinit(); - var plugin = try Plugin.initFromManifest(testing.allocator, &ctx, man, &[_]Function{f}, true); + var plugin = try Plugin.initFromManifest(testing.allocator, man, &[_]Function{f}, true); defer plugin.deinit(); const output = try plugin.call("count_vowels", "this is a test"); @@ -121,8 +113,6 @@ test "Multi threaded tests" { test "Plugin Cancellation" { const loop_manifest = manifest.WasmFile{ .path = "../wasm/loop.wasm" }; const loop_man = .{ .wasm = &[_]manifest.Wasm{.{ .wasm_file = loop_manifest }} }; - var ctx = Context.init(); - defer ctx.deinit(); _ = sdk.setLogFile("test.log", .Debug); var f = Function.init( "hello_world", @@ -133,7 +123,7 @@ test "Plugin Cancellation" { ); defer f.deinit(); - var plugin = try Plugin.initFromManifest(testing.allocator, &ctx, loop_man, &[_]Function{f}, true); + var plugin = try Plugin.initFromManifest(testing.allocator, loop_man, &[_]Function{f}, true); defer plugin.deinit(); var handle = plugin.cancelHandle(); const S = struct { From 8a19142524ce0efbbcfc2faf35f8b785660fcacf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 18:07:54 -0500 Subject: [PATCH 039/176] chore(deps-dev): Bump prettier from 3.0.2 to 3.0.3 in /node (#445) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [prettier](https://github.com/prettier/prettier) from 3.0.2 to 3.0.3.

Release notes

Sourced from prettier's releases.

3.0.3

🔗 Changelog

Changelog

Sourced from prettier's changelog.

3.0.3

diff

Add preferUnplugged: true to package.json (#15169 by @​fisker and @​so1ve)

Prettier v3 uses dynamic imports, user will need to unplug Prettier when Yarn's PnP mode is enabled, add preferUnplugged: true to package.json, so Yarn will install Prettier as unplug by default.

Support shared config that forbids require() (#15233 by @​fisker)

If an external shared config package is used, and the package exports don't have require or default export.

In Prettier 3.0.2 Prettier fails when attempt to require() the package, and throws an error.

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No
"exports" main defined in <packageName>/package.json

Allow argument of require() to break (#15256 by @​fisker)

// Input
const plugin = require(
  global.STANDALONE
    ? path.join(__dirname, "../standalone.js")
    : path.join(__dirname, "..")
);

// Prettier 3.0.2 const plugin = require(global.STANDALONE ? path.join(__dirname, "../standalone.js") : path.join(__dirname, ".."));

// Prettier 3.0.3 const plugin = require( global.STANDALONE ? path.join(__dirname, "../standalone.js") : path.join(__dirname, "..") );

Do not print trailing commas in arrow function type parameter lists in ts code blocks (#15286 by @​sosukesuzuki)

<!-- Input -->
```ts
const foo = <T>() => {}
```
</tr></table>

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.0.2&new-version=3.0.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 8 ++++---- node/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 3f2157047..f3f726843 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -21,7 +21,7 @@ "@types/jest": "^29.2.0", "@types/node": "^20.1.0", "jest": "^29.2.2", - "prettier": "3.0.2", + "prettier": "3.0.3", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.25.0", @@ -3278,9 +3278,9 @@ } }, "node_modules/prettier": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz", - "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", + "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" diff --git a/node/package.json b/node/package.json index 344f4f86f..f2b95c0a5 100644 --- a/node/package.json +++ b/node/package.json @@ -41,7 +41,7 @@ "@types/jest": "^29.2.0", "@types/node": "^20.1.0", "jest": "^29.2.2", - "prettier": "3.0.2", + "prettier": "3.0.3", "ts-jest": "^29.0.3", "ts-node": "^10.9.1", "typedoc": "^0.25.0", From d85bae6187a1216f11d1031d637eeff5ee84d24e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 18:08:02 -0500 Subject: [PATCH 040/176] chore(deps-dev): Bump @types/node from 20.5.7 to 20.5.9 in /node (#444) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.5.7 to 20.5.9.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.7&new-version=20.5.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index f3f726843..8e419c734 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1159,9 +1159,9 @@ } }, "node_modules/@types/node": { - "version": "20.5.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", - "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==" + "version": "20.5.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", + "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From 3ca661546d714afab61480021381b093729a03cc Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Tue, 5 Sep 2023 16:36:16 -0700 Subject: [PATCH 041/176] fix: toml manifests load the extism runtime (#447) Just getting my feet wet with the codebase a little bit! I noticed that TOML manifests weren't loading the extism runtime by default while doing a walkthrough. This commit ensures the runtime is loaded and adds a test. Also, fix a tiny typo in a comment. --- runtime/src/manifest.rs | 3 ++- runtime/src/plugin.rs | 2 +- runtime/src/tests.rs | 21 +++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/runtime/src/manifest.rs b/runtime/src/manifest.rs index 6cac3ec54..4b2ebcea9 100644 --- a/runtime/src/manifest.rs +++ b/runtime/src/manifest.rs @@ -171,7 +171,8 @@ pub(crate) fn load( if !has_magic && !is_wast { if let Ok(s) = std::str::from_utf8(data) { if let Ok(t) = toml::from_str::(s) { - let m = modules(&t, engine)?; + let mut m = modules(&t, engine)?; + m.insert("env".to_string(), extism_module); return Ok((t, m)); } } diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 6e6601755..2554058d4 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -177,7 +177,7 @@ impl Plugin { imports: impl IntoIterator, with_wasi: bool, ) -> Result { - // Create a new engine, if the `EXITSM_DEBUG` environment variable is set + // Create a new engine, if the `EXTISM_DEBUG` environment variable is set // then we enable debug info let engine = Engine::new( Config::new() diff --git a/runtime/src/tests.rs b/runtime/src/tests.rs index 3689a8f8b..4806616dc 100644 --- a/runtime/src/tests.rs +++ b/runtime/src/tests.rs @@ -243,3 +243,24 @@ fn test_globals() { assert_eq!(count.get("count").unwrap().as_i64().unwrap(), i); } } + +#[test] +fn test_toml_manifest() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let manifest = Manifest::new([extism_manifest::Wasm::data(WASM)]) + .with_timeout(std::time::Duration::from_secs(1)); + + let manifest_toml = toml::to_string_pretty(&manifest).unwrap(); + let mut plugin = Plugin::new(manifest_toml.as_bytes(), [f], true).unwrap(); + + let output = plugin.call("count_vowels", "abc123").unwrap(); + let count: serde_json::Value = serde_json::from_slice(output).unwrap(); + assert_eq!(count.get("count").unwrap().as_i64().unwrap(), 1); +} From 26f70e3a30d6d872572c0f9c8e180b8f2798f71a Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 6 Sep 2023 08:37:27 -0700 Subject: [PATCH 042/176] feat: Add `EXTISM_ENABLE_WASI_OUTPUT` to inherit stdout/stderr (#446) @mhmd-azeez pointed out that exposing an option like this can be very useful for debugging if the program is expecting to run in a full WASI environment. --- runtime/src/current_plugin.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index 3037a8c9a..0fbf30602 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -132,6 +132,11 @@ impl CurrentPlugin { } } + // Enable WASI output, typically used for debugging purposes + if std::env::var("EXTISM_ENABLE_WASI_OUTPUT").is_ok() { + ctx = ctx.inherit_stdout().inherit_stderr(); + } + #[cfg(feature = "nn")] let nn = wasmtime_wasi_nn::WasiNnCtx::new()?; From 5339f3ca1e73986811492d3779783204c3bfbb9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:35:06 -0500 Subject: [PATCH 043/176] chore(deps-dev): Update minitest requirement from ~> 5.19.0 to ~> 5.20.0 in /ruby (#450) Updates the requirements on [minitest](https://github.com/minitest/minitest) to permit the latest version.
Changelog

Sourced from minitest's changelog.

=== 5.20.0 / 2023-09-06

  • 1 minor enhancement:

    • Optionally allow autorun exit hook to remain active in forked child. (casperisfine)

=== 5.19.0 / 2023-07-26

  • 2 minor enhancements:

    • Add metadata lazy accessor to Runnable / Result. (matteeyah)
    • Only load minitest/unit (aka ancient MiniTest compatibility layer) if ENV["MT_COMPAT"]
  • 1 bug fix:

    • Minitest::TestTask enthusiastically added itself to default. (ParadoxV5)

=== 5.18.1 / 2023-06-16

  • 3 bug fixes:

    • Avoid extra string allocations when filtering tests. (tenderlove)
    • Only mention deprecated ENV['N'] if it is an integer string.
    • Push up test_order to Minitest::Runnable to fix minitest/hell. (koic)

=== 5.18.0 / 2023-03-04

  • 2 major enhancements:

    • Added assert_pattern & refute_pattern for pattern matching. (flavorjones)
    • Added matching must_pattern_match & wont_pattern_match to minitest/spec.
  • 1 bug fix:

    • Support the new message format of NameError in Ruby 3.3 (mame)

=== 5.17.0 / 2022-12-31

  • 1 minor enhancement:

    • Refactor setup hooks into a SETUP_METHODS constant. (MSP-Greg)
  • 3 bug fixes:

    • Fix kwargs for Mock calls to delegator. (blowmage)
    • Fix kwargs for expectations. (bobmazanec, blowmage)
    • Remove check for .b method. (tenderlove)

=== 5.16.3 / 2022-08-17

... (truncated)

Commits
  • 6719ad8 prepped for release
  • 780dc15 + Optionally allow autorun exit hook to remain active in forked child. (caspe...
  • ed88d19 Fixed skip messages for non-forking systems. (casperisfine)
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- ruby/Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/Gemfile b/ruby/Gemfile index c3c43cae3..78c2d3f43 100644 --- a/ruby/Gemfile +++ b/ruby/Gemfile @@ -11,5 +11,5 @@ gem "ffi", "~> 1.15.5" group :development do gem "yard", "~> 0.9.28" gem "rufo", "~> 0.13.0" - gem "minitest", "~> 5.19.0" + gem "minitest", "~> 5.20.0" end From 4caee2de1a22f1e3f4b862233ef41e253e8a4aaf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:35:18 -0500 Subject: [PATCH 044/176] chore(deps-dev): Bump @types/node from 20.5.9 to 20.6.0 in /node (#449) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.5.9 to 20.6.0.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.5.9&new-version=20.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 8e419c734..d5b8964eb 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1159,9 +1159,9 @@ } }, "node_modules/@types/node": { - "version": "20.5.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", - "integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" + "version": "20.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", + "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From 3e92b05db06345efe4741e70fb7c3f37cf3156d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:35:29 -0500 Subject: [PATCH 045/176] chore(deps-dev): Bump typedoc from 0.25.0 to 0.25.1 in /node (#448) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.25.0 to 0.25.1.
Release notes

Sourced from typedoc's releases.

v0.25.1

Features

  • Added stripYamlFrontmatter config option to remove YAML frontmatter from README.md, #2381.
  • Added --excludeCategories config option to remove reflections present in any excluded category, #1407.
  • If no tsconfig.json file is present, TypeDoc will now attempt to compile without setting any compiler options, #2304.
  • Navigation is now written to a JS file and built dynamically, which significantly decreases document generation time with large projects and also provides large space benefits. Themes may now override DefaultTheme.buildNavigation to customize the displayed navigation tree, #2287. Note: This change renders navigation.fullTree obsolete. If you set it, TypeDoc will warn that it is being ignored. It will be removed in v0.26.
  • The search index is now compressed before writing, which reduces most search index sizes by ~5-10x.
  • TypeDoc will now attempt to cache icons when DefaultThemeRenderContext.icons is overwritten by a custom theme. Note: To perform this optimization, TypeDoc relies on DefaultThemeRenderContext.iconCache being rendered within each page. TypeDoc does it in the defaultLayout template.
  • Cache URL derivation during generation, #2386.

Bug Fixes

  • @property now works as expected if used to override a method's documentation.
  • Deprecated functions/methods are now correctly rendered with a struck-out name.
  • --watch mode works again, #2378.
  • Improved support for optional names within JSDoc types, #2384.
  • Fixed duplicate rendering of reflection flags on signature parameters, #2385.
  • TypeDoc now handles the intrinsic keyword if TS intrinsic types are included in documentation.
  • --exclude is now respected when expanding globs in entry points, #2376.

Thanks!

Changelog

Sourced from typedoc's changelog.

v0.25.1 (2023-09-04)

Features

  • Added stripYamlFrontmatter config option to remove YAML frontmatter from README.md, #2381.
  • Added --excludeCategories config option to remove reflections present in any excluded category, #1407.
  • If no tsconfig.json file is present, TypeDoc will now attempt to compile without setting any compiler options, #2304.
  • Navigation is now written to a JS file and built dynamically, which significantly decreases document generation time with large projects and also provides large space benefits. Themes may now override DefaultTheme.buildNavigation to customize the displayed navigation tree, #2287. Note: This change renders navigation.fullTree obsolete. If you set it, TypeDoc will warn that it is being ignored. It will be removed in v0.26.
  • The search index is now compressed before writing, which reduces most search index sizes by ~5-10x.
  • TypeDoc will now attempt to cache icons when DefaultThemeRenderContext.icons is overwritten by a custom theme. Note: To perform this optimization, TypeDoc relies on DefaultThemeRenderContext.iconCache being rendered within each page. TypeDoc does it in the defaultLayout template.
  • Cache URL derivation during generation, #2386.

Bug Fixes

  • @property now works as expected if used to override a method's documentation.
  • Deprecated functions/methods are now correctly rendered with a struck-out name.
  • --watch mode works again, #2378.
  • Improved support for optional names within JSDoc types, #2384.
  • Fixed duplicate rendering of reflection flags on signature parameters, #2385.
  • TypeDoc now handles the intrinsic keyword if TS intrinsic types are included in documentation.
  • --exclude is now respected when expanding globs in entry points, #2376.

Thanks!

Commits
  • 5e4c79d Update changelog for release
  • 265bf49 Bump version to 0.25.1
  • 0985616 Handle projects without tsconfig files
  • bcf3e04 Add excludeCategories option
  • 653b281 Respect --exclude when expanding globs in entry points
  • a6823cf Cache URL derivation during generation
  • 1f88a1f Compress search index too
  • d68ca2a Update changelog
  • dc4a16d feat: stripYamlFrontmatter option (#2387)
  • 67ee6ac Dynamically load navigation
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.25.0&new-version=0.25.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index d5b8964eb..035da3865 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -3835,9 +3835,9 @@ } }, "node_modules/typedoc": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.0.tgz", - "integrity": "sha512-FvCYWhO1n5jACE0C32qg6b3dSfQ8f2VzExnnRboowHtqUD6ARzM2r8YJeZFYXhcm2hI4C2oCRDgNPk/yaQUN9g==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.1.tgz", + "integrity": "sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==", "dev": true, "dependencies": { "lunr": "^2.3.9", From 2bf5ac75c0eef50e80ca3c0e35f6336478ddda10 Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Mon, 11 Sep 2023 18:21:11 -0500 Subject: [PATCH 046/176] feat(ruby): Host functions and clean up FFI code (#442) Adds support for host functions and cleans up some of the FFI code. ## API To make a host function, you can pass a proc to `Function::new`: ```ruby func = proc do |current_plugin, inputs, outputs, user_data| input = current_plugin.input_as_bytes(inputs.first) current_plugin.return_string(outputs.first, "#{input} #{user_data}") end f = Extism::Function.new('transform_string', [Extism::ValType::I64], [Extism::ValType::I64], func, 'My User Data') plugin = Extism::Plugin.new(host_manifest, [f], true) result = plugin.call('reflect_string', 'Hello, World!') assert_equal result, 'Hello, World! My User Data' ``` If your function is in a module or a class, you can use `method(name).to_proc`. Example: ```ruby module Test def self.my_function(current_plugin, inputs, outputs, user_data) input = current_plugin.input_as_bytes(inputs.first) current_plugin.return_string(outputs.first, "#{input} #{user_data}") end end func = Test.method(:my_function).to_proc f = Extism::Function.new('my_function', [Extism::ValType::I64], [Extism::ValType::I64], func, 'My User Data') ``` `current_plugin` is of the type CurrentPlugin which has some helpful methods: * `CurrentPlugin#memory_at_offset(int)` returns a `Memory` object given a memory pointer * `CurrentPlugin#free(Memory)` frees the memory * `CurrentPlugin#alloc(int)` allocates new memory and returns a `Memory` * `CurrentPlugin#input_as_bytes(Value)` returns the bytes for the given input param * `CurrentPlugin#return_bytes(Value, Array)` Sets the array of bytes to the return for the given output value * `CurrentPlugin#input_as_bytes(Value, String)` Sets the string to the return for the given output value --- ruby/Gemfile | 13 +- ruby/bin/irb | 27 ++++ ruby/bin/rdbg | 27 ++++ ruby/bin/rdoc | 27 ++++ ruby/bin/ri | 27 ++++ ruby/lib/extism.rb | 250 +++++++++++++++++++++++++++++++------ ruby/lib/extism/version.rb | 2 +- ruby/test/test_extism.rb | 56 ++++++--- wasm/kitchensink.wasm | Bin 0 -> 4882056 bytes 9 files changed, 365 insertions(+), 64 deletions(-) create mode 100755 ruby/bin/irb create mode 100755 ruby/bin/rdbg create mode 100755 ruby/bin/rdoc create mode 100755 ruby/bin/ri create mode 100755 wasm/kitchensink.wasm diff --git a/ruby/Gemfile b/ruby/Gemfile index 78c2d3f43..1a2485976 100644 --- a/ruby/Gemfile +++ b/ruby/Gemfile @@ -1,15 +1,16 @@ # frozen_string_literal: true -source "https://rubygems.org" +source 'https://rubygems.org' # Specify your gem's dependencies in extism.gemspec gemspec -gem "rake", "~> 13.0" -gem "ffi", "~> 1.15.5" +gem 'ffi', '~> 1.15.5' +gem 'rake', '~> 13.0' group :development do - gem "yard", "~> 0.9.28" - gem "rufo", "~> 0.13.0" - gem "minitest", "~> 5.20.0" + gem 'debug' + gem 'minitest', '~> 5.20.0' + gem 'rufo', '~> 0.13.0' + gem 'yard', '~> 0.9.28' end diff --git a/ruby/bin/irb b/ruby/bin/irb new file mode 100755 index 000000000..42346ee6b --- /dev/null +++ b/ruby/bin/irb @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'irb' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("irb", "irb") diff --git a/ruby/bin/rdbg b/ruby/bin/rdbg new file mode 100755 index 000000000..06225507d --- /dev/null +++ b/ruby/bin/rdbg @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rdbg' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("debug", "rdbg") diff --git a/ruby/bin/rdoc b/ruby/bin/rdoc new file mode 100755 index 000000000..13910ec4a --- /dev/null +++ b/ruby/bin/rdoc @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'rdoc' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rdoc", "rdoc") diff --git a/ruby/bin/ri b/ruby/bin/ri new file mode 100755 index 000000000..926f72cd2 --- /dev/null +++ b/ruby/bin/ri @@ -0,0 +1,27 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +# +# This file was generated by Bundler. +# +# The application 'ri' is installed as part of a gem, and +# this file is here to facilitate running it. +# + +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +bundle_binstub = File.expand_path("bundle", __dir__) + +if File.file?(bundle_binstub) + if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/ + load(bundle_binstub) + else + abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run. +Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.") + end +end + +require "rubygems" +require "bundler/setup" + +load Gem.bin_path("rdoc", "ri") diff --git a/ruby/lib/extism.rb b/ruby/lib/extism.rb index f585a9420..4472e547e 100644 --- a/ruby/lib/extism.rb +++ b/ruby/lib/extism.rb @@ -1,6 +1,6 @@ -require "ffi" -require "json" -require_relative "./extism/version" +require 'ffi' +require 'json' +require_relative './extism/version' module Extism class Error < StandardError @@ -17,16 +17,13 @@ def self.extism_version # @param name [String] The path to the logfile # @param level [String] The log level. One of {"debug", "error", "info", "trace" } def self.set_log_file(name, level = nil) - if level - level = FFI::MemoryPointer::from_string(level) - end C.extism_log_file(name, level) end $PLUGINS = {} $FREE_PLUGIN = proc { |ptr| x = $PLUGINS[ptr] - if !x.nil? + unless x.nil? C.extism_plugin_free(x[:plugin]) $PLUGINS.delete(ptr) end @@ -40,7 +37,7 @@ def initialize(handle) # Cancel the plugin used to generate the handle def cancel - return C.extism_plugin_cancel(@handle) + C.extism_plugin_cancel(@handle) end end @@ -51,26 +48,26 @@ class Plugin # @param wasm [Hash, String] The manifest or WASM binary. See https://extism.org/docs/concepts/manifest/. # @param wasi [Boolean] Enable WASI support # @param config [Hash] The plugin config - def initialize(wasm, wasi = false, config = nil) - if wasm.class == Hash - wasm = JSON.generate(wasm) - end + def initialize(wasm, functions = [], wasi = false, config = nil) + wasm = JSON.generate(wasm) if wasm.instance_of?(Hash) code = FFI::MemoryPointer.new(:char, wasm.bytesize) - errmsg = FFI::MemoryPointer.new(:pointer) + errmsg = FFI::MemoryPointer.new(:pointer) code.put_bytes(0, wasm) - @plugin = C.extism_plugin_new(code, wasm.bytesize, nil, 0, wasi, errmsg) + funcs_ptr = FFI::MemoryPointer.new(C::ExtismFunction) + funcs_ptr.write_array_of_pointer(functions.map { |f| f.pointer }) + @plugin = C.extism_plugin_new(code, wasm.bytesize, funcs_ptr, functions.length, wasi, errmsg) if @plugin.null? err = errmsg.read_pointer.read_string C.extism_plugin_new_error_free errmsg.read_pointer - raise Error.new err + raise Error, err end - $PLUGINS[self.object_id] = { :plugin => @plugin } + $PLUGINS[object_id] = { plugin: @plugin } ObjectSpace.define_finalizer(self, $FREE_PLUGIN) - if config != nil and @plugin.null? - s = JSON.generate(config) - ptr = FFI::MemoryPointer::from_string(s) - C.extism_plugin_config(@plugin, ptr, s.bytesize) - end + return unless !config.nil? and @plugin.null? + + s = JSON.generate(config) + ptr = FFI::MemoryPointer.from_string(s) + C.extism_plugin_config(@plugin, ptr, s.bytesize) end # Check if a function exists @@ -89,16 +86,16 @@ def has_function?(name) def call(name, data, &block) # If no block was passed then use Pointer::read_string block ||= ->(buf, len) { buf.read_string(len) } - input = FFI::MemoryPointer::from_string(data) + input = FFI::MemoryPointer.from_string(data) rc = C.extism_plugin_call(@plugin, name, input, data.bytesize) if rc != 0 err = C.extism_plugin_error(@plugin) - if err&.empty? - raise Error.new "extism_call failed" - else - raise Error.new err - end + raise Error, 'extism_call failed' if err&.empty? + + raise Error, err + end + out_len = C.extism_plugin_output_length(@plugin) buf = C.extism_plugin_output_data(@plugin) block.call(buf, out_len) @@ -110,36 +107,209 @@ def call(name, data, &block) def free return if @plugin.null? - $PLUGINS.delete(self.object_id) + $PLUGINS.delete(object_id) C.extism_plugin_free(@plugin) @plugin = nil end # Get a CancelHandle for a plugin def cancel_handle - return CancelHandle.new(C.extism_plugin_cancel_handle(@plugin)) + CancelHandle.new(C.extism_plugin_cancel_handle(@plugin)) end end - private + Memory = Struct.new(:offset, :len) + + class CurrentPlugin + def initialize(ptr) + @ptr = ptr + end + + def alloc(amount) + offset = C.extism_current_plugin_memory_alloc(@ptr, amount) + Memory.new(offset, amount) + end + + def free(memory) + C.extism_current_plugin_memory_free(@ptr, memory.offset) + end + + def memory_at_offset(offset) + len = C.extism_current_plugin_memory_length(@ptr, offset) + Memory.new(offset, len) + end + + def input_as_bytes(input) + # TODO: should assert that this is an int input + mem = memory_at_offset(input.value) + memory_ptr(mem).read_bytes(mem.len) + end + + def return_bytes(output, bytes) + mem = alloc(bytes.length) + memory_ptr(mem).put_bytes(0, bytes) + output.value = mem.offset + end + + def return_string(output, string) + return_bytes(output, string) + end + + private + + def memory_ptr(mem) + plugin_ptr = C.extism_current_plugin_memory(@ptr) + FFI::Pointer.new(plugin_ptr.address + mem.offset) + end + end + + module ValType + I32 = 0 + I64 = 1 + F32 = 2 + F64 = 3 + V128 = 4 + FUNC_REF = 5 + EXTERN_REF = 6 + end + + class Val + def initialize(ptr) + @c_val = C::ExtismVal.new(ptr) + end + + def type + case @c_val[:t] + when :I32 + :i32 + when :I64 + :i64 + when :F32 + :f32 + when :F64 + :f64 + else + raise "Unsupported wasm value type #{type}" + end + end + + def value + @c_val[:v][type] + end + + def value=(val) + @c_val[:v][type] = val + end + end + + class Function + def initialize(name, args, returns, func_proc, user_data) + @name = name + @args = args + @returns = returns + @func = func_proc + @user_data = user_data + end + + def pointer + return @pointer if @pointer + + free = proc { puts 'freeing ' } + args = C.from_int_array(@args) + returns = C.from_int_array(@returns) + @pointer = C.extism_function_new(@name, args, @args.length, returns, @returns.length, c_func, free, nil) + end + + private + + def c_func + @c_func ||= proc do |plugin_ptr, inputs_ptr, inputs_size, outputs_ptr, outputs_size, _data_ptr| + current_plugin = CurrentPlugin.new(plugin_ptr) + val_struct_size = C::ExtismVal.size + + inputs = (0...inputs_size).map do |i| + Val.new(inputs_ptr + i * val_struct_size) + end + outputs = (0...outputs_size).map do |i| + Val.new(outputs_ptr + i * val_struct_size) + end + + @func.call(current_plugin, inputs, outputs, @user_data) + end + end + end # Private module used to interface with the Extism runtime. # *Warning*: Do not use or rely on this directly. module C extend FFI::Library - ffi_lib "extism" + ffi_lib 'extism' + + def self.from_int_array(ruby_array) + ptr = FFI::MemoryPointer.new(:int, ruby_array.length) + ptr.write_array_of_int(ruby_array) + ptr + end + + typedef :uint64, :ExtismMemoryHandle + typedef :uint64, :ExtismSize + + enum :ExtismValType, %i[I32 I64 F32 F64 V128 FuncRef ExternRef] + + class ExtismValUnion < FFI::Union + layout :i32, :int32, + :i64, :int64, + :f32, :float, + :f64, :double + end + + class ExtismVal < FFI::Struct + layout :t, :ExtismValType, + :v, ExtismValUnion + end + + class ExtismFunction < FFI::Struct + layout :name, :string, + :inputs, :pointer, + :n_inputs, :uint64, + :outputs, :pointer, + :n_outputs, :uint64, + :data, :pointer + end + + callback :ExtismFunctionType, [ + :pointer, # plugin + :pointer, # inputs + :ExtismSize, # n_inputs + :pointer, # outputs + :ExtismSize, # n_outputs + :pointer # user_data + ], :void + + callback :ExtismFreeFunctionType, [], :void + + attach_function :extism_plugin_id, [:pointer], :pointer + attach_function :extism_current_plugin_memory, [:pointer], :pointer + attach_function :extism_current_plugin_memory_alloc, %i[pointer ExtismSize], :ExtismMemoryHandle + attach_function :extism_current_plugin_memory_length, %i[pointer ExtismMemoryHandle], :ExtismSize + attach_function :extism_current_plugin_memory_free, %i[pointer ExtismMemoryHandle], :void + attach_function :extism_function_new, + %i[string pointer ExtismSize pointer ExtismSize ExtismFunctionType ExtismFreeFunctionType pointer], :pointer + attach_function :extism_function_free, [:pointer], :void + attach_function :extism_function_set_namespace, %i[pointer string], :void + attach_function :extism_plugin_new, %i[pointer ExtismSize pointer ExtismSize bool pointer], :pointer attach_function :extism_plugin_new_error_free, [:pointer], :void - attach_function :extism_plugin_new, [:pointer, :uint64, :pointer, :uint64, :bool, :pointer], :pointer - attach_function :extism_plugin_error, [:pointer], :string - attach_function :extism_plugin_call, [:pointer, :string, :pointer, :uint64], :int32 - attach_function :extism_plugin_function_exists, [:pointer, :string], :bool - attach_function :extism_plugin_output_length, [:pointer], :uint64 - attach_function :extism_plugin_output_data, [:pointer], :pointer - attach_function :extism_log_file, [:string, :pointer], :void attach_function :extism_plugin_free, [:pointer], :void - attach_function :extism_version, [], :string - attach_function :extism_plugin_id, [:pointer], :pointer attach_function :extism_plugin_cancel_handle, [:pointer], :pointer attach_function :extism_plugin_cancel, [:pointer], :bool + attach_function :extism_plugin_config, %i[pointer pointer ExtismSize], :bool + attach_function :extism_plugin_function_exists, %i[pointer string], :bool + attach_function :extism_plugin_call, %i[pointer string pointer ExtismSize], :int32 + attach_function :extism_error, [:pointer], :string + attach_function :extism_plugin_error, [:pointer], :string + attach_function :extism_plugin_output_length, [:pointer], :ExtismSize + attach_function :extism_plugin_output_data, [:pointer], :pointer + attach_function :extism_log_file, %i[string string], :bool + attach_function :extism_version, [], :string end end diff --git a/ruby/lib/extism/version.rb b/ruby/lib/extism/version.rb index 887581895..db852663d 100644 --- a/ruby/lib/extism/version.rb +++ b/ruby/lib/extism/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Extism - VERSION = '0.5.0' + VERSION = '1.0.0-rc.1' end diff --git a/ruby/test/test_extism.rb b/ruby/test/test_extism.rb index 3a7205973..e0a3fd967 100644 --- a/ruby/test/test_extism.rb +++ b/ruby/test/test_extism.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -require "test_helper" +require 'test_helper' class TestExtism < Minitest::Test def test_that_it_has_a_version_number @@ -9,22 +9,22 @@ def test_that_it_has_a_version_number def test_plugin_call plugin = Extism::Plugin.new(manifest) - res = JSON.parse(plugin.call("count_vowels", "this is a test")) - assert_equal res["count"], 4 - res = JSON.parse(plugin.call("count_vowels", "this is a test again")) - assert_equal res["count"], 7 - res = JSON.parse(plugin.call("count_vowels", "this is a test thrice")) - assert_equal res["count"], 6 - res = JSON.parse(plugin.call("count_vowels", "🌎hello🌎world🌎")) - assert_equal res["count"], 3 + res = JSON.parse(plugin.call('count_vowels', 'this is a test')) + assert_equal res['count'], 4 + res = JSON.parse(plugin.call('count_vowels', 'this is a test again')) + assert_equal res['count'], 7 + res = JSON.parse(plugin.call('count_vowels', 'this is a test thrice')) + assert_equal res['count'], 6 + res = JSON.parse(plugin.call('count_vowels', '🌎hello🌎world🌎')) + assert_equal res['count'], 3 end def test_can_free_plugin plugin = Extism::Plugin.new(manifest) - _res = plugin.call("count_vowels", "this is a test") + _res = plugin.call('count_vowels', 'this is a test') plugin.free assert_raises(Extism::Error) do - _res = plugin.call("count_vowels", "this is a test") + _res = plugin.call('count_vowels', 'this is a test') end end @@ -36,26 +36,48 @@ def test_errors_on_bad_manifest def test_has_function plugin = Extism::Plugin.new(manifest) - assert plugin.has_function? "count_vowels" - refute plugin.has_function? "i_am_not_a_function" + assert plugin.has_function? 'count_vowels' + refute plugin.has_function? 'i_am_not_a_function' end def test_errors_on_unknown_function plugin = Extism::Plugin.new(manifest) assert_raises(Extism::Error) do - plugin.call("non_existent_function", "input") + plugin.call('non_existent_function', 'input') end end + def test_host_functions + Extism.set_log_file('stdout', 'info') + func = proc do |current_plugin, inputs, outputs, user_data| + input = current_plugin.input_as_bytes(inputs.first) + current_plugin.return_string(outputs.first, "#{input} #{user_data}") + end + f = Extism::Function.new('transform_string', [Extism::ValType::I64], [Extism::ValType::I64], func, 'My User Data') + plugin = Extism::Plugin.new(host_manifest, [f], true) + result = plugin.call('reflect_string', 'Hello, World!') + assert_equal result, 'Hello, World! My User Data' + end + private def manifest { wasm: [ { - path: File.join(__dir__, "../../wasm/code.wasm"), - }, - ], + path: File.join(__dir__, '../../wasm/code.wasm') + } + ] + } + end + + def host_manifest + { + wasm: [ + { + path: File.join(__dir__, '../../wasm/kitchensink.wasm') + } + ] } end end diff --git a/wasm/kitchensink.wasm b/wasm/kitchensink.wasm new file mode 100755 index 0000000000000000000000000000000000000000..9292a0b47a00b81cb716cf3828e93d2a95c3697c GIT binary patch literal 4882056 zcmeFa34mQimH&V1zSm3ob*FFk4he87bf5zX1c*rp0s27*2?>IVf{GF}5qJqphp;F} znoUsZ)7x-1#ntom$E?*Ze&-mj-#zTI&%3ZE3 zmCg85*=${v|B`elX+C;mRH|H_T2~|aR_a!_UaodJy)Zwz(vPwFYI*E654G~W5+2oF z*qUEenN- zr6;Rpy}fx4(3JJ`WFhO#^S*3iZx(uc0kGbF!C7yi*IAgD_vPt-J)tM`Ps%6twEeHQ ztE-@altbl8`7X~hp43R5O`g&dLOyj0k7VUpK4n^OZ(nadv9E91v}yd8-{j}|cF02c zHBZ#PiS&lT)25Mx+_ykqB}|{#8$yNl`m&zBzW#m&qegnNp1h~GmqGErzM?1?8g)XY zFZ58L#@BNnA%(MSqP|FvYy9QR1plK|f7CcaPw$NW3I*uCH`3de4N!(Y&^jaR?XC2x z8#9Z(-Wg${noi561E$v!d?L240Ip=MDZk|otyx}>UHar{XN&9C?&*`VHKV!=or*AlS zeI?XRKmDu?XPkffv(C6+LnWVZ15;WLwYB!eu;%jTZygO+gyX)Ne=~pFlCR~97O%KE zTos;o*(J}t^h4oY;m+`-@WcGK;Wy#sl@Eu%2@iztgd6k!3RmY>%iOJ&fkB z%3qzoCVy@I`|z3k^Z94(q0{;m9<@?Yi;=l`7lBL8;&ll))uf6M

C)V@WU;jghg-x_#Bu>)r$<}X^N8%Kl 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%0A=$k!w4R$?Rcqr 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

X;xqH9&aKwp3c0*;9z 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 bCSS1f)4 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

!h#x1hNQOS>Iu=;NRbHyP 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

=o^g$r;{9pd~DO}|PoK@Q)g_^1}T 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®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/Lqy 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

Vy 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 z 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 z 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℘r{hYqangDDBih386z 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�D+0a!`Wyfv92Y8Z?M$PGB}k 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 `;ck^q*^g%#I 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 z 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

{;=8e$wQlN+GVhX1%x)TeueAwyf5-O^(MBZzM4 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 Date: Mon, 11 Sep 2023 20:12:34 -0700 Subject: [PATCH 047/176] feat(ocaml): add missing flags to `extism-call` executable (#451) `extism-call` is a test program using the OCaml SDK, this PR adds the missing flags to make it a little more useful for general testing/ --- ocaml/Makefile | 5 ++ ocaml/bin/dune | 2 +- ocaml/bin/main.ml | 126 ++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 122 insertions(+), 11 deletions(-) diff --git a/ocaml/Makefile b/ocaml/Makefile index a18e92642..f52f8fbf6 100644 --- a/ocaml/Makefile +++ b/ocaml/Makefile @@ -1,6 +1,8 @@ VERSION?=0.4.0 TAG?=0.5.0 +PREFIX?=$$HOME/.local + build: dune build @@ -14,3 +16,6 @@ prepare: publish: opam publish -v $(VERSION) https://github.com/extism/extism/archive/refs/tags/v$(TAG).tar.gz .. + +install-cli: build + install ../_build/default/ocaml/bin/main.exe "$(PREFIX)/bin/extism-call" diff --git a/ocaml/bin/dune b/ocaml/bin/dune index e5eb59294..00ef7f60e 100644 --- a/ocaml/bin/dune +++ b/ocaml/bin/dune @@ -1,5 +1,5 @@ (executable (name main) (package extism) - (public_name extism-run) + (public_name extism-call) (libraries extism cmdliner)) diff --git a/ocaml/bin/main.ml b/ocaml/bin/main.ml index eafcf2816..94115b643 100644 --- a/ocaml/bin/main.ml +++ b/ocaml/bin/main.ml @@ -3,26 +3,132 @@ open Cmdliner let read_stdin () = In_channel.input_all stdin -let main file func_name input = +let split_allowed_paths = + List.filter_map (fun path -> + let s = String.split_on_char ':' path in + match s with + | [] -> None + | [ p ] -> Some (p, p) + | p :: tl -> Some (p, String.concat ":" tl)) + +let split_config = + List.filter_map (fun path -> + let s = String.split_on_char '=' path in + match s with + | [] -> None + | [ p ] -> Some (p, None) + | p :: tl -> Some (p, Some (String.concat "=" tl))) + +let main file func_name input loop timeout_ms allowed_paths allowed_hosts config + memory_max log_level log_file wasi = let input = if String.equal input "-" then read_stdin () else input in - let file = In_channel.with_open_bin file In_channel.input_all in - let plugin = Plugin.create file ~wasi:true |> Result.get_ok in - print_endline (Plugin.id plugin |> Uuidm.to_string); - let res = Plugin.call plugin ~name:func_name input |> Result.get_ok in - print_endline res + let allowed_paths = split_allowed_paths allowed_paths in + let config = split_config config in + let memory = Manifest.{ max_pages = memory_max } in + let manifest = + try + let m = Manifest.of_file file in + { + m with + timeout_ms = Some timeout_ms; + allowed_hosts = Some allowed_hosts; + allowed_paths = Some allowed_paths; + config = Some config; + memory = Some memory; + } + with _ -> + Manifest.create ~timeout_ms ~allowed_hosts ~allowed_paths ~config ~memory + [ Manifest.(Wasm.File { path = file; hash = None; name = None }) ] + in + let () = + match (log_level, log_file) with + | None, _ -> () + | Some level, Some file -> assert (set_log_file ~level file) + | Some level, None -> assert (set_log_file ~level "stderr") + in + let plugin = + match Plugin.of_manifest manifest ~wasi with + | Ok x -> x + | Error (`Msg e) -> + Printf.eprintf "ERROR Unable to load plugin: %s" e; + exit 1 + in + for _ = 0 to loop do + match Plugin.call plugin ~name:func_name input with + | Ok res -> print_endline res + | Error (`Msg e) -> + Printf.eprintf "ERROR Unable to call function: %s" e; + exit 2 + done let file = - let doc = "The WASM module or Extism manifest path." in - Arg.(value & pos 0 file "" & info [] ~docv:"FILE" ~doc) + let doc = "The Wasm module or Extism manifest path." in + Arg.(required & pos 0 (some file) None & info [] ~docv:"FILE" ~doc) let func_name = let doc = "The function to run." in - Arg.(value & pos 1 string "_start" & info [] ~docv:"NAME" ~doc) + Arg.(required & pos 1 (some string) None & info [] ~docv:"NAME" ~doc) let input = let doc = "Input data." in Arg.(value & opt string "" & info [ "input"; "i" ] ~docv:"INPUT" ~doc) -let main_t = Term.(const main $ file $ func_name $ input) +let loop = + let doc = "Number of times to call the plugin." in + Arg.(value & opt int 0 & info [ "loop" ] ~docv:"TIMES" ~doc) + +let memory_max = + let doc = "Max number of memory pages." in + Arg.(value & opt (some int) None & info [ "memory-max" ] ~docv:"PAGES" ~doc) + +let timeout = + let doc = "Plugin timeout in milliseconds." in + Arg.(value & opt int 30000 & info [ "timeout"; "t" ] ~docv:"MILLIS" ~doc) + +let allowed_paths = + let doc = "Allowed paths." in + Arg.( + value & opt_all string [] + & info [ "allow-path" ] ~docv:"LOCAL_PATH[:PLUGIN_PATH]" ~doc) + +let allowed_hosts = + let doc = "Allowed hosts for HTTP requests." in + Arg.(value & opt_all string [] & info [ "allow-host" ] ~docv:"HOST" ~doc) + +let config = + let doc = "Plugin config." in + Arg.(value & opt_all string [] & info [ "config" ] ~docv:"KEY=VALUE" ~doc) + +let log_file = + let doc = "File to write logs to." in + Arg.( + value & opt (some string) None & info [ "log-file" ] ~docv:"FILENAME" ~doc) + +let log_level_enum = + Arg.enum + [ + ("warn", `Warn); + ("info", `Info); + ("debug", `Debug); + ("error", `Error); + ("trace", `Trace); + ] + +let log_level = + let doc = "Log level." in + Arg.( + value + & opt (some log_level_enum) None + & info [ "log-level" ] ~docv:"LEVEL" ~doc) + +let wasi = + let doc = "Enable WASI." in + Arg.(value & flag & info [ "wasi" ] ~doc) + +let main_t = + Term.( + const main $ file $ func_name $ input $ loop $ timeout $ allowed_paths + $ allowed_hosts $ config $ memory_max $ log_level $ log_file $ wasi) + let cmd = Cmd.v (Cmd.info "extism-run") main_t let () = exit (Cmd.eval cmd) From e1a5b01ede7433e1741cca8115a5cdc699b4d721 Mon Sep 17 00:00:00 2001 From: Rob Date: Wed, 13 Sep 2023 16:22:13 -0600 Subject: [PATCH 048/176] feat(browser): Allow Initialization of Plugin from WebAssembly.Module (#453) Allows for initializing an extism plugin from a `WebAssembly.Module` like: ```js const ctx = new ExtismContext(); const p = await ctx.newPlugin(new WebAssembly.Module(wasm), []); ``` --- browser/src/context.ts | 6 +++--- browser/src/plugin.ts | 24 +++++++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/browser/src/context.ts b/browser/src/context.ts index 341d0ed86..608dbb7bc 100644 --- a/browser/src/context.ts +++ b/browser/src/context.ts @@ -5,7 +5,7 @@ import { ExtismPlugin } from './plugin'; * Can be a {@link Manifest} or just the raw bytes of the WASM module as an ArrayBuffer. * We recommend using {@link Manifest} */ -type ManifestData = Manifest | ArrayBuffer; +type ManifestData = Manifest | ArrayBuffer | WebAssembly.Module; /** * A Context is needed to create plugins. The Context @@ -21,8 +21,8 @@ export default class ExtismContext { * @returns A new Plugin scoped to this Context */ async newPlugin(manifest: ManifestData, functions: Record = {}, config?: PluginConfig) { - let moduleData: ArrayBuffer | null = null; - if (manifest instanceof ArrayBuffer) { + let moduleData: ArrayBuffer | WebAssembly.Module | null = null; + if (manifest instanceof ArrayBuffer || manifest instanceof WebAssembly.Module) { moduleData = manifest; } else if ((manifest as Manifest).wasm) { const wasmData = (manifest as Manifest).wasm; diff --git a/browser/src/plugin.ts b/browser/src/plugin.ts index 53f8c19dc..df088bda7 100644 --- a/browser/src/plugin.ts +++ b/browser/src/plugin.ts @@ -5,7 +5,7 @@ import { WASI, Fd } from '@bjorn3/browser_wasi_shim'; export type ExtismFunction = any; export class ExtismPlugin { - moduleData: ArrayBuffer; + moduleData: ArrayBuffer | WebAssembly.Module; allocator: Allocator; config?: PluginConfig; vars: Record; @@ -14,7 +14,7 @@ export class ExtismPlugin { module?: WebAssembly.WebAssemblyInstantiatedSource; functions: Record; - constructor(moduleData: ArrayBuffer, functions: Record = {}, config?: PluginConfig) { + constructor(moduleData: ArrayBuffer | WebAssembly.Module, functions: Record = {}, config?: PluginConfig) { this.moduleData = moduleData; this.allocator = new Allocator(1024 * 1024); this.config = config; @@ -78,11 +78,25 @@ export class ExtismPlugin { wasi_snapshot_preview1: wasi.wasiImport, env: environment, }; - this.module = await WebAssembly.instantiate(this.moduleData, env); + + if (this.moduleData instanceof WebAssembly.Module) { + const instance = new WebAssembly.Instance(this.moduleData, env); + this.module = { + instance, + module: this.moduleData + } + //@ts-ignore + wasi.inst = instance; + } + else { + this.module = await WebAssembly.instantiate(this.moduleData, env); + //@ts-ignore + wasi.inst = this.module.instance; + } + if (!this.module) throw Error("Unable to instantiate module"); + // normally we would call wasi.start here but it doesn't respect when there is // no _start function - //@ts-ignore - wasi.inst = this.module.instance; if (this.module.instance.exports._start) { //@ts-ignore this.module.instance.exports._start(); From 4377cbd7a0f63de9c7f4c6a1ff37c50d452c98ba Mon Sep 17 00:00:00 2001 From: Rob Date: Wed, 13 Sep 2023 17:20:13 -0600 Subject: [PATCH 049/176] chore(browser): bump package version (#454) --- browser/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/package.json b/browser/package.json index be4e7191b..5dd61222e 100644 --- a/browser/package.json +++ b/browser/package.json @@ -1,6 +1,6 @@ { "name": "@extism/runtime-browser", - "version": "0.3.0", + "version": "0.3.1", "description": "Extism runtime in the browser", "scripts": { "build": "node build.js && tsc --emitDeclarationOnly --outDir dist", @@ -36,4 +36,4 @@ "dependencies": { "@bjorn3/browser_wasi_shim": "^0.2.7" } -} +} \ No newline at end of file From cb55e52506292c127f5860f7d9f070a787e9f6b7 Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 14 Sep 2023 12:32:38 -0700 Subject: [PATCH 050/176] feat: Add `extism-convert` crate and use it for input/output to plugin calls (#443) - Adds `extism-convert` crate with `ToBytes`, `FromBytes` and `FromBytesOwned` traits - This serves as a single interface for reading/writing rich types from WebAssembly linear memory. - Supports `Json` and `Msgpack` and `Protobuf` encodings out-of-the-box - Updates `Plugin::call` to take `ToBytes` as the input argument and return a `FromBytes` value - Adds `host_fn!` macro to simplify host function creation - Cleans up generated documentation a little - PR for the Rust PDK: https://github.com/extism/rust-pdk/pull/31 - Adds a `typed_plugin!` macro to implement type-safe wrappers around `Plugin` - After this we should focus on adding similar type-conversion helpers to the SDKs and other PDKs to make it easier to use across languages. For example, a Python host running a Rust plugin using Msgpack encoded types. ## Examples ### Calling a function Instead of the untyped, bytes-only `call` function: ```rust let output = plugin.call("func_name", "my data").unwrap(); let output: MyType = serde_json::from_slice(&output).unwrap(); ``` We can now use richer types to encode/decode our values directly when using `call`: ```rust let Json(output) = plugin.call::<_, Json>("func_name", "my data").unwrap(); ``` ### Allocating inside of a host function The same interface works for host functions, so instead of: ```rust fn hello_world( plugin: &mut CurrentPlugin, inputs: &[Val], outputs: &mut [Val], _user_data: UserData, ) -> Result<(), Error> { let handle = plugin.memory_handle_val(&inputs[0])?; let input = plugin.memory_read_str(handle)?; let output = plugin.memory_alloc_bytes(&input).unwrap(); outputs[0] = output.into(); Ok(()) } ``` Becomes: ```rust fn hello_world( plugin: &mut CurrentPlugin, inputs: &[Val], outputs: &mut [Val], _user_data: UserData, ) -> Result<(), Error> { let my_value: String = plugin.memory_get_val(&inputs[0])?; let output = plugin.memory_new(&my_value)?; outputs[0] = plugin.memory_to_val(output); Ok(()) } ``` Although this isn't much of an improvement, using the `host_fn` macro, we can really begin to see how the above function is really just an identity function: ```rust host_fn!(hello_world(a: String) -> String { a }); ``` ### typed_plugin! `typed_plugin!` is used to make a typed wrapper around a Plugin: ```rust /// Create the typed plugin typed_plugin!(Testing { count_vowels(&str) -> Json }); /// Create the `Plugin` and convert it to `Testing` wrapper let mut plugin: Testing = Plugin::new(WASM, [f], true).unwrap().into(); /// Call the `count_vowels` function: let Json(output0): Json = plugin.count_vowels("abc123")?; ``` It could make sense to convert `host_fn` and/or `typed_plugin` to proc-macros at some point, but for now they work and provide some flexibility in experimenting with the interfaces. Another future update could be to figure out a nice way to make it so input can be written in multiple chunks, so the entire input doesn't have to get copied into memory at once. --- .github/workflows/ci-rust.yml | 6 +- .github/workflows/release-rust.yaml | 11 +- Cargo.toml | 1 + composer.lock | 24 +-- convert/Cargo.toml | 22 +++ convert/src/encoding.rs | 118 ++++++++++++ convert/src/from_bytes.rs | 100 +++++++++++ convert/src/lib.rs | 29 +++ convert/src/memory_handle.rs | 42 +++++ convert/src/tests.rs | 39 ++++ convert/src/to_bytes.rs | 102 +++++++++++ libextism/Cargo.toml | 1 + manifest/src/lib.rs | 40 +++++ python/example.py | 9 +- runtime/Cargo.toml | 1 + runtime/build.rs | 1 + runtime/extism.h | 11 +- runtime/src/current_plugin.rs | 270 +++++++++++++--------------- runtime/src/function.rs | 51 +++++- runtime/src/lib.rs | 18 +- runtime/src/pdk.rs | 26 +-- runtime/src/plugin.rs | 93 ++++++++-- runtime/src/sdk.rs | 30 +--- runtime/src/tests.rs | 101 +++++++---- 24 files changed, 881 insertions(+), 265 deletions(-) create mode 100644 convert/Cargo.toml create mode 100644 convert/src/encoding.rs create mode 100644 convert/src/from_bytes.rs create mode 100644 convert/src/lib.rs create mode 100644 convert/src/memory_handle.rs create mode 100644 convert/src/tests.rs create mode 100644 convert/src/to_bytes.rs diff --git a/.github/workflows/ci-rust.yml b/.github/workflows/ci-rust.yml index 58ba496ee..94fc5d522 100644 --- a/.github/workflows/ci-rust.yml +++ b/.github/workflows/ci-rust.yml @@ -39,13 +39,13 @@ jobs: uses: actions/cache@v3 with: path: target/release/libextism.* - key: ${{ runner.os }}-libextism-${{ hashFiles('runtime/**') }}-${{ hashFiles('manifest/**') }} + key: ${{ runner.os }}-libextism-${{ hashFiles('runtime/**') }}-${{ hashFiles('manifest/**') }}-${{ hashFiles('convert/**') }} - name: Cache target id: cache-target uses: actions/cache@v3 with: path: target/** - key: ${{ runner.os }}-target-${{ env.GITHUB_SHA }} + key: ${{ runner.os }}-target-${{ github.sha }} - name: Build if: steps.cache-libextism.outputs.cache-hit != 'true' shell: bash @@ -79,7 +79,7 @@ jobs: uses: actions/cache@v3 with: path: target/** - key: ${{ runner.os }}-target-${{ env.GITHUB_SHA }} + key: ${{ runner.os }}-target-${{ github.sha }} - name: Format run: cargo fmt --check -p ${{ env.RUNTIME_CRATE }} - name: Lint diff --git a/.github/workflows/release-rust.yaml b/.github/workflows/release-rust.yaml index 57478aec2..319024891 100644 --- a/.github/workflows/release-rust.yaml +++ b/.github/workflows/release-rust.yaml @@ -23,10 +23,19 @@ jobs: env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} run: | - # order of crate publication matter: manifest, runtime, rust + # order of crate publication matter: manifest, convert, runtime cargo publish --manifest-path manifest/Cargo.toml # allow for crates.io to update so dependant crates can locate extism-manifest sleep 10 + + - name: Release Rust Convert Crate + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} + run: | + # order of crate publication matter: manifest, convert, rust + cargo publish --manifest-path convert/Cargo.toml + # allow for crates.io to update so dependant crates can locate extism-convert + sleep 10 - name: Release Runtime env: diff --git a/Cargo.toml b/Cargo.toml index f272fb0ca..dd38c2b7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,5 +3,6 @@ members = [ "manifest", "runtime", "libextism", + "convert" ] exclude = ["kernel"] diff --git a/composer.lock b/composer.lock index 2acc67eec..b7d08d84b 100644 --- a/composer.lock +++ b/composer.lock @@ -12,12 +12,12 @@ "source": { "type": "git", "url": "https://github.com/ircmaxell/FFIMe.git", - "reference": "5f648f95ecf23262a2e58f4e4c9001bd1b5f9c98" + "reference": "431a3c13d9906b974d50b13bf8295097ea000c5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/FFIMe/zipball/5f648f95ecf23262a2e58f4e4c9001bd1b5f9c98", - "reference": "5f648f95ecf23262a2e58f4e4c9001bd1b5f9c98", + "url": "https://api.github.com/repos/ircmaxell/FFIMe/zipball/431a3c13d9906b974d50b13bf8295097ea000c5e", + "reference": "431a3c13d9906b974d50b13bf8295097ea000c5e", "shasum": "" }, "require": { @@ -50,7 +50,7 @@ "issues": "https://github.com/ircmaxell/FFIMe/issues", "source": "https://github.com/ircmaxell/FFIMe/tree/master" }, - "time": "2022-09-01T18:56:19+00:00" + "time": "2023-04-03T00:43:12+00:00" }, { "name": "ircmaxell/php-c-parser", @@ -58,12 +58,12 @@ "source": { "type": "git", "url": "https://github.com/ircmaxell/php-c-parser.git", - "reference": "55e0a4fdf88d6e955d928860e1e107a68492c1cf" + "reference": "29e0223704e4ee00c66f43506f5f52db151b3517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/php-c-parser/zipball/55e0a4fdf88d6e955d928860e1e107a68492c1cf", - "reference": "55e0a4fdf88d6e955d928860e1e107a68492c1cf", + "url": "https://api.github.com/repos/ircmaxell/php-c-parser/zipball/29e0223704e4ee00c66f43506f5f52db151b3517", + "reference": "29e0223704e4ee00c66f43506f5f52db151b3517", "shasum": "" }, "require": { @@ -99,7 +99,7 @@ "issues": "https://github.com/ircmaxell/php-c-parser/issues", "source": "https://github.com/ircmaxell/php-c-parser/tree/master" }, - "time": "2022-08-27T17:37:14+00:00" + "time": "2023-03-23T10:58:24+00:00" }, { "name": "ircmaxell/php-object-symbolresolver", @@ -107,12 +107,12 @@ "source": { "type": "git", "url": "https://github.com/ircmaxell/php-object-symbolresolver.git", - "reference": "3734df2b22d7c8273ee6f6f2155fddde6056d057" + "reference": "dfe1b1aa6c15b198bdef50fff8485e98e89f2a09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/php-object-symbolresolver/zipball/3734df2b22d7c8273ee6f6f2155fddde6056d057", - "reference": "3734df2b22d7c8273ee6f6f2155fddde6056d057", + "url": "https://api.github.com/repos/ircmaxell/php-object-symbolresolver/zipball/dfe1b1aa6c15b198bdef50fff8485e98e89f2a09", + "reference": "dfe1b1aa6c15b198bdef50fff8485e98e89f2a09", "shasum": "" }, "require": { @@ -144,7 +144,7 @@ "issues": "https://github.com/ircmaxell/php-object-symbolresolver/issues", "source": "https://github.com/ircmaxell/php-object-symbolresolver/tree/master" }, - "time": "2022-08-14T19:30:20+00:00" + "time": "2022-09-15T18:21:50+00:00" } ], "packages-dev": [], diff --git a/convert/Cargo.toml b/convert/Cargo.toml new file mode 100644 index 000000000..d097bd4d5 --- /dev/null +++ b/convert/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "extism-convert" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +anyhow = "1.0.75" +base64 = "0.21.3" +prost = { version = "0.12.0", optional = true } +rmp-serde = { version = "1.1.2", optional = true } +serde = "1.0.186" +serde_json = "1.0.105" + +[dev-dependencies] +serde = {version = "1.0.186", features = ["derive"]} + +[features] +default = ["msgpack", "protobuf"] +msgpack = ["rmp-serde"] +protobuf = ["prost"] diff --git a/convert/src/encoding.rs b/convert/src/encoding.rs new file mode 100644 index 000000000..6dead2d54 --- /dev/null +++ b/convert/src/encoding.rs @@ -0,0 +1,118 @@ +use crate::*; + +use base64::Engine; + +/// The `encoding` macro can be used to create newtypes that implement a particular encoding for the +/// inner value. +/// +/// For example, the following line creates a new JSON encoding using serde_json: +/// +/// ``` +/// extism_convert::encoding!(MyJson, serde_json::to_vec, serde_json::from_slice); +/// ``` +/// +/// This will create a struct `struct MyJson(pub T)` and implement `ToBytes` using `serde_json::to_vec` +/// and `FromBytesOwned` using `serde_json::from_vec` +#[macro_export] +macro_rules! encoding { + ($name:ident, $to_vec:expr, $from_slice:expr) => { + #[doc = concat!(stringify!($name), " encoding")] + pub struct $name(pub T); + + impl $name { + pub fn into_inner(self) -> T { + self.0 + } + } + + impl $crate::FromBytesOwned for $name { + fn from_bytes_owned(data: &[u8]) -> std::result::Result { + let x = $from_slice(data)?; + std::result::Result::Ok($name(x)) + } + } + + impl<'a, T: serde::Serialize> $crate::ToBytes<'a> for $name { + type Bytes = Vec; + + fn to_bytes(&self) -> std::result::Result { + let enc = $to_vec(&self.0)?; + std::result::Result::Ok(enc) + } + } + }; +} + +encoding!(Json, serde_json::to_vec, serde_json::from_slice); + +#[cfg(feature = "msgpack")] +encoding!(Msgpack, rmp_serde::to_vec, rmp_serde::from_slice); + +impl<'a> ToBytes<'a> for serde_json::Value { + type Bytes = Vec; + + fn to_bytes(&self) -> Result { + Ok(serde_json::to_vec(self)?) + } +} + +impl FromBytesOwned for serde_json::Value { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(serde_json::from_slice(data)?) + } +} + +/// Base64 conversion +/// +/// When using `Base64` with `ToBytes` any type that implement `AsRef<[T]>` may be used as the inner value, +/// but only `Base64` and `Base64` may be used with `FromBytes` +/// +/// A value wrapped in `Base64` will automatically be encoded/decoded using base64, the inner value should not +/// already be base64 encoded. +pub struct Base64>(pub T); + +impl<'a, T: AsRef<[u8]>> ToBytes<'a> for Base64 { + type Bytes = String; + + fn to_bytes(&self) -> Result { + Ok(base64::engine::general_purpose::STANDARD.encode(&self.0)) + } +} + +impl FromBytesOwned for Base64> { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Base64( + base64::engine::general_purpose::STANDARD.decode(data)?, + )) + } +} + +impl FromBytesOwned for Base64 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Base64(String::from_utf8( + base64::engine::general_purpose::STANDARD.decode(data)?, + )?)) + } +} + +/// Protobuf encoding +/// +/// Allows for `prost` Protobuf messages to be used as arguments to Extism plugin calls +#[cfg(feature = "protobuf")] +pub struct Protobuf(pub T); + +#[cfg(feature = "protobuf")] +impl<'a, T: prost::Message> ToBytes<'a> for Protobuf { + type Bytes = Vec; + + fn to_bytes(&self) -> Result { + Ok(self.0.encode_to_vec()) + } +} + +#[cfg(feature = "protobuf")] +impl<'a, T: Default + prost::Message> FromBytesOwned for Protobuf { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Protobuf(T::decode(data)?)) + } +} diff --git a/convert/src/from_bytes.rs b/convert/src/from_bytes.rs new file mode 100644 index 000000000..b7fba6d9c --- /dev/null +++ b/convert/src/from_bytes.rs @@ -0,0 +1,100 @@ +use crate::*; + +/// `FromBytes` is used to define how a type should be decoded when working with +/// Extism memory. It is used for plugin output and host function input. +pub trait FromBytes<'a>: Sized { + /// Decode a value from a slice of bytes + fn from_bytes(data: &'a [u8]) -> Result; +} + +/// `FromBytesOwned` is similar to `FromBytes` but it doesn't borrow from the input slice. +/// `FromBytes` is automatically implemented for all types that implement `FromBytesOwned` +pub trait FromBytesOwned: Sized { + /// Decode a value from a slice of bytes, the resulting value should not borrow the input + /// data. + fn from_bytes_owned(data: &[u8]) -> Result; +} + +impl<'a> FromBytes<'a> for &'a [u8] { + fn from_bytes(data: &'a [u8]) -> Result { + Ok(data) + } +} + +impl<'a> FromBytes<'a> for &'a str { + fn from_bytes(data: &'a [u8]) -> Result { + Ok(std::str::from_utf8(data)?) + } +} + +impl<'a, T: FromBytesOwned> FromBytes<'a> for T { + fn from_bytes(data: &'a [u8]) -> Result { + T::from_bytes_owned(data) + } +} + +impl<'a> FromBytesOwned for Box<[u8]> { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(data.to_vec().into_boxed_slice()) + } +} + +impl FromBytesOwned for Vec { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(data.to_vec()) + } +} + +impl FromBytesOwned for String { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(std::str::from_utf8(data)?.to_string()) + } +} + +impl FromBytesOwned for f64 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Self::from_le_bytes(data.try_into()?)) + } +} + +impl FromBytesOwned for f32 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Self::from_le_bytes(data.try_into()?)) + } +} + +impl FromBytesOwned for i64 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Self::from_le_bytes(data.try_into()?)) + } +} + +impl FromBytesOwned for i32 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Self::from_le_bytes(data.try_into()?)) + } +} + +impl FromBytesOwned for u64 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Self::from_le_bytes(data.try_into()?)) + } +} + +impl FromBytesOwned for u32 { + fn from_bytes_owned(data: &[u8]) -> Result { + Ok(Self::from_le_bytes(data.try_into()?)) + } +} + +impl FromBytesOwned for () { + fn from_bytes_owned(_: &[u8]) -> Result { + Ok(()) + } +} + +impl<'a, T: FromBytes<'a>> FromBytes<'a> for std::io::Cursor { + fn from_bytes(data: &'a [u8]) -> Result { + Ok(std::io::Cursor::new(T::from_bytes(data)?)) + } +} diff --git a/convert/src/lib.rs b/convert/src/lib.rs new file mode 100644 index 000000000..6a568b469 --- /dev/null +++ b/convert/src/lib.rs @@ -0,0 +1,29 @@ +//! The `extism-convert` crate is used by the SDK and PDK to provide a shared interface for +//! encoding and decoding values that can be passed to Extism function calls. +//! +//! A set of types (Json, Msgpack) that can be used to specify a serde encoding are also provided. These are +//! similar to [axum extractors](https://docs.rs/axum/latest/axum/extract/index.html#intro) - they are +//! implemented as a tuple struct with a single field that is meant to be extracted using pattern matching. + +pub use anyhow::Error; + +mod encoding; + +mod from_bytes; +mod memory_handle; +mod to_bytes; + +pub use encoding::{Base64, Json}; + +#[cfg(feature = "msgpack")] +pub use encoding::Msgpack; + +#[cfg(feature = "protobuf")] +pub use encoding::Protobuf; + +pub use from_bytes::{FromBytes, FromBytesOwned}; +pub use memory_handle::MemoryHandle; +pub use to_bytes::ToBytes; + +#[cfg(test)] +mod tests; diff --git a/convert/src/memory_handle.rs b/convert/src/memory_handle.rs new file mode 100644 index 000000000..7e1cc24b5 --- /dev/null +++ b/convert/src/memory_handle.rs @@ -0,0 +1,42 @@ +/// `MemoryHandle` describes where in memory a block of data is stored +#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord)] +pub struct MemoryHandle { + /// The offset of the region in Extism linear memory + pub offset: u64, + + /// The length of the memory region + pub length: u64, +} + +impl MemoryHandle { + /// Create a new `MemoryHandle` from an offset in memory and length + /// + /// # Safety + /// This function is unsafe because the specified memory region may not be valid. + pub unsafe fn new(offset: u64, length: u64) -> MemoryHandle { + MemoryHandle { offset, length } + } + + /// `NULL` equivalent + pub fn null() -> MemoryHandle { + MemoryHandle { + offset: 0, + length: 0, + } + } + + /// Get the offset of a memory handle + pub fn offset(&self) -> u64 { + self.offset + } + + /// Get the length of the memory region + pub fn len(&self) -> usize { + self.length as usize + } + + /// Returns `true` when the length is 0 + pub fn is_empty(&self) -> bool { + self.length == 0 + } +} diff --git a/convert/src/tests.rs b/convert/src/tests.rs new file mode 100644 index 000000000..19a27fb96 --- /dev/null +++ b/convert/src/tests.rs @@ -0,0 +1,39 @@ +use crate::*; + +#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq)] +struct Testing { + a: String, + b: i64, + c: f32, +} + +#[test] +fn roundtrip_json() { + let x = Testing { + a: "foobar".to_string(), + b: 123, + c: 456.7, + }; + let bytes = Json(&x).to_bytes().unwrap(); + let Json(y): Json = FromBytes::from_bytes(&bytes).unwrap(); + assert_eq!(x, y); +} + +#[test] +fn roundtrip_msgpack() { + let x = Testing { + a: "foobar".to_string(), + b: 123, + c: 456.7, + }; + let bytes = Msgpack(&x).to_bytes().unwrap(); + let Msgpack(y): Msgpack = FromBytes::from_bytes(&bytes).unwrap(); + assert_eq!(x, y); +} + +#[test] +fn roundtrip_base64() { + let bytes = Base64("this is a test").to_bytes().unwrap(); + let Base64(s): Base64 = FromBytes::from_bytes(bytes.as_bytes()).unwrap(); + assert_eq!(s, "this is a test"); +} diff --git a/convert/src/to_bytes.rs b/convert/src/to_bytes.rs new file mode 100644 index 000000000..23c4ad804 --- /dev/null +++ b/convert/src/to_bytes.rs @@ -0,0 +1,102 @@ +use crate::*; + +/// `ToBytes` is used to define how a type should be encoded when working with +/// Extism memory. It is used for plugin input and host function output. +pub trait ToBytes<'a> { + /// A configurable byte slice representation, allows any type that implements `AsRef<[u8]>` + type Bytes: AsRef<[u8]>; + + /// `to_bytes` converts a value into `Self::Bytes` + fn to_bytes(&self) -> Result; +} + +impl<'a> ToBytes<'a> for () { + type Bytes = [u8; 0]; + fn to_bytes(&self) -> Result { + Ok([]) + } +} + +impl<'a> ToBytes<'a> for Vec { + type Bytes = Vec; + fn to_bytes(&self) -> Result { + Ok(self.clone()) + } +} + +impl<'a> ToBytes<'a> for String { + type Bytes = String; + fn to_bytes(&self) -> Result { + Ok(self.clone()) + } +} + +impl<'a> ToBytes<'a> for &'a [u8] { + type Bytes = &'a [u8]; + fn to_bytes(&self) -> Result { + Ok(self) + } +} + +impl<'a> ToBytes<'a> for &'a str { + type Bytes = &'a str; + fn to_bytes(&self) -> Result { + Ok(self) + } +} + +impl<'a> ToBytes<'a> for f64 { + type Bytes = [u8; 8]; + + fn to_bytes(&self) -> Result { + Ok(self.to_le_bytes()) + } +} + +impl<'a> ToBytes<'a> for f32 { + type Bytes = [u8; 4]; + + fn to_bytes(&self) -> Result { + Ok(self.to_le_bytes()) + } +} + +impl<'a> ToBytes<'a> for i64 { + type Bytes = [u8; 8]; + + fn to_bytes(&self) -> Result { + Ok(self.to_le_bytes()) + } +} + +impl<'a> ToBytes<'a> for i32 { + type Bytes = [u8; 4]; + + fn to_bytes(&self) -> Result { + Ok(self.to_le_bytes()) + } +} + +impl<'a> ToBytes<'a> for u64 { + type Bytes = [u8; 8]; + + fn to_bytes(&self) -> Result { + Ok(self.to_le_bytes()) + } +} + +impl<'a> ToBytes<'a> for u32 { + type Bytes = [u8; 4]; + + fn to_bytes(&self) -> Result { + Ok(self.to_le_bytes()) + } +} + +impl<'a, T: ToBytes<'a>> ToBytes<'a> for &'a T { + type Bytes = T::Bytes; + + fn to_bytes(&self) -> Result { + ::to_bytes(self) + } +} diff --git a/libextism/Cargo.toml b/libextism/Cargo.toml index 41718571f..c31f0b5e2 100644 --- a/libextism/Cargo.toml +++ b/libextism/Cargo.toml @@ -11,6 +11,7 @@ description = "libextism" [lib] name = "extism" crate-type = ["cdylib"] +doc = false [dependencies] extism = {path = "../runtime"} diff --git a/manifest/src/lib.rs b/manifest/src/lib.rs index eb25e330b..128fc85f1 100644 --- a/manifest/src/lib.rs +++ b/manifest/src/lib.rs @@ -4,26 +4,35 @@ use std::path::{Path, PathBuf}; #[deprecated] pub type ManifestMemory = MemoryOptions; +/// Configure memory settings #[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct MemoryOptions { + /// The max number of WebAssembly pages that should be allocated #[serde(alias = "max")] pub max_pages: Option, } +/// Generic HTTP request structure #[derive(Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct HttpRequest { + /// The request URL pub url: String, + + /// Request headers #[serde(default)] #[serde(alias = "header")] pub headers: std::collections::BTreeMap, + + /// Request method pub method: Option, } impl HttpRequest { + /// Create a new `HttpRequest` to the given URL pub fn new(url: impl Into) -> HttpRequest { HttpRequest { url: url.into(), @@ -32,22 +41,28 @@ impl HttpRequest { } } + /// Update the method pub fn with_method(mut self, method: impl Into) -> HttpRequest { self.method = Some(method.into()); self } + /// Add a header pub fn with_header(mut self, key: impl Into, value: impl Into) -> HttpRequest { self.headers.insert(key.into(), value.into()); self } } +/// Provides additional metadata about a Webassembly module #[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct WasmMetadata { + /// Module name, this is used by Extism to determine which is the `main` module pub name: Option, + + /// Module hash, if the data loaded from disk or via HTTP doesn't match an error will be raised pub hash: Option, } @@ -81,16 +96,20 @@ impl From> for Wasm { #[deprecated] pub type ManifestWasm = Wasm; +/// The `Wasm` type specifies how to access a WebAssembly module #[derive(Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(untagged)] #[serde(deny_unknown_fields)] pub enum Wasm { + /// From disk File { path: PathBuf, #[serde(flatten)] meta: WasmMetadata, }, + + /// From memory Data { #[serde(with = "base64")] #[cfg_attr(feature = "json_schema", schemars(schema_with = "base64_schema"))] @@ -98,6 +117,8 @@ pub enum Wasm { #[serde(flatten)] meta: WasmMetadata, }, + + /// Via HTTP Url { #[serde(flatten)] req: HttpRequest, @@ -107,6 +128,7 @@ pub enum Wasm { } impl Wasm { + /// Load Wasm from a path pub fn file(path: impl AsRef) -> Self { Wasm::File { path: path.as_ref().to_path_buf(), @@ -114,6 +136,7 @@ impl Wasm { } } + /// Load Wasm directly from a buffer pub fn data(data: impl Into>) -> Self { Wasm::Data { data: data.into(), @@ -121,6 +144,7 @@ impl Wasm { } } + /// Load Wasm from a URL pub fn url(req: HttpRequest) -> Self { Wasm::Url { req, @@ -128,6 +152,7 @@ impl Wasm { } } + /// Get the metadata pub fn meta(&self) -> &WasmMetadata { match self { Wasm::File { path: _, meta } => meta, @@ -136,6 +161,7 @@ impl Wasm { } } + /// Get mutable access to the metadata pub fn meta_mut(&mut self) -> &mut WasmMetadata { match self { Wasm::File { path: _, meta } => meta, @@ -153,20 +179,34 @@ fn base64_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema:: schema.into() } +/// The `Manifest` type is used to configure the runtime and specify how to load modules. #[derive(Default, Clone, serde::Serialize, serde::Deserialize)] #[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))] #[serde(deny_unknown_fields)] pub struct Manifest { + /// WebAssembly modules, the `main` module should be named `main` or listed last #[serde(default)] pub wasm: Vec, + /// Memory options #[serde(default)] pub memory: MemoryOptions, + + /// Config values are made accessible using the PDK `extism_config_get` function #[serde(default)] pub config: BTreeMap, #[serde(default)] + + /// Specifies which hosts may be accessed via HTTP, if this is empty then + /// no hosts may be accessed. Wildcards may be used. pub allowed_hosts: Option>, + + /// Specifies which paths should be made available on disk when using WASI. This is a mapping from + /// this is a mapping from the path on disk to the path it should be available inside the plugin. + /// For example, `".": "/tmp"` would mount the current directory as `/tmp` inside the module #[serde(default)] pub allowed_paths: Option>, + + /// The plugin timeout, by default this is set to 30s #[serde(default = "default_timeout")] pub timeout_ms: Option, } diff --git a/python/example.py b/python/example.py index 1c55b4c03..fb0c737f6 100644 --- a/python/example.py +++ b/python/example.py @@ -47,15 +47,16 @@ def main(args): "Hello again!", ) ] + + # Initialize the plugin plugin = Plugin(manifest, wasi=True, functions=functions) print(plugin.id) - # Call `count_vowels` - wasm_vowel_count = plugin.call("count_vowels", data) - print(wasm_vowel_count) - j = json.loads(wasm_vowel_count) + # Call `count_vowels` + j = plugin.call("count_vowels", data, parse=lambda x: json.loads(bytes(x))) print("Number of vowels:", j["count"]) + # Check against Python implementation assert j["count"] == count_vowels(data) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index efa7d2d58..1357924bf 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -23,6 +23,7 @@ url = "2" glob = "0.3" ureq = {version = "2.5", optional=true} extism-manifest = { version = "1.0.0-alpha.0", path = "../manifest" } +extism-convert = { version = "0.1", path = "../convert" } uuid = { version = "1", features = ["v4"] } libc = "0.2" diff --git a/runtime/build.rs b/runtime/build.rs index f23391ecd..88057762e 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -17,6 +17,7 @@ fn main() { .rename_item("ValType", "ExtismValType") .rename_item("ValUnion", "ExtismValUnion") .rename_item("CurrentPlugin", "ExtismCurrentPlugin") + .rename_item("CancelHandle", "ExtismCancelHandle") .rename_item("Plugin", "ExtismPlugin") .rename_item("Function", "ExtismFunction") .with_style(cbindgen::Style::Type) diff --git a/runtime/extism.h b/runtime/extism.h index 2555cec71..57171f6fb 100644 --- a/runtime/extism.h +++ b/runtime/extism.h @@ -8,7 +8,7 @@ /** - * A list of all possible value types in WebAssembly. + * An enumeration of all possible value types in WebAssembly. */ typedef enum { /** @@ -41,14 +41,17 @@ typedef enum { ExternRef, } ExtismValType; +/** + * A `CancelHandle` can be used to cancel a running plugin from another thread + */ +typedef struct ExtismCancelHandle ExtismCancelHandle; + /** * CurrentPlugin stores data that is available to the caller in PDK functions, this should * only be accessed from inside a host function */ typedef struct ExtismCurrentPlugin ExtismCurrentPlugin; -typedef struct ExtismCancelHandle ExtismCancelHandle; - /** * Wraps raw host functions with some additional metadata and user data */ @@ -183,7 +186,7 @@ void extism_plugin_new_error_free(char *err); void extism_plugin_free(ExtismPlugin *plugin); /** - * Get plugin ID for cancellation + * Get handle for plugin cancellation */ const ExtismCancelHandle *extism_plugin_cancel_handle(const ExtismPlugin *plugin); diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index 0fbf30602..9375d5603 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -1,41 +1,5 @@ use crate::*; -#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Eq, Ord)] -pub struct MemoryHandle(u64, u64); - -impl MemoryHandle { - /// Create a new memory handle, this is unsafe because the values are provided by the user - /// and may not be a valid handle - /// - /// # Safety - /// This function is unsafe because there is no validation that the offset or - /// length of the handle is correct - pub unsafe fn new(offs: u64, len: u64) -> MemoryHandle { - MemoryHandle(offs, len) - } - - /// Get the length of the memory block - pub fn len(&self) -> usize { - self.1 as usize - } - - /// Returns `true` when the handle length is 0 - pub fn is_empty(&self) -> bool { - self.1 == 0 - } - - /// Get the offset to this block in Extism memory - pub fn offset(&self) -> u64 { - self.0 - } -} - -impl From for Val { - fn from(m: MemoryHandle) -> Self { - Val::I64(m.0 as i64) - } -} - /// CurrentPlugin stores data that is available to the caller in PDK functions, this should /// only be accessed from inside a host function pub struct CurrentPlugin { @@ -52,7 +16,6 @@ pub struct CurrentPlugin { pub(crate) memory_limiter: Option, } -unsafe impl Sync for CurrentPlugin {} unsafe impl Send for CurrentPlugin {} pub(crate) struct MemoryLimiter { @@ -98,6 +61,117 @@ impl wasmtime::ResourceLimiter for MemoryLimiter { } impl CurrentPlugin { + /// Get a `MemoryHandle` from a memory offset + pub fn memory_handle(&mut self, offs: u64) -> Option { + let len = self.memory_length(offs); + if len == 0 { + return None; + } + + Some(MemoryHandle { + offset: offs, + length: len, + }) + } + + /// Access memory bytes as `str` + pub fn memory_str(&mut self, handle: MemoryHandle) -> Result<&mut str, Error> { + let bytes = self.memory_bytes(handle)?; + let s = std::str::from_utf8_mut(bytes)?; + Ok(s) + } + + /// Allocate a handle large enough for the encoded Rust type and copy it into Extism memory + pub fn memory_new<'a, T: ToBytes<'a>>(&mut self, t: T) -> Result { + let data = t.to_bytes()?; + let data = data.as_ref(); + let handle = self.memory_alloc(data.len() as u64)?; + let bytes = self.memory_bytes(handle)?; + bytes.copy_from_slice(data.as_ref()); + Ok(handle) + } + + /// Decode a Rust type from Extism memory + pub fn memory_get<'a, T: FromBytes<'a>>( + &'a mut self, + handle: MemoryHandle, + ) -> Result { + let data = self.memory_bytes(handle)?; + T::from_bytes(data) + } + + /// Decode a Rust type from Extism memory from an offset in memory specified by a `Val` + pub fn memory_get_val<'a, T: FromBytes<'a>>(&'a mut self, offs: &Val) -> Result { + if let Some(handle) = self.memory_handle(offs.i64().unwrap_or(0) as u64) { + let data = self.memory_bytes(handle)?; + T::from_bytes(data) + } else { + anyhow::bail!("invalid memory offset: {offs:?}") + } + } + + pub fn memory_bytes(&mut self, handle: MemoryHandle) -> Result<&mut [u8], Error> { + let (linker, mut store) = self.linker_and_store(); + let mem = linker + .get(&mut store, "env", "memory") + .unwrap() + .into_memory() + .unwrap(); + let ptr = unsafe { mem.data_ptr(&store).add(handle.offset() as usize) }; + if ptr.is_null() { + return Ok(&mut []); + } + Ok(unsafe { std::slice::from_raw_parts_mut(ptr, handle.len()) }) + } + + pub fn memory_alloc(&mut self, n: u64) -> Result { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + if let Some(f) = linker.get(&mut store, "env", "extism_alloc") { + f.into_func() + .unwrap() + .call(&mut store, &[Val::I64(n as i64)], output)?; + } else { + anyhow::bail!("Unable to allocate memory"); + } + let offs = output[0].unwrap_i64() as u64; + if offs == 0 { + anyhow::bail!("out of memory") + } + trace!("memory_alloc: {}, {}", offs, n); + Ok(MemoryHandle { + offset: offs, + length: n, + }) + } + + /// Free a block of Extism plugin memory + pub fn memory_free(&mut self, handle: MemoryHandle) -> Result<(), Error> { + let (linker, mut store) = self.linker_and_store(); + linker + .get(&mut store, "env", "extism_free") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(handle.offset as i64)], &mut [])?; + Ok(()) + } + + pub fn memory_length(&mut self, offs: u64) -> u64 { + let (linker, mut store) = self.linker_and_store(); + let output = &mut [Val::I64(0)]; + linker + .get(&mut store, "env", "extism_length") + .unwrap() + .into_func() + .unwrap() + .call(&mut store, &[Val::I64(offs as i64)], output) + .unwrap(); + let len = output[0].unwrap_i64() as u64; + trace!("memory_length: {}, {}", offs, len); + len + } + /// Access a plugin's variables pub fn vars(&self) -> &std::collections::BTreeMap> { &self.vars @@ -172,7 +246,7 @@ impl CurrentPlugin { } /// Get a pointer to the plugin memory - pub fn memory_ptr(&mut self) -> *mut u8 { + pub(crate) fn memory_ptr(&mut self) -> *mut u8 { let (linker, mut store) = self.linker_and_store(); if let Some(mem) = linker.get(&mut store, "env", "memory") { if let Some(mem) = mem.into_memory() { @@ -183,120 +257,24 @@ impl CurrentPlugin { std::ptr::null_mut() } - /// Get a slice that contains the entire plugin memory - pub fn memory(&mut self) -> &mut [u8] { - let (linker, mut store) = self.linker_and_store(); - let mem = linker - .get(&mut store, "env", "memory") - .unwrap() - .into_memory() - .unwrap(); - let ptr = mem.data_ptr(&store); - if ptr.is_null() { - return &mut []; - } - let size = mem.data_size(&store); - unsafe { std::slice::from_raw_parts_mut(ptr, size) } - } - - /// Read a section of Extism plugin memory - pub fn memory_read(&mut self, handle: MemoryHandle) -> &[u8] { - trace!("memory_read: {}, {}", handle.0, handle.1); - let offs = handle.0 as usize; - let len = handle.1 as usize; - let mem = self.memory(); - &mem[offs..offs + len] - } - - /// Read a section of Extism plugin memory and convert to to an `str` - pub fn memory_read_str(&mut self, handle: MemoryHandle) -> Result<&str, std::str::Utf8Error> { - std::str::from_utf8(self.memory_read(handle)) - } - - /// Write data to an offset in Extism plugin memory - pub fn memory_write(&mut self, handle: MemoryHandle, bytes: impl AsRef<[u8]>) { - trace!("memory_write: {}", handle.0); - let b = bytes.as_ref(); - let offs = handle.0 as usize; - let len = b.len(); - self.memory()[offs..offs + len.min(handle.len())].copy_from_slice(bytes.as_ref()); - } - - /// Allocate a new block of Extism plugin memory - pub fn memory_alloc(&mut self, n: Size) -> Result { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - if let Some(f) = linker.get(&mut store, "env", "extism_alloc") { - f.into_func() - .unwrap() - .call(&mut store, &[Val::I64(n as i64)], output)?; - } else { - anyhow::bail!("Unable to allocate memory"); - } - let offs = output[0].unwrap_i64() as u64; - if offs == 0 { - anyhow::bail!("out of memory") - } - trace!("memory_alloc: {}, {}", offs, n); - Ok(MemoryHandle(offs, n)) - } - - /// Allocate a new block in Extism plugin memory and fill it will the provided bytes - pub fn memory_alloc_bytes(&mut self, bytes: impl AsRef<[u8]>) -> Result { - let b = bytes.as_ref(); - let offs = self.memory_alloc(b.len() as Size)?; - self.memory_write(offs, b); - Ok(offs) - } - - /// Free a block of Extism plugin memory - pub fn memory_free(&mut self, handle: MemoryHandle) { - let (linker, mut store) = self.linker_and_store(); - linker - .get(&mut store, "env", "extism_free") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[Val::I64(handle.0 as i64)], &mut []) - .unwrap(); - } - - /// Get a `MemoryHandle` from an offset - pub fn memory_handle(&mut self, offs: u64) -> Option { - if offs == 0 { - return None; - } - let length = self.memory_length(offs); - if length == 0 { - return None; - } - Some(MemoryHandle(offs, length)) - } - /// Get a `MemoryHandle` from a `Val` reference - this can be used to convert a host function's /// argument directly to `MemoryHandle` - pub fn memory_handle_val(&mut self, offs: &Val) -> Option { + pub fn memory_from_val(&mut self, offs: &Val) -> Option { let offs = offs.i64()? as u64; let length = self.memory_length(offs); if length == 0 { return None; } - Some(MemoryHandle(offs, length)) + Some(MemoryHandle { + offset: offs, + length, + }) } - pub(crate) fn memory_length(&mut self, offs: u64) -> u64 { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_length") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[Val::I64(offs as i64)], output) - .unwrap(); - let len = output[0].unwrap_i64() as u64; - trace!("memory_length: {}, {}", offs, len); - len + /// Get a `MemoryHandle` from a `Val` reference - this can be used to convert a host function's + /// argument directly to `MemoryHandle` + pub fn memory_to_val(&mut self, handle: MemoryHandle) -> Val { + Val::I64(handle.offset() as i64) } /// Clear the current plugin error @@ -332,8 +310,10 @@ impl CurrentPlugin { return None; } - let data = self.memory_read(MemoryHandle(offs, length)); - let s = std::str::from_utf8(data); + let s = self.memory_str(MemoryHandle { + offset: offs, + length, + }); match s { Ok(s) => Some(s), Err(_) => None, diff --git a/runtime/src/function.rs b/runtime/src/function.rs index 0a0489054..344a9322d 100644 --- a/runtime/src/function.rs +++ b/runtime/src/function.rs @@ -52,6 +52,7 @@ impl From for wasmtime::ValType { } } +/// Raw WebAssembly values pub type Val = wasmtime::Val; /// UserData is an opaque pointer used to store additional data @@ -70,7 +71,7 @@ extern "C" fn free_any(ptr: *mut std::ffi::c_void) { impl UserData { /// Create a new `UserData` from an existing pointer and free function, this is used /// by the C API to wrap C pointers into user data - pub fn new_pointer( + pub(crate) fn new_pointer( ptr: *mut std::ffi::c_void, free: Option, ) -> Self { @@ -164,10 +165,19 @@ type FunctionInner = dyn Fn(wasmtime::Caller, &[wasmtime::Val], & /// Wraps raw host functions with some additional metadata and user data #[derive(Clone)] pub struct Function { + /// Function name pub(crate) name: String, + + /// Module name + pub(crate) namespace: Option, + + /// Function type pub(crate) ty: wasmtime::FuncType, + + /// Function handle pub(crate) f: std::sync::Arc, - pub(crate) namespace: Option, + + /// UserData pub(crate) _user_data: std::sync::Arc, } @@ -202,24 +212,61 @@ impl Function { } } + /// Host function name pub fn name(&self) -> &str { &self.name } + /// Host function module name pub fn namespace(&self) -> Option<&str> { self.namespace.as_deref() } + /// Set host function module name pub fn set_namespace(&mut self, namespace: impl Into) { self.namespace = Some(namespace.into()); } + /// Update host function module name pub fn with_namespace(mut self, namespace: impl Into) -> Self { self.set_namespace(namespace); self } + /// Get function type pub fn ty(&self) -> &wasmtime::FuncType { &self.ty } } + +/// The `host_fn` macro is used to define typed host functions +/// +/// For example, the following defines a host function named `add_newline` that takes a +/// string parameter and returns a string result: +/// ```rust +/// extism::host_fn!(add_newline(a: String) -> String { a + "\n" }); +/// ``` +#[macro_export] +macro_rules! host_fn { + ($name: ident ($($arg:ident : $argty:ty),*) -> $ret:ty $b:block) => { + fn $name( + plugin: &mut $crate::CurrentPlugin, + inputs: &[$crate::Val], + outputs: &mut [$crate::Val], + _user_data: $crate::UserData, + ) -> Result<(), $crate::Error> { + let mut index = 0; + $( + let $arg: $argty = plugin.memory_get_val(&inputs[index])?; + #[allow(unused_assignments)] + { + index += 1; + } + )* + let output = move || { $b }; + let output = plugin.memory_new(&output())?; + outputs[0] = plugin.memory_to_val(output); + Ok(()) + } + }; +} diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 92181fafc..746badc72 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -1,6 +1,9 @@ +pub(crate) use extism_convert::*; pub(crate) use std::collections::BTreeMap; pub(crate) use wasmtime::*; +pub use extism_convert as convert; + pub use anyhow::Error; mod current_plugin; @@ -10,22 +13,21 @@ pub(crate) mod manifest; pub(crate) mod pdk; mod plugin; mod plugin_builder; -pub mod sdk; mod timer; -pub use current_plugin::{CurrentPlugin, MemoryHandle}; +/// Extism C API +pub mod sdk; + +pub use current_plugin::CurrentPlugin; +pub use extism_convert::{FromBytes, FromBytesOwned, ToBytes}; pub use extism_manifest::Manifest; pub use function::{Function, UserData, Val, ValType}; -pub use plugin::Plugin; +pub use plugin::{CancelHandle, Plugin}; pub use plugin_builder::PluginBuilder; -pub use sdk::ExtismCancelHandle as CancelHandle; pub(crate) use internal::{Internal, Wasi}; -pub(crate) use timer::{Timer, TimerAction}; - -pub type Size = u64; - pub(crate) use log::{debug, error, trace}; +pub(crate) use timer::{Timer, TimerAction}; #[cfg(test)] mod tests; diff --git a/runtime/src/pdk.rs b/runtime/src/pdk.rs index 043b7dc22..ee70935e3 100644 --- a/runtime/src/pdk.rs +++ b/runtime/src/pdk.rs @@ -1,9 +1,8 @@ /// All the functions in the file are exposed from inside WASM plugins use crate::*; -// This macro unwraps input arguments to prevent functions from panicking, -// it should be used instead of `Val::unwrap_*` functions -#[macro_export] +/// This macro unwraps input arguments to prevent functions from panicking, +/// it should be used instead of `Val::unwrap_*` functions macro_rules! args { ($input:expr, $index:expr, $ty:ident) => { match $input[$index].$ty() { @@ -33,7 +32,7 @@ pub(crate) fn config_get( Some(h) => h, None => anyhow::bail!("invalid handle offset: {offset}"), }; - let key = data.memory_read_str(handle)?; + let key = data.memory_str(handle)?; let key = unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key.as_ptr(), key.len())) }; @@ -42,7 +41,7 @@ pub(crate) fn config_get( let mem = match ptr { Some((len, ptr)) => { let bytes = unsafe { std::slice::from_raw_parts(ptr, len) }; - data.memory_alloc_bytes(bytes)? + data.memory_new(bytes)? } None => { output[0] = Val::I64(0); @@ -68,7 +67,7 @@ pub(crate) fn var_get( Some(h) => h, None => anyhow::bail!("invalid handle offset: {offset}"), }; - let key = data.memory_read_str(handle)?; + let key = data.memory_str(handle)?; let key = unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key.as_ptr(), key.len())) }; @@ -77,7 +76,7 @@ pub(crate) fn var_get( let mem = match ptr { Some((len, ptr)) => { let bytes = unsafe { std::slice::from_raw_parts(ptr, len) }; - data.memory_alloc_bytes(bytes)? + data.memory_new(bytes)? } None => { output[0] = Val::I64(0); @@ -116,7 +115,7 @@ pub(crate) fn var_set( Some(h) => h, None => anyhow::bail!("invalid handle offset: {key_offs}"), }; - let key = data.memory_read_str(handle)?; + let key = data.memory_str(handle)?; let key_len = key.len(); let key_ptr = key.as_ptr(); unsafe { std::str::from_utf8_unchecked(std::slice::from_raw_parts(key_ptr, key_len)) } @@ -132,7 +131,8 @@ pub(crate) fn var_set( Some(h) => h, None => anyhow::bail!("invalid handle offset: {key_offs}"), }; - let value = data.memory_read(handle).to_vec(); + + let value = data.memory_bytes(handle)?.to_vec(); // Insert the value from memory into the `vars` map data.vars.insert(key.to_string(), value); @@ -167,7 +167,7 @@ pub(crate) fn http_request( Some(h) => h, None => anyhow::bail!("invalid handle offset: {http_req_offset}"), }; - let req: extism_manifest::HttpRequest = serde_json::from_slice(data.memory_read(handle))?; + let req: extism_manifest::HttpRequest = serde_json::from_slice(data.memory_bytes(handle)?)?; let body_offset = args!(input, 1, i64) as u64; @@ -208,7 +208,7 @@ pub(crate) fn http_request( Some(h) => h, None => anyhow::bail!("invalid handle offset: {http_req_offset}"), }; - let buf = data.memory_read(handle); + let buf: &[u8] = data.memory_bytes(handle)?; r.send_bytes(buf) } else { r.call() @@ -235,7 +235,7 @@ pub(crate) fn http_request( .take(1024 * 1024 * 50) // TODO: make this limit configurable .read_to_end(&mut buf)?; - let mem = data.memory_alloc_bytes(buf)?; + let mem = data.memory_new(&buf)?; output[0] = Val::I64(mem.offset() as i64); } else { output[0] = Val::I64(0); @@ -272,7 +272,7 @@ pub fn log( None => anyhow::bail!("invalid handle offset: {offset}"), }; - let buf = data.memory_read_str(handle); + let buf = data.memory_str(handle); match buf { Ok(buf) => log::log!(level, "{}", buf), diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 2554058d4..2a4764982 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -10,6 +10,23 @@ pub(crate) struct Output { pub(crate) error_length: u64, } +/// A `CancelHandle` can be used to cancel a running plugin from another thread +#[derive(Clone)] +pub struct CancelHandle { + pub(crate) timer_tx: std::sync::mpsc::Sender, + pub id: uuid::Uuid, +} + +unsafe impl Sync for CancelHandle {} +unsafe impl Send for CancelHandle {} + +impl CancelHandle { + pub fn cancel(&self) -> Result<(), Error> { + self.timer_tx.send(TimerAction::Cancel { id: self.id })?; + Ok(()) + } +} + /// Plugin contains everything needed to execute a WASM function pub struct Plugin { /// A unique ID for each plugin @@ -22,7 +39,7 @@ pub struct Plugin { pub(crate) store: Store, /// A handle used to cancel execution of a plugin - pub(crate) cancel_handle: sdk::ExtismCancelHandle, + pub(crate) cancel_handle: CancelHandle, /// All modules that were provided to the linker pub(crate) modules: BTreeMap, @@ -287,7 +304,7 @@ impl Plugin { runtime: None, id, timer_tx: timer_tx.clone(), - cancel_handle: sdk::ExtismCancelHandle { id, timer_tx }, + cancel_handle: CancelHandle { id, timer_tx }, instantiations: 0, output: Output::default(), _functions: imports.collect(), @@ -420,7 +437,7 @@ impl Plugin { error!("Call to extism_reset failed"); } - let handle = self.current_plugin_mut().memory_alloc_bytes(bytes)?; + let handle = self.current_plugin_mut().memory_new(bytes)?; if let Some(f) = self.linker.get(&mut self.store, "env", "extism_input_set") { f.into_func().unwrap().call( @@ -550,12 +567,14 @@ impl Plugin { } // Get the output data after a call has returned - fn output(&mut self) -> &[u8] { + fn output<'a, T: FromBytes<'a>>(&'a mut self) -> Result { trace!("Output offset: {}", self.output.offset); let offs = self.output.offset; let len = self.output.length; - self.current_plugin_mut() - .memory_read(unsafe { MemoryHandle::new(offs, len) }) + T::from_bytes( + self.current_plugin_mut() + .memory_bytes(unsafe { MemoryHandle::new(offs, len) })?, + ) } // Cache output memory and error information after call is complete @@ -668,12 +687,17 @@ impl Plugin { /// Call a function by name with the given input, the return value is the output data returned by the plugin. /// This data will be invalidated next time the plugin is called. - pub fn call(&mut self, name: impl AsRef, input: impl AsRef<[u8]>) -> Result<&[u8], Error> { + pub fn call<'a, 'b, T: ToBytes<'a>, U: FromBytes<'b>>( + &'b mut self, + name: impl AsRef, + input: T, + ) -> Result { let lock = self.instance.clone(); let mut lock = lock.lock().unwrap(); - self.raw_call(&mut lock, name, input) - .map(|_| self.output()) + let data = input.to_bytes()?; + self.raw_call(&mut lock, name, data) .map_err(|e| e.0) + .and_then(move |_| self.output()) } /// Get a `CancelHandle`, which can be used from another thread to cancel a running plugin @@ -698,7 +722,7 @@ impl Plugin { pub(crate) fn return_error(&mut self, e: impl std::fmt::Debug, x: E) -> E { let s = format!("{e:?}"); debug!("Set error: {:?}", s); - match self.current_plugin_mut().memory_alloc_bytes(&s) { + match self.current_plugin_mut().memory_new(&s) { Ok(handle) => { let (linker, mut store) = self.linker_and_store(); if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { @@ -733,3 +757,52 @@ pub(crate) enum GuestRuntime { init: Func, }, } + +/// The `typed_plugin` macro is used to create a newtype wrapper around `Plugin` with methods defined for the specified functions. +/// +/// For example, we can define a new type `MyPlugin` that automatically implements `From`/`Into` for `Plugin` +/// ```rust +/// #[derive(serde::Deserialize)] +/// struct Count { +/// count: usize, +/// } +/// +/// extism::typed_plugin!(MyPlugin { +/// count_vowels(&str) -> extism::convert::Json; +/// }); +/// +/// # const WASM: &[u8] = include_bytes!("../../wasm/code.wasm"); +/// // Convert from `Plugin` to `MyPlugin` +/// let mut plugin: MyPlugin = extism::Plugin::new(WASM, [], true).unwrap().into(); +/// // and call the `count_vowels` function +/// let count = plugin.count_vowels("this is a test").unwrap(); +/// ``` +#[macro_export] +macro_rules! typed_plugin { + ($name:ident {$($f:ident $(< $( $lt:tt $( : $clt:path )? ),+ >)? ($input:ty) -> $output:ty);*$(;)?}) => { + pub struct $name(pub $crate::Plugin); + + unsafe impl Send for $name {} + unsafe impl Sync for $name {} + + impl From<$crate::Plugin> for $name { + fn from(x: $crate::Plugin) -> Self { + $name(x) + } + } + + impl From<$name> for $crate::Plugin { + fn from(x: $name) -> Self { + x.0 + } + } + + impl $name { + $( + pub fn $f<'a, $( $( $lt $( : $clt )? ),+ )? >(&'a mut self, input: $input) -> Result<$output, $crate::Error> { + self.0.call(stringify!($f), input) + } + )* + } + }; +} diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index 971c7ed85..1113a6045 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -6,6 +6,7 @@ use std::str::FromStr; use crate::*; pub type ExtismMemoryHandle = u64; +pub type Size = u64; /// A union type for host function argument/return values #[repr(C)] @@ -24,12 +25,6 @@ pub struct ExtismVal { v: ValUnion, } -#[repr(C)] -pub struct ExtismPluginResult { - pub plugin: *mut Plugin, - pub error: *mut std::ffi::c_char, -} - /// Host function signature pub type ExtismFunctionType = extern "C" fn( plugin: *mut CurrentPlugin, @@ -141,7 +136,7 @@ pub unsafe extern "C" fn extism_current_plugin_memory_free( let plugin = &mut *plugin; if let Some(handle) = plugin.memory_handle(ptr) { - plugin.memory_free(handle); + let _ = plugin.memory_free(handle); } } @@ -317,24 +312,9 @@ pub unsafe extern "C" fn extism_plugin_free(plugin: *mut Plugin) { drop(plugin) } -#[derive(Clone)] -pub struct ExtismCancelHandle { - pub(crate) timer_tx: std::sync::mpsc::Sender, - pub id: uuid::Uuid, -} - -impl ExtismCancelHandle { - pub fn cancel(&self) -> Result<(), Error> { - self.timer_tx.send(TimerAction::Cancel { id: self.id })?; - Ok(()) - } -} - -/// Get plugin ID for cancellation +/// Get handle for plugin cancellation #[no_mangle] -pub unsafe extern "C" fn extism_plugin_cancel_handle( - plugin: *const Plugin, -) -> *const ExtismCancelHandle { +pub unsafe extern "C" fn extism_plugin_cancel_handle(plugin: *const Plugin) -> *const CancelHandle { if plugin.is_null() { return std::ptr::null(); } @@ -344,7 +324,7 @@ pub unsafe extern "C" fn extism_plugin_cancel_handle( /// Cancel a running plugin #[no_mangle] -pub unsafe extern "C" fn extism_plugin_cancel(handle: *const ExtismCancelHandle) -> bool { +pub unsafe extern "C" fn extism_plugin_cancel(handle: *const CancelHandle) -> bool { let handle = &*handle; handle.cancel().is_ok() } diff --git a/runtime/src/tests.rs b/runtime/src/tests.rs index 4806616dc..c4d35fcdb 100644 --- a/runtime/src/tests.rs +++ b/runtime/src/tests.rs @@ -5,19 +5,20 @@ const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); -fn hello_world( - plugin: &mut CurrentPlugin, - inputs: &[Val], - outputs: &mut [Val], - _user_data: UserData, -) -> Result<(), Error> { - let handle = plugin.memory_handle_val(&inputs[0]).unwrap(); - let input = plugin.memory_read_str(handle).unwrap().to_string(); - - let output = plugin.memory_alloc_bytes(&input).unwrap(); - outputs[0] = output.into(); - Ok(()) -} +host_fn!(hello_world (a: String) -> String { a }); + +// Which is the same as: +// fn hello_world( +// plugin: &mut CurrentPlugin, +// inputs: &[Val], +// outputs: &mut [Val], +// _user_data: UserData, +// ) -> Result<(), Error> { +// let input: String = plugin.memory_get_val(&inputs[0]).unwrap(); +// let output = plugin.memory_new(&input).unwrap(); +// outputs[0] = plugin.memory_to_val(output); +// Ok(()) +// } fn hello_world_panic( _plugin: &mut CurrentPlugin, @@ -28,6 +29,11 @@ fn hello_world_panic( panic!("This should not run"); } +#[derive(serde::Serialize, serde::Deserialize, PartialEq, Debug)] +pub struct Count { + count: usize, +} + #[test] fn it_works() { let wasm_start = Instant::now(); @@ -54,15 +60,16 @@ fn it_works() { let repeat = 1182; let input = "aeiouAEIOU____________________________________&smtms_y?".repeat(repeat); - let data = plugin.call("count_vowels", &input).unwrap(); + let Json(count) = plugin + .call::<_, Json>("count_vowels", &input) + .unwrap(); assert_eq!( - data, - b"{\"count\": 11820}", - "expecting vowel count of {}, input size: {}, output size: {}", + count, + Count { count: 11820 }, + "expecting vowel count of {}, but got {}", 10 * repeat, - input.len(), - data.len() + count.count, ); println!( @@ -76,21 +83,12 @@ fn it_works() { let mut test_times = vec![]; for _ in 0..100 { let test_start = Instant::now(); - plugin.call("count_vowels", &input).unwrap(); + plugin.call::<_, &[u8]>("count_vowels", &input).unwrap(); test_times.push(test_start.elapsed()); } let native_test = || { let native_start = Instant::now(); - // let native_vowel_count = input - // .chars() - // .filter(|c| match c { - // 'A' | 'E' | 'I' | 'O' | 'U' | 'a' | 'e' | 'i' | 'o' | 'u' => true, - // _ => false, - // }) - // .collect::>() - // .len(); - let mut _native_vowel_count = 0; let input: &[u8] = input.as_ref(); for i in 0..input.len() { @@ -157,8 +155,10 @@ fn test_plugin_threads() { let a = std::thread::spawn(move || { let mut plugin = plugin.lock().unwrap(); for _ in 0..10 { - let output = plugin.call("count_vowels", "this is a test aaa").unwrap(); - assert_eq!(b"{\"count\": 7}", output); + let Json(count) = plugin + .call::<_, Json>("count_vowels", "this is a test aaa") + .unwrap(); + assert_eq!(Count { count: 7 }, count); } }); threads.push(a); @@ -186,7 +186,7 @@ fn test_cancel() { std::thread::sleep(std::time::Duration::from_secs(1)); assert!(handle.cancel().is_ok()); }); - let _output = plugin.call("infinite_loop", "abc123"); + let _output: Result<&[u8], Error> = plugin.call("infinite_loop", "abc123"); let end = std::time::Instant::now(); let time = end - start; println!("Cancelled plugin ran for {:?}", time); @@ -208,13 +208,39 @@ fn test_timeout() { let mut plugin = Plugin::new_with_manifest(&manifest, [f], true).unwrap(); let start = std::time::Instant::now(); - let _output = plugin.call("infinite_loop", "abc123"); + let _output: Result<&[u8], Error> = plugin.call("infinite_loop", "abc123"); let end = std::time::Instant::now(); let time = end - start; println!("Timed out plugin ran for {:?}", time); // std::io::stdout().write_all(output).unwrap(); } +typed_plugin!(TestTypedPluginGenerics { + count_vowels>(&str) -> T +}); + +typed_plugin!(CountVowelsPlugin { + count_vowels(&str) -> Json; +}); + +#[test] +fn test_typed_plugin_macro() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let mut plugin: CountVowelsPlugin = Plugin::new(WASM, [f], true).unwrap().into(); + + let Json(output0): Json = plugin.count_vowels("abc123").unwrap(); + let Json(output1): Json = plugin.0.call("count_vowels", "abc123").unwrap(); + + assert_eq!(output0, output1) +} + #[test] fn test_multiple_instantiations() { let f = Function::new( @@ -225,12 +251,12 @@ fn test_multiple_instantiations() { hello_world, ); - let mut plugin = Plugin::new(WASM, [f], true).unwrap(); + let mut plugin: CountVowelsPlugin = Plugin::new(WASM, [f], true).unwrap().into(); // This is 10,001 because the wasmtime store limit is 10,000 - we want to test // that our reinstantiation process is working and that limit is never hit. for _ in 0..10001 { - let _output = plugin.call("count_vowels", "abc123").unwrap(); + let _output: Json = plugin.count_vowels("abc123").unwrap(); } } @@ -238,9 +264,8 @@ fn test_multiple_instantiations() { fn test_globals() { let mut plugin = Plugin::new(WASM_GLOBALS, [], true).unwrap(); for i in 0..1000 { - let output = plugin.call("globals", "").unwrap(); - let count: serde_json::Value = serde_json::from_slice(output).unwrap(); - assert_eq!(count.get("count").unwrap().as_i64().unwrap(), i); + let Json(count) = plugin.call::<_, Json>("globals", "").unwrap(); + assert_eq!(count.count, i); } } From ab458ebd44e60e4b5710311d89c4a68d3e49ce0a Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Fri, 15 Sep 2023 10:03:04 -0700 Subject: [PATCH 051/176] feat(build): Add "latest" snapshot builds (#457) Add a "latest" snapshot that other libraries can use to test against the latest version of Extism. Add caching for builds triggered by pushes to `main`. --- .github/workflows/release.yml | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cb74f8a34..30c9314d8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,6 +2,8 @@ on: release: types: [created] workflow_dispatch: + push: + branches: [ main ] name: Release @@ -37,6 +39,12 @@ jobs: override: true target: ${{ matrix.target }} + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: "linux-${{matrix.target}}" + save-if: ${{ github.ref == 'refs/heads/main' }} + cache-on-failure: "true" + - name: Build Target (${{ matrix.target }}) uses: actions-rs/cargo@v1 with: @@ -81,6 +89,7 @@ jobs: files: | *.tar.gz *.txt + if: startsWith(github.ref, 'refs/tags/') release-macos: name: macos @@ -101,6 +110,12 @@ jobs: override: true target: ${{ matrix.target }} + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: "macos-${{matrix.target}}" + save-if: ${{ github.ref == 'refs/heads/main' }} + cache-on-failure: "true" + - name: Build Target (${{ matrix.target }}) uses: actions-rs/cargo@v1 with: @@ -145,6 +160,7 @@ jobs: files: | *.tar.gz *.txt + if: startsWith(github.ref, 'refs/tags/') release-windows: name: windows @@ -169,6 +185,12 @@ jobs: override: true target: ${{ matrix.target }} + - uses: Swatinem/rust-cache@v2 + with: + prefix-key: "macos-${{matrix.target}}" + save-if: ${{ github.ref == 'refs/heads/main' }} + cache-on-failure: "true" + - name: Build Target (${{ matrix.target }}) uses: actions-rs/cargo@v1 with: @@ -214,3 +236,25 @@ jobs: files: | *.tar.gz *.txt + if: startsWith(github.ref, 'refs/tags/') + + release-latest: + name: create latest release + runs-on: ubuntu-latest + needs: [release-linux, release-macos, release-windows] + if: github.ref == 'refs/heads/main' + steps: + - uses: actions/download-artifact@v3 + with: + name: ${{ env.ARTIFACT_DIR }} + + - uses: "marvinpinto/action-automatic-releases@latest" + with: + repo_token: "${{ secrets.GITHUB_TOKEN }}" + automatic_release_tag: "latest" + prerelease: true + title: "Development Build" + files: | + *.tar.gz + *.txt + if: github.ref == 'refs/heads/main' From d040c8b8a80ffff8c45226d00c71fb63595d11f6 Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 18 Sep 2023 11:23:36 -0700 Subject: [PATCH 052/176] fix(kernel): avoid allocating 0-length blocks (#465) Fixes an issue where the kernel was able to allocate empty blocks, causing some weird memory issues. --- kernel/src/lib.rs | 6 ++++++ runtime/src/current_plugin.rs | 6 ++++++ runtime/src/extism-runtime.wasm | Bin 2694 -> 2725 bytes 3 files changed, 12 insertions(+) diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 287fe90c9..d9de25f0a 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -310,6 +310,9 @@ impl MemoryBlock { /// Allocate a block of memory and return the offset #[no_mangle] pub unsafe fn extism_alloc(n: Length) -> Pointer { + if n == 0 { + return 0; + } let region = MemoryRoot::new(); let block = region.alloc(n); match block { @@ -321,6 +324,9 @@ pub unsafe fn extism_alloc(n: Length) -> Pointer { /// Free allocated memory #[no_mangle] pub unsafe fn extism_free(p: Pointer) { + if p == 0 { + return; + } let block = MemoryRoot::new().find_block(p); if let Some(block) = block { block.free(); diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index 9375d5603..bf3dc3157 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -125,6 +125,12 @@ impl CurrentPlugin { } pub fn memory_alloc(&mut self, n: u64) -> Result { + if n == 0 { + return Ok(MemoryHandle { + offset: 0, + length: 0, + }); + } let (linker, mut store) = self.linker_and_store(); let output = &mut [Val::I64(0)]; if let Some(f) = linker.get(&mut store, "env", "extism_alloc") { diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index b252b6fb46c3d151bb749bd2453eb9d9dc72ec3c..67db36261bd9f553fad7d4499d7523344ef3caad 100755 GIT binary patch delta 427 zcmYLFJxc>Y5S^Xb+gxt%B!UNm&D{EdB91mmt9IeY zA%}wm80J}V&A|M@V>bcWUAivwW6vQ@SSc_ zaa0$b*+|k#N|x*rYgEKS0Gm0tL_!idvHEvxw7h0q)`f^}WoTLDT&`}*XuqmOkecSi PN%cVeip>4;(WLqZN>E0W delta 389 zcmYLEu}T9$5S^LbyIgMXB!v;dW^Rq5NZJTCX43@(v5|E48~lUlU6nd;l^-Cf4ut%G z|6y&fm0;y;PRMTYhWFmi+xOaE_TNqjSDRD1!1P1Ms-$NuseVug^=EWl4?2&fI#)@d zX}r5E6xfKB>vl6Y^g=Y=tm3}@1EeoOlmGw# From 016e9158efe0fdf2737cbb66ee77aeaf879a7d10 Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 18 Sep 2023 17:38:38 -0700 Subject: [PATCH 053/176] fix(main): Fixes rounding issue in kernel num_pages (#468) This is #466 for the `main` branch Co-authored-by: Benjamin Eckel --- kernel/src/lib.rs | 10 +++++++--- runtime/src/extism-runtime.wasm | Bin 2725 -> 2653 bytes 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index d9de25f0a..47b863ffd 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -119,9 +119,13 @@ pub struct MemoryBlock { /// Returns the number of pages needed for the given number of bytes pub fn num_pages(nbytes: u64) -> usize { - let nbytes = nbytes as f64; - let page = PAGE_SIZE as f64; - ((nbytes / page) + 0.5) as usize + let npages = nbytes / PAGE_SIZE as u64; + let remainder = nbytes % PAGE_SIZE as u64; + if remainder != 0 { + (npages + 1) as usize + } else { + npages as usize + } } // Get the `MemoryRoot` at the correct offset in memory diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index 67db36261bd9f553fad7d4499d7523344ef3caad..162b67e480f38fa449cf1baf8f66e62c199d2339 100755 GIT binary patch delta 95 zcmZ1~dRJtFDihOl{>|!4T8x5gS=brt8S9wpnd%_)<`m`yj9Ll|PXGTiH#;!|0a*ea s%d?c29T*(z-FX=t85Eg$n79>K6j(HwITV;Tm#}KGa?D_0VBiH}0Hbph(f|Me delta 182 zcmcaBvQ%_~DihOsfz9enT8zS9SvVN$8S9wpnd%@kW6kCy<^_!POb!YRyIdH+;Dg;F zDC>d!0wr#ksAIAMjLpE1ro>g~%FCd@y;_lzhmqTnL6H+gFgw;Oa5^$5a7lyJKKTFt z|9i(2X(cWP2FH3gUPc8L1r|+a4h62YP6BN;=FA-2KoJH7md)0zQmh Date: Wed, 20 Sep 2023 15:21:42 -0700 Subject: [PATCH 054/176] ci: automate PRs to build canonical version of extism-runtime.wasm (#473) Closes #469 This PR adds a github workflow that is triggered by updates to the `kernel/` directory or `runtime/src/extism-kernel.wasm` - it builds the kernel, including using `wasm-strip` and makes a PR against any PR that has a kernel module that doesn't match the expected output. I had considered making this run when the PR is merged into main, but this approach gives us a chance to run CI with the generated wasm file. I think automatically adding a commit would be simpler, but this way seems more transparent. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- .github/workflows/kernel.yml | 44 ++++++++++++++++++++++++++++++++ kernel/rust-toolchain.toml | 4 +++ runtime/src/extism-runtime.wasm | Bin 2653 -> 2669 bytes 3 files changed, 48 insertions(+) create mode 100644 .github/workflows/kernel.yml create mode 100644 kernel/rust-toolchain.toml diff --git a/.github/workflows/kernel.yml b/.github/workflows/kernel.yml new file mode 100644 index 000000000..8b235df5e --- /dev/null +++ b/.github/workflows/kernel.yml @@ -0,0 +1,44 @@ +on: + workflow_dispatch: + pull_request: + paths: + - kernel/** + +name: Kernel + +jobs: + kernel: + name: Build extism-runtime.wasm + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + target: wasm32-unknown-unknown + - uses: Swatinem/rust-cache@v2 + + - name: Install deps + run: | + sudo apt install wabt --yes + + - name: Build kernel + shell: bash + run: | + cd kernel + sh build.sh + + - uses: peter-evans/create-pull-request@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + title: "update(kernel): extism-runtime.wasm in ${{ github.event.pull_request.head.ref }}" + body: "Automated PR to update `runtime/src/extism-runtime.wasm` in PR #${{ github.event.number }}" + base: "${{ github.event.pull_request.head.ref }}" + branch: "update-kernel--${{ github.event.pull_request.head.ref }}" + add-paths: "runtime/src/extism-runtime.wasm" + commit-message: "update(kernel): extism-runtime.wasm in ${{ github.event.pull_request.head.ref }}" + delete-branch: true diff --git a/kernel/rust-toolchain.toml b/kernel/rust-toolchain.toml new file mode 100644 index 000000000..23b58f8b7 --- /dev/null +++ b/kernel/rust-toolchain.toml @@ -0,0 +1,4 @@ +[toolchain] +channel = "stable" +components = [ "rustfmt", "rust-std" ] +targets = [ "wasm32-unknown-unknown" ] diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index 162b67e480f38fa449cf1baf8f66e62c199d2339..b70cf39dc1365ece5beaf938d7d2f13f38a0ffa1 100755 GIT binary patch delta 107 zcmcaB@>WEeA+b1@k%57M(SR#~v7RA;xxT)hu|9#RzMf&Cg1QJ3GYc~-5VEnevvU9e zCkqG1#^_UwjDI$(G08G2DKRK8I8AwZ^24|L{j+D*n=^9&`Lj`{_XRMnjtuDgM!pg!1gzOv~ r9GpPF#mdRKG3*p0 Date: Wed, 20 Sep 2023 17:26:21 -0500 Subject: [PATCH 055/176] chore(deps-dev): Bump jest and @types/jest in /node (#463) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) and [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest). These dependencies needed to be updated together. Updates `jest` from 29.6.4 to 29.7.0
Changelog

Sourced from jest's changelog.

29.7.0

Features

  • [create-jest] Add npm init / yarn create initialiser for Jest projects (#14465)
  • [jest-validate] Allow deprecation warnings for unknown options (#14499)

Fixes

  • [jest-resolver] Replace unmatched capture groups in moduleNameMapper with empty string instead of undefined (#14507)
  • [jest-snapshot] Allow for strings as well as template literals in inline snapshots (#14465)
  • [@jest/test-sequencer] Calculate test runtime if perStats.duration is missing (#14473)

Performance

  • [@jest/create-cache-key-function] Cache access of NODE_ENV and BABEL_ENV (#14455)

Chore & Maintenance

  • [jest-cli] Move internal config initialisation logic to the create-jest package (#14465)
Commits

Updates `@types/jest` from 29.5.4 to 29.5.5
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 518 +++++++++++++++++++++-------------------- 1 file changed, 269 insertions(+), 249 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 035da3865..8b64b2266 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -654,16 +654,16 @@ } }, "node_modules/@jest/console": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.6.4.tgz", - "integrity": "sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.6.3", - "jest-util": "^29.6.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -671,15 +671,15 @@ } }, "node_modules/@jest/core": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.6.4.tgz", - "integrity": "sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "dependencies": { - "@jest/console": "^29.6.4", - "@jest/reporters": "^29.6.4", - "@jest/test-result": "^29.6.4", - "@jest/transform": "^29.6.4", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -687,21 +687,21 @@ "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.6.3", - "jest-config": "^29.6.4", - "jest-haste-map": "^29.6.4", - "jest-message-util": "^29.6.3", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.6.4", - "jest-resolve-dependencies": "^29.6.4", - "jest-runner": "^29.6.4", - "jest-runtime": "^29.6.4", - "jest-snapshot": "^29.6.4", - "jest-util": "^29.6.3", - "jest-validate": "^29.6.3", - "jest-watcher": "^29.6.4", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^29.6.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -718,37 +718,37 @@ } }, "node_modules/@jest/environment": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.4.tgz", - "integrity": "sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.6.4", + "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.6.3" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.4.tgz", - "integrity": "sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "dependencies": { - "expect": "^29.6.4", - "jest-snapshot": "^29.6.4" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.4.tgz", - "integrity": "sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "dependencies": { "jest-get-type": "^29.6.3" @@ -758,47 +758,47 @@ } }, "node_modules/@jest/fake-timers": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.4.tgz", - "integrity": "sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.6.3", - "jest-mock": "^29.6.3", - "jest-util": "^29.6.3" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.6.4.tgz", - "integrity": "sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.4", - "@jest/expect": "^29.6.4", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", "@jest/types": "^29.6.3", - "jest-mock": "^29.6.3" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.4.tgz", - "integrity": "sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.6.4", - "@jest/test-result": "^29.6.4", - "@jest/transform": "^29.6.4", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", @@ -812,9 +812,9 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.6.3", - "jest-util": "^29.6.3", - "jest-worker": "^29.6.4", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -890,12 +890,12 @@ } }, "node_modules/@jest/test-result": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.4.tgz", - "integrity": "sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "dependencies": { - "@jest/console": "^29.6.4", + "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" @@ -905,14 +905,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz", - "integrity": "sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.4", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.4", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -920,9 +920,9 @@ } }, "node_modules/@jest/transform": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.4.tgz", - "integrity": "sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -933,9 +933,9 @@ "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.4", + "jest-haste-map": "^29.7.0", "jest-regex-util": "^29.6.3", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1149,9 +1149,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.4", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.4.tgz", - "integrity": "sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A==", + "version": "29.5.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", + "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1329,12 +1329,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/babel-jest": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.4.tgz", - "integrity": "sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "dependencies": { - "@jest/transform": "^29.6.4", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", "babel-preset-jest": "^29.6.3", @@ -1633,6 +1633,27 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1858,16 +1879,16 @@ } }, "node_modules/expect": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.4.tgz", - "integrity": "sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.6.4", + "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.6.4", - "jest-message-util": "^29.6.3", - "jest-util": "^29.6.3" + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2266,15 +2287,15 @@ } }, "node_modules/jest": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.6.4.tgz", - "integrity": "sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@jest/core": "^29.6.4", + "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.6.4" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" @@ -2292,13 +2313,13 @@ } }, "node_modules/jest-changed-files": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.6.3.tgz", - "integrity": "sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { "execa": "^5.0.0", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { @@ -2306,28 +2327,28 @@ } }, "node_modules/jest-circus": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.4.tgz", - "integrity": "sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.4", - "@jest/expect": "^29.6.4", - "@jest/test-result": "^29.6.4", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.6.3", - "jest-matcher-utils": "^29.6.4", - "jest-message-util": "^29.6.3", - "jest-runtime": "^29.6.4", - "jest-snapshot": "^29.6.4", - "jest-util": "^29.6.3", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.6.3", + "pretty-format": "^29.7.0", "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" @@ -2337,22 +2358,21 @@ } }, "node_modules/jest-cli": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.4.tgz", - "integrity": "sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "@jest/core": "^29.6.4", - "@jest/test-result": "^29.6.4", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.6.4", - "jest-util": "^29.6.3", - "jest-validate": "^29.6.3", - "prompts": "^2.0.1", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "yargs": "^17.3.1" }, "bin": { @@ -2371,31 +2391,31 @@ } }, "node_modules/jest-config": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.6.4.tgz", - "integrity": "sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.6.4", + "@jest/test-sequencer": "^29.7.0", "@jest/types": "^29.6.3", - "babel-jest": "^29.6.4", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.6.4", - "jest-environment-node": "^29.6.4", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", "jest-get-type": "^29.6.3", "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.6.4", - "jest-runner": "^29.6.4", - "jest-util": "^29.6.3", - "jest-validate": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.6.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -2416,24 +2436,24 @@ } }, "node_modules/jest-diff": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.4.tgz", - "integrity": "sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.6.3.tgz", - "integrity": "sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -2443,33 +2463,33 @@ } }, "node_modules/jest-each": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.6.3.tgz", - "integrity": "sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", "jest-get-type": "^29.6.3", - "jest-util": "^29.6.3", - "pretty-format": "^29.6.3" + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.4.tgz", - "integrity": "sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.4", - "@jest/fake-timers": "^29.6.4", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.6.3", - "jest-util": "^29.6.3" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2485,9 +2505,9 @@ } }, "node_modules/jest-haste-map": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.4.tgz", - "integrity": "sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", @@ -2497,8 +2517,8 @@ "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", "jest-regex-util": "^29.6.3", - "jest-util": "^29.6.3", - "jest-worker": "^29.6.4", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -2510,37 +2530,37 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz", - "integrity": "sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz", - "integrity": "sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.6.4", + "jest-diff": "^29.7.0", "jest-get-type": "^29.6.3", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.3.tgz", - "integrity": "sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", @@ -2549,7 +2569,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.6.3", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -2558,14 +2578,14 @@ } }, "node_modules/jest-mock": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.3.tgz", - "integrity": "sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.6.3" + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2598,17 +2618,17 @@ } }, "node_modules/jest-resolve": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.4.tgz", - "integrity": "sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.4", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.6.3", - "jest-validate": "^29.6.3", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -2618,43 +2638,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz", - "integrity": "sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.6.4" + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.4.tgz", - "integrity": "sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "dependencies": { - "@jest/console": "^29.6.4", - "@jest/environment": "^29.6.4", - "@jest/test-result": "^29.6.4", - "@jest/transform": "^29.6.4", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.6.3", - "jest-environment-node": "^29.6.4", - "jest-haste-map": "^29.6.4", - "jest-leak-detector": "^29.6.3", - "jest-message-util": "^29.6.3", - "jest-resolve": "^29.6.4", - "jest-runtime": "^29.6.4", - "jest-util": "^29.6.3", - "jest-watcher": "^29.6.4", - "jest-worker": "^29.6.4", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -2663,17 +2683,17 @@ } }, "node_modules/jest-runtime": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.4.tgz", - "integrity": "sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.6.4", - "@jest/fake-timers": "^29.6.4", - "@jest/globals": "^29.6.4", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.6.4", - "@jest/transform": "^29.6.4", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", @@ -2681,13 +2701,13 @@ "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.6.4", - "jest-message-util": "^29.6.3", - "jest-mock": "^29.6.3", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.6.4", - "jest-snapshot": "^29.6.4", - "jest-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -2696,9 +2716,9 @@ } }, "node_modules/jest-snapshot": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.4.tgz", - "integrity": "sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", @@ -2706,20 +2726,20 @@ "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.6.4", - "@jest/transform": "^29.6.4", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.6.4", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.4", + "jest-diff": "^29.7.0", "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.6.4", - "jest-message-util": "^29.6.3", - "jest-util": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.6.3", + "pretty-format": "^29.7.0", "semver": "^7.5.3" }, "engines": { @@ -2742,9 +2762,9 @@ } }, "node_modules/jest-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", - "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", @@ -2759,9 +2779,9 @@ } }, "node_modules/jest-validate": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", - "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { "@jest/types": "^29.6.3", @@ -2769,7 +2789,7 @@ "chalk": "^4.0.0", "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.6.3" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -2788,18 +2808,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.4.tgz", - "integrity": "sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { - "@jest/test-result": "^29.6.4", + "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { @@ -2807,13 +2827,13 @@ } }, "node_modules/jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.6.3", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -3293,9 +3313,9 @@ } }, "node_modules/pretty-format": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.3.tgz", - "integrity": "sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { "@jest/schemas": "^29.6.3", @@ -3332,9 +3352,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.3.tgz", + "integrity": "sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==", "dev": true, "funding": [ { @@ -3427,9 +3447,9 @@ } }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", From e7452a6f44a908f5c0278b9576f135555f6f38a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:26:34 -0500 Subject: [PATCH 056/176] chore(deps-dev): Bump @types/ffi-napi from 4.0.7 to 4.0.8 in /node (#462) Bumps [@types/ffi-napi](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ffi-napi) from 4.0.7 to 4.0.8.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/ffi-napi&package-manager=npm_and_yarn&previous-version=4.0.7&new-version=4.0.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 8b64b2266..1aefad7d3 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1105,9 +1105,9 @@ } }, "node_modules/@types/ffi-napi": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@types/ffi-napi/-/ffi-napi-4.0.7.tgz", - "integrity": "sha512-2CvLfgxCUUSj7qVab6/uFLyVpgVd2gEV4H/TQEHHn6kZTV8iTesz9uo0bckhwzsh71atutOv8P3JmvRX2ZvpZg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/ffi-napi/-/ffi-napi-4.0.8.tgz", + "integrity": "sha512-HxPBJTLCeBJy9XkLrP3C2ZyC3c+7lOHYcni5XRB8pBxqr5udQmFErN6oDxlbBZa4cHaOmNJMaGmWsbyybUoHiw==", "dev": true, "dependencies": { "@types/node": "*", From 1ec4fda8fccebf11a5f47f1f469bb5613626ad7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:27:00 -0500 Subject: [PATCH 057/176] chore(deps-dev): Bump @types/node from 20.6.0 to 20.6.2 in /node (#461) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [//]: # (dependabot-start) ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.6.0 to 20.6.2.
Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.6.0&new-version=20.6.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 1aefad7d3..eb3cabb46 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1159,9 +1159,9 @@ } }, "node_modules/@types/node": { - "version": "20.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz", - "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==" + "version": "20.6.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", + "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From 326a4c86a811d540e5a238a8df926b8fb447c6b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:27:18 -0500 Subject: [PATCH 058/176] chore(deps): Update cbindgen requirement from 0.25 to 0.26 (#460) Updates the requirements on [cbindgen](https://github.com/mozilla/cbindgen) to permit the latest version.
Release notes

Sourced from cbindgen's releases.

0.26.0

  • Fix swapping of >>= and <<= in constants.
  • Add support for #[deprecated] (#860).
  • Built-in support for bitflags 2.0.
  • Support for "C-unwind" ABI.
  • Generate bindings for non-public extern items if they are #[no_mangle].
Changelog

Sourced from cbindgen's changelog.

0.26.0

  * Fix swapping of `>>=` and `<<=` in constants.
* Add support for #[deprecated]
([#860](https://github.com/mozilla/cbindgen/issues/860)).
  * Built-in support for bitflags 2.0.
  * Support for "C-unwind" ABI.
* Generate bindings for non-public extern items if they are
#[no_mangle].

0.25.0

  * Re-release of yanked 0.24.6 as a major release
  * Update MSRV to 1.57
* Support variadic arguments (`...`)
([#805](https://github.com/mozilla/cbindgen/issues/805))
* Add --depfile option
([#820](https://github.com/mozilla/cbindgen/issues/820))
  * Breaking changes: The `Config` struct now has a private member.

0.24.6 (YANKED: depfile option was breaking, see #841)

  * Update MSRV to 1.57
* Support variadic arguments (`...`)
([#805](https://github.com/mozilla/cbindgen/issues/805))
* Add --depfile option
([#820](https://github.com/mozilla/cbindgen/issues/820))

0.24.5

  * Don't enforce tempfile version.

0.24.4

 * Move expand infinite recursion fix
([#799](https://github.com/mozilla/cbindgen/issues/799))
* Add with_cpp_compat to the builder
([#796](https://github.com/mozilla/cbindgen/issues/796))
* Handle never type in return position consistently
([#780](https://github.com/mozilla/cbindgen/issues/780))
* Fix warnings ([#816](https://github.com/mozilla/cbindgen/issues/816),
[#819](https://github.com/mozilla/cbindgen/issues/819))
* Updated documentation
([#788](https://github.com/mozilla/cbindgen/issues/788),
[#791](https://github.com/mozilla/cbindgen/issues/791),
[#792](https://github.com/mozilla/cbindgen/issues/792),
[#810](https://github.com/mozilla/cbindgen/issues/810),
[#823](https://github.com/mozilla/cbindgen/issues/823))

0.24.3

 * Make struct expressions correctly generated through
typedefs ([#768](https://github.com/mozilla/cbindgen/issues/768)).

0.24.2

  * Make bitfield operators use explicit constructors.

0.24.1

 * Add support for unary negation
([#765](https://github.com/mozilla/cbindgen/issues/765)).
* Make more bitfield operators constexpr
([#765](https://github.com/mozilla/cbindgen/issues/765)).

0.24.0

 * Basic const generic support
([#759](https://github.com/mozilla/cbindgen/issues/759),
[#760](https://github.com/mozilla/cbindgen/issues/760)
[#762](https://github.com/mozilla/cbindgen/issues/762)).

... (truncated)

Commits
  • 703b53c v0.26.0
  • 56f0feb Update MSRV in Readme
  • 9b4a149 Add support for out-of-line bitfields declarations
  • 35f2e44 Update URLs
  • 85eb0f4 Bump clippy msrv to 1.64
  • 43af1eb Handle bitflags bits method calls
  • f72e447 CHANGES: Note #[deprecated] support.
  • 1473070 utilities: annotation: Clean-up deprecated parsing and getter.
  • 0fb5d07 Add support for #[deprecated].
  • d8355da Support "C-unwind" ABI
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- runtime/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 1357924bf..2b04ae567 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -35,4 +35,4 @@ register-filesystem = [] # enables wasm to be loaded from disk http = ["ureq"] # enables extism_http_request [build-dependencies] -cbindgen = "0.25" +cbindgen = "0.26" From 98a4244915b057d7123db4dfe9a7ece21b2d9731 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 20 Sep 2023 17:27:31 -0500 Subject: [PATCH 059/176] chore(deps): Update toml requirement from 0.7 to 0.8 (#459) Updates the requirements on [toml](https://github.com/toml-rs/toml) to permit the latest version.
Commits
  • 310f6ee chore: Release
  • 90da8bc docs: Update changelog
  • f3e120f Merge pull request #608 from epage/enum
  • 58a7101 fix(serde): Support struct variants as table of a table
  • 88a4dba fix(serde): Support tuple variants as table of an array
  • cf06b83 test(serde): Verify both Table and Value serializers
  • 4ffa44e test(serde): Make parameter order more consistent
  • 2b7c34c test(serde): Focus on string serialization first
  • e2a6a1c test(serde): Verify existing variant behavior
  • 3f3e832 chore: Release
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- runtime/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 2b04ae567..36f5a9b22 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -15,7 +15,7 @@ wasmtime-wasi-nn = {version = ">= 10.0.0, < 13.0.0", optional=true} anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" -toml = "0.7" +toml = "0.8" sha2 = "0.10" log = "0.4" log4rs = "1.1" From 6e8c28b0e9ba44cc74189ecde2f9018f2fd93abb Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 20 Sep 2023 16:25:48 -0700 Subject: [PATCH 060/176] fix(main): improve the way the kernel calculates how many pages to allocate (#472) Same as #471 for `main` branch --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- .github/workflows/kernel.yml | 5 ++++- kernel/src/lib.rs | 18 +++++++++++------- runtime/src/extism-runtime.wasm | Bin 2669 -> 2679 bytes runtime/src/tests.rs | 22 ++++++++++++++++++++++ wasm/reflect.wasm | Bin 0 -> 4823268 bytes 5 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 wasm/reflect.wasm diff --git a/.github/workflows/kernel.yml b/.github/workflows/kernel.yml index 8b235df5e..9ff04ba88 100644 --- a/.github/workflows/kernel.yml +++ b/.github/workflows/kernel.yml @@ -27,18 +27,21 @@ jobs: - name: Build kernel shell: bash + continue-on-error: true run: | cd kernel sh build.sh + git diff --exit-code + export GIT_EXIT_CODE=$? - uses: peter-evans/create-pull-request@v5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ env.GIT_EXIT_CODE }} != 0 with: title: "update(kernel): extism-runtime.wasm in ${{ github.event.pull_request.head.ref }}" body: "Automated PR to update `runtime/src/extism-runtime.wasm` in PR #${{ github.event.number }}" base: "${{ github.event.pull_request.head.ref }}" branch: "update-kernel--${{ github.event.pull_request.head.ref }}" - add-paths: "runtime/src/extism-runtime.wasm" commit-message: "update(kernel): extism-runtime.wasm in ${{ github.event.pull_request.head.ref }}" delete-branch: true diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 47b863ffd..e055d603b 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -87,19 +87,22 @@ pub enum MemoryStatus { /// /// The overall layout of the Extism-manged memory is organized like this: -/// |------|-------|---------|-------|--------------| -/// | Root | Block | Data | Block | Data | ... -/// |------|-------|---------|-------|--------------| +/// |------|-------+---------|-------+--------------| +/// | Root | Block + Data | Block + Data | ... +/// |------|-------+---------|-------+--------------| /// /// Where `Root` and `Block` are fixed to the size of the `MemoryRoot` and `MemoryBlock` structs. But /// the size of `Data` is dependent on the allocation size. +/// +/// This means that the offset of a `Block` is the size of `Root` plus the size of all existing `Blocks` +/// including their data. #[repr(C)] pub struct MemoryRoot { /// Position of the bump allocator, relative to `START_PAGE` pub position: AtomicU64, /// The total size of all data allocated using this allocator pub length: AtomicU64, - /// A pointer to where the blocks begin + /// A pointer to the start of the first block pub blocks: [MemoryBlock; 0], } @@ -194,6 +197,7 @@ impl MemoryRoot { while (block as u64) < self.blocks.as_ptr() as u64 + self_position { let b = &mut *block; + // Get the block status, this lets us know if we are able to re-use it let status = b.status.load(Ordering::Acquire); // An unused block is safe to use @@ -246,13 +250,13 @@ impl MemoryRoot { let curr = self.blocks.as_ptr() as u64 + self_position; // Get the number of bytes available - let mem_left = self_length - self_position; + let mem_left = self_length - self_position - core::mem::size_of::() as u64; // When the allocation is larger than the number of bytes available // we will need to try to grow the memory if length >= mem_left { // Calculate the number of pages needed to cover the remaining bytes - let npages = num_pages(length); + let npages = num_pages(length - mem_left); let x = core::arch::wasm32::memory_grow(0, npages); if x == usize::MAX { return None; @@ -309,7 +313,7 @@ impl MemoryBlock { } } -// Extism functions - these functions should be +// Extism functions /// Allocate a block of memory and return the offset #[no_mangle] diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index b70cf39dc1365ece5beaf938d7d2f13f38a0ffa1..12043bc383310cf81b232c90c394497754894dda 100755 GIT binary patch delta 62 zcmaDW@?B(u0uxi4z-A>Tdq&3Xo0FJB7+IYPYLu8JZ)1t$S754DVsiTbpSjtIAxME~ RvmC2CE5~dG1_oXr1^_|d57htw delta 51 zcmew^@>XPn0u$38{>@5E_Kb{cHzzTNFizgh636BA|37oH6GM;!!)6UucUF!W3=9ms GKnwu884fD| diff --git a/runtime/src/tests.rs b/runtime/src/tests.rs index c4d35fcdb..d3417c601 100644 --- a/runtime/src/tests.rs +++ b/runtime/src/tests.rs @@ -4,6 +4,7 @@ use std::time::Instant; const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); +const WASM_REFLECT: &[u8] = include_bytes!("../../wasm/reflect.wasm"); host_fn!(hello_world (a: String) -> String { a }); @@ -289,3 +290,24 @@ fn test_toml_manifest() { let count: serde_json::Value = serde_json::from_slice(output).unwrap(); assert_eq!(count.get("count").unwrap().as_i64().unwrap(), 1); } + +#[test] +fn test_fuzz_reflect_plugin() { + // assert!(set_log_file("stdout", Some(log::Level::Trace))); + let f = Function::new( + "host_reflect", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ); + + let mut plugin = Plugin::new(WASM_REFLECT, [f], true).unwrap(); + + for i in 1..65540 { + let input = "a".repeat(i); + let output = plugin.call("reflect", input.clone()); + let output = std::str::from_utf8(output.unwrap()).unwrap(); + assert_eq!(output, input); + } +} diff --git a/wasm/reflect.wasm b/wasm/reflect.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c89222632d9e3b8f977071ca979518f35b8e0748 GIT binary patch literal 4823268 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

9sCwk)*NJy+>j=4E4wOrN0UFRQ(f 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

Mns(T3NjP8w`q$-HH0SuNfv<((8qR^P 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∋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%0A1lA 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⋙FTTOpi@I9?~^Wg8bEFm1AB_Mvi%^6U(n4H8 zg=+qVPLlo`2@3|To1;(Orgx<)Fi_$!VmKAFAPZ@9x=9>A45xx-Lzmc+L6F#9$uyGm zSetW8O9fl+=$y<>*P_+e0}%SvSLQ3S3b^!e3Hs57kPR$bVrFggVOa)A`Ub`nmc;9; zYT-|sNf`xklbChszq0~_UarxatC~J*YuHM9UzyZi7{anFF&;_j#ilZ&3hE7!>YP|b zh!aWhSZ7-l71pC3jNhed7cKYFcVQN+oy`*KjGtq5iRWp%#49Arw-cc^=dO9FH;1@E zZYR!YRm;IzHr2eOqFeqN+VwT=nwK6jqO+@sRCLSlNdsTTUGvgjoDB!L2djxx)K!$h z$H_TdgLc3bLFrs%uuf&tEt=|VxtDHH8@NF?cBaa-+JrcIB7^NLXb1|ajxAwiqHg=1 z4xMe6B3?72_bT;V6@Epic$>(mYlUV_psu(hu#2@Q=UVX~K+P8mo*G2hmHA)2vEQ0JcoE#cm9$ zKNG->>s_{gW^;4VYOI-H#|T+e;ozvy_YN|dY;hB~*Nr`-n`rEoMzc$=!zu!M$Md+;Mto*9vVKsyeiE$9gl4IRh6<* z{<=y{3pMlR7gTCmbTKsE1I^qBm&ouFqgb7Zgh{%y%Xuq znnSHLZet>x`ocy?%6%}Dfc!ePKN&5+wI0oVpb%n8iH!g(@r6djF=C2Y0se^krD77`ALH<8_QHDq?*>Kr30P&wg3Q{Xtf0D0pY8 z|Q_q=c1M(_A7*DU3N0yn8K`}o!gkWAhMI=f-u7gI7X(b&WZ~=1Ntc{^u2*hAxyu@ zBZ``n^bW2%Sg&P^G(!6#u?0>an-1NrCy@qir|MPWW~8H@Ot{B*>RNm*6Ls5ZOqRWs z3{WzRB)JmF#EX^mnd;YLo^ugOMUt3%Z&-t-TKz{4C7)TD?rvPZE-O z#*HE4YMv#X3C(JrCJ*Wbr&nxbUUpxTsaZWDk%I93L=Pj`1)!_RFjU!mV?68b1ZkeepYH*vc^jt+SmEfQ-0Gk8_Q9h?|E z(nXIx(Olwtw5N!A^huRH`pi;~UjK{=KNs=wE%I|mFs;^lwD)sIwVyqu!1N*R~2hQKm{=7=d*%U!A$N0%=|oD z^fh~s4uZt|d{&_TywDxzX%@RP$keP9k??R~D%smewpFQSFVu{H+x(nLsy{#BW&tDv zw~XK__h$-;kinnGlGL}8@VN(tfqJqH-APp7S0LNstolo0Jf*}WC2Nx;HzK)FrC+D7 z?c7*E6_oy6GM9KjG9M#pKOLFpCA*U8p{aqM!U9)ec?z=xm~?NI72zEeM}p|4;gpyp zdH?4XpyFb5KEoZpmslz+|J6ffN$L}yw>l)gpiuapWE`D8Iis4b+xh|?pxSj4Ve&v< z@&A;5_E~xND0gyZ_1N%E&iKdABD1f)$Am zl>D6}`A?GV&t^|FHT5sm#3pYFX>soD5z6aI96;Ig9!jooEQvtbd6FGiPtVRPQGWm` z`8SeAjLDs4)vBmPe-CYpO^hhgnejr*@m@gbe2Nw-5(~*?wGMA#X0henBSh4-=dfYk zH_;6fn7y(ZZWND3Y>nRhh@OvQx%7UCIzr#TZom{Ad-HTPlOqZRvh<9^crYV26sAsm zYmsT>gzIFfn2}H|YoQl!G>&QInbExtrSvfdSt%Nk#8sw=S*({=sPB-yZO0V|{CNz^lREv{iNfbRk! zR<<@ALg632;Od1T!fL5xa_WVx05lvySy+YH`Yov|!h2KKYT;`Dfubca>6`mfNxFPf zB|Qe1bQL(nZ(sM9+xT3*iV8&m+>t}uh-SK6Wucr^pxIR$?CGg5V~5aFr%_?XH;nWHD2SZ zCHtE*mr;@WKhZ&#ZI>3pyW(%VzN5iIx8!8f;8cL^?m^PkpG~-x&(FJym|(|1kvNq? z;!Gvyk|ed5yqyf6>br=C3xB6Vcok_Pyn!_7QV(1rBhqyj=iL;@*`%yXRx2S+3m*d+ z&V_FJwwRG!3Fx!18fA#pW3Std0Sy9S2o*_6Z-wx`b_d%UuR^aW(c!5S3Pmy*4n^&Yi) zAkJpfkCQ!3v>aX}?w2zjRI-?)_IZ+RE}+yqQGg`K%7?0Roe_Fy{v=PKKifn^2c`NO zNJd-;V|z7URz%l{^jtH>~C+`{8dXjZ2XJf7Yd+{?kA0k%Cx z@-UcDV7%^^gI9n-@p|wc8LsA2sKJ|bhj|p}B5LhRgNv^V;cSZtC3*8_Y72%`xDZl?4%Uvep-vVPzx%(#@W6#z5DMxqVH-seM<2~tNf zYzf=D^B9Gd1h^SwBf37Sxvt)a0?dTHuVIk#xt5;*4Me=IzSE%Dj5w;RI23boivPJo z#oBv&s4}i^J#||tqUo(5PzY0vl+pY&6xTtE=D(A@N7>NzxlQa`H7`j|(038#OeCS7 z%(f z8*Y_|sWut)RdWQ4XI%sDHWq>8cCYFHo0j?>fvVLbI6-m>ntdm7bl+UZ`vs?i**b;XyG$U3gTSErch<*(R4d8=kEx>q>7yhM#BLU5_xO z;rK#_M`g|y>_QS2{^~Ee3-QgdWW(b~^owkK+3X6kHMXb>uOnMmq+$5}*AX`XzTpDi z>r&kClR>!2_BPb-S8{;w!(^YFLbAi;N1W%*qBCA??j`~-$u6EeAZbMZH9 zF^~}gZZd`D&GoVUZ<4zLYdD=`BnX|Ow(P9W#D9~V3yjPU$!p0#b32bap6BZljo#t_?i#H%1ipb4+M>=8Q|f)S#o{*0#Q%A9m1 zU0{`~6f457f!$G5_jB28ueP_v-&5S0tl?A;?gIe4vQ?{;aQ;U~UFIs@QJ)@t+&2`Bh)oo>)#!0o20t#^rqH&^|)NDZ7B(T;Xb7c37>VA5Zgq}td~|< zaxOB=lGZ9qTB|H+{W(j1j4fG8LX{<6LWL!>sA0D%OZI${(T%rTSFW;T<^QRy(aQF_ zh{$EZaf=LoioZAFZvB=1w}6dmowdlX#Lkr&jl#0l zV?0}`WA%T+fSNtwuW#jx zyvp*;@Y`{!ve~fX4o+&7tqTu;0i(x5^;R`N8{j+=6;DoB;pu&pM~r#e%UIKh-2>k#_{+s>ktVXE;CO-A%}bM z*ySl7F+u@vYlVUazWO!`1Fseb-?!U2C`Qw zTd>*n0|H`D4BrGAO?Nq1EX$7olf6~6O)hgM6iwGtc!5k1G~dg^HP2U}c@b%%`3ce_ z|Gjskd=sugx9&XJ;VIL7?K-q5tOcwc@KE@dnI9;ewne{H$DdF&pI7_ z;|od~*y57DBos@Ecqq86uoVDXe?W?o+iXn}Eapt$rM}<=x*)d~J=c~x zCa?lv0)m#@)%&kRWRx`>27Ud+eEml-Liw1=Y76krEmh5I(XSF z6#x@1tc1JF*X*b)Qs)T@MCyQtYYtUt&X6Wt@8MTC_X)HN^-RYa47tO&yT8hKY+VuC zy1#ZdEE=6Fsr34GMJp91tMrDI7!q5ZNjqu%J!n(T)B1FWol}%Rp&-jCnxFaV^vNzZAeB}rZ-N>3|2CdBzt1n zM??6SmiN&xcD>mrNJfOYn^^rkMmAJmQGt;BryHUrz)%x;3w<#&7qsol`rJtFdv3l` zv_}z<)&VJK+UZ-w{ravE2wj=6ln2TMn^7`n?t2%`R%M45xx{4s-d~_V<;1DuAPzCeTco$s`sd#sZ?PQXOAo?Rdso<_3u&Mr3=^ zT$vkwqy(3`O!m)oo}pn*tv^QnNW1?>tslAU4NKt^VQlto53l)slr4tiplWTDDdFj4 z>xy)$f#DT#mIlkLLLqxB3BQ*&g@@HD3^yig^6J7Z<7^?^nXJq~-kveEDLjbmlp%=L z;g4+`Gg^~ag(m{Cp!mjvEQlXsOzj_4*tWE}{k5gd*|rJyFU2z%`h&XQ(Q!b|wn3eF z?u7ntUGV4tAZHu863_J5wq6VQhg$C3;g#F%+~GgR^Bd@|?t-Ta+e&)ghQ47@XFXl` zV4c{u6`|inJX=)RwnZ1Vm3YpC{?A?TRNFR4!DFP?lj`^$`VkMK=Rr+a3c|Suqhpus z2XxKcgFjYzy_$P(IOi_K9i4Sla+lh$ zMJ;|gVAfBQ{=rO1xoLL;AM#GoPqoYjF1KrLsXkYdb_kNL=|Y-(Q6cRL#;N=lORMgU zC28*>sfk6)(zdB~71EwwN?NI=F4K?2Oye*T%`i6kXOCrY@r#T{@VJpmW!=#AuFAWE zxohrC$Ol$83wlG3zM8iS+%ZOWdd#;#2VPUgNT*?3HficC-VD^Z#$$HakohAzvOkfq zAdQy|VQWX}M^fJcRTrNFED-VYT@cTqwxJu^o4IgD?#4#~{Y+d*V5>^Dx210H-eSs1 z#~V^MjJT!1d+)6%2y><54dFJ9aJMXVSRtH0xTh{duZ?EhVPnai%$=VkWKgof)&g1} z4p(2wPm;;5&pyl^4{+!6NyWx8xlPnSMb`I8PoeyBBVJIUn<17P@rnw)j2HG{A5ffl zJ)p;{rFor?o6i5#!pNuj^GxN^7JBFitwNxXRyXV+3OzWe$oH=+R@TW|(ci3~?sIU) zTL$tH(uCeYd9%`;;y@bG`b#J4k%ky)hVQIe4_leFT_x)*chCK|3Ls-315 z8ZHBBrz6I@)#==|J7~qilrhkB>>wSKhMJlkq-NAR1O$aj?Q!bf z$>kgNr~uUN(qwCMA(v;-dL}rohDkj<(`poIcdKPXG;j+*Jcmx_IjX=~Lqge|xCTD? zErJ!b{up&o#5uuZQeZ~Rj#w|?SrKX6u0}bn69vAf%zZqZc`<<%&QGj z6eTl*7{9jMioWEZ?D*kPej4>LxQ;)Votauhfvnr{;u<}V zZUJx#lV20zS0rzXaJvkgEfoUY-H)bszyBAq&ED zMZzA9lFJIkPlafwsCg{+0!IyYz^`?)pnSL>YaGiW5{Ev4kp0{yK#s2@bA7L%-L%c9 z)W*m^8^gNLX6AZr%Oo;wnB_8K<}-X(BFSz|LY?)q;pIB74e%MSmpX4o>8scZp`tq5 z&Q;Ycy~~N~ERJ6y;@1mUMPK0+IIB?mla0UL5bG}qO2{dv$QRn2v#)~ zl^%`0>;zNFp2nrGrIj*aT3ceiU~{)hL3aBNjWksch(0e2J&7#=Zdg z?A6DVH&K>rjAGB&Z$y!F<5rfOOiJ%nPmT!Ew~|Q&iR~}v2dRsC+5eed_UqVa9w2`D z^FMgm?@~Hix(Gg9*;cL4_}Cwh6Oo761+ub8W~(#n$`1TFvh;7kX0q95J&_hL&lWqm zK#Lz;jb}pUg7Gi0{0qwKzsz|Aq0Gf3*-bU`@Q#IiQ$NX}4OGakXo%7P%&iah4Gy1hh3#d?GBd7+LRU&>LOlrBy2c+yp<-%K zAT1nkp?f8Tvg@fvxP+Gx=R-%N9bp8=h@fE{iD>kltHQDM3U_M*8eM>Nr~>PTde<>_ z7)73iu{=lB_wqb=!q1nNM)Rcr@qDSgV)jGPeEED7SJx4Z&6i`B0Fuyed5*fB*epXT z=F71!0CS_Rj5t@Lz)YI5P<~&;`!G+g(W^qby6hcRMC9acC_=Z;?M9|o2rhv+{A9mZ=q>;xrxonZzVX__|vVI#Iv=n)uTPfh+jiU-Y8T1)48`L z;Ok1Q#1wZ&RG6gKF|B${XrCN#DbXLnk*cooLtqO^FGhyz)Ujo{y(vr`1(yzCozf52 ztHYL_dJi~UuMS&!DeF?pr<^-~UR1lCDZI*icU`IetX`L6FQsec*5}fKX~Q+2y_c@k zS`cilr7zc{Pr$b}s~=?#unm|+=gy%i+ra8Mirt;Drr_^dUvs6dM!`R01v+z!thgWe zS6X6oP5L8U$`rS1kL&D%RQE;5)CW)=7gfmDA)Pu;cVnMpLVY{oZse)! z)(iMZ-FFlc|5B2Co;NHLNoH~2sfWwZ)Z;!c+<(K8zU3A6>o1_? z@-w6)W3n%oLYKVpP2QJqC#D2Bst|a^Q_P%Sz`DefGVBGC^cy6{qawLL-{STvk_%*U z=F$>4o3s1_Z$pyJ-7NSbt5i03hYAaSGK5S`J}*;s{T~!fdp!9+>=^cVNe9efU)EnQ zQLZgg8L1E3YX`^KV(lxS)<~+AYuAQh64b%K+MVL;pt|3Z{WEv4UE(>t-izhs*VDqT zuE)!qyK@H{bcJ>`Gr?6_@g}0~)0~Q#7repAfF_GGki;a*#^yc#`s972JlDI*~HZ!Z~`$wln?nWssRUHT6OgEQM^- zyu*j=vv=}Ds{}1VCg$`+dHq$lI5%Ag&G~abi0ZyLP~A)BEDrRG9VJ(AvOVBKjlNpd z?g4~RJKim-6;=Y$9@hSqyt-x>)_y_O+M%xY+c;aOO+hEu(hhZGji9Nvh3sH8Nt;W2 zOncJb|jI?2ry6B6C5 z|BhP%ZXCE=zeFFL)bt=Qp2eqly5_kgqw$MIDio`L8T|+H{0TkKEy*Brvdjh>_izgZ z_088hr|%b=JFlT-+i_`bZm46zMH`o||wtPl&A!+FTjNII1fqoRaFqR~H z0eUYBdgxb}H>Qk9ca!Xm>;g|vL%QiJ4~q>|Y;f)ZP*Xf=MNk(7YXKy)*lj|_HSfo^ z`88;^^E5p`EpR6TY#j1?-X{X(ix-y%bAVu15&e7(;<{iTS{ZE$Da|_|=r)L1skqz~ z!9+yd8XW7@+#k#))BG06B1m|+{Kbi$klY`9<4G0-No;S7(WtvWXaLfBFL7T`h5y1Q zjj}9wL4{WRsp*qoGKOgfvp9GNn2CK_3ofpf)xEJ#2M5a7D}wuI`cozYzRZ((W?GmW#Z!kDLNu?r!go z7hyRR4zU88fS{Ly4=A|ii>UHkP}U-M2Wx?PJGjsL;cfSb+|#UYa~ypG{|6xUdxF8x z{5==|kjyu3c{0uY5q%CMlOSo>A;^LGELhvy{Egd0iusH)l%GSip_d~seH0wv<@^vF zB{_4T9Qg-tX}9ZB9N?ZaGjW%fb4ua?lOtJlgeR}T1!S!I4x#JXfI7;rvWB4TsBsIfHn2zP>cCzK@>&nqrG4K&$PtE%ZYC+pUv}_NxmkvW}UjTRk5Jr2? zp!O|F_xX~m5sGiC)iQjikhRPkWGwy&$~i}kIDU!9)g<1Qoo!2`dJQ;3*UK~)=yKSH z9g;K7m%L`GrJ-q>H55vkRe;AdFOx{DREaC0=`pcL$dI4 zZT1GL8TNmfELyRwjoJ&O`n+UUsy#GynWwM_m%g6D4+2c;E{B(lwZ`~82wRYZlO)e2 z{~uIvN~yOUSq7N~Cu6P#K@n$^{Cmc4AK<4kY;lcWOp8TV{cP2go5A5vC6G zzWNX8|0~13XL_uu(`X1wZBZLiRvqY-^tVTup=$m@LWh5o`8?|I8fyRpIwo|zYG0wy z-52QaMjmPgRabO1!qT~8fDJjD*`=X_6;1Mfl8H=Vb;sp2%?07d&7Qek6B|$s0VHj$ zQrM=?Syx+fx>wGqm$Kjak~f7jo>-bUr2=542&>Nz*PMoQ7xZQ{BjXKZFz9^UKJf)F z5cB>{#4FdW0$>7#)p)Jho2diGwK6AGn>z_e$#EO_LdkK831#6pE(VzJC}Oz8F$hnd zLh=vpx^kBdv+I^lc0KP+iQM?!QiiE#Rv8up z%rF(?M!%L$?8hoLaVSa6=_LGr)Edl-+R@Z%sjUL*HiZY{8`|eir~*1AMsa^d|nmnU*aqa3N z$vyMBvYH0)&aWxp^;m4}E|gVJ-J-3|02woaq<-;DZ0LYzqJK6W$l`J@?#$Oo)uSP~ z#My$4vTD-2J(|UHvv~Leg>E9)8=$Z9i|BHRb+Ih50ZGkoNf>4_Rm*Oh1(L5q)PoU| zIi*< zb0X%1)-QguG#RnDDV}j^H8tHrh@e@uS+W=s*0w?QVl*DSx*r&2Ytm)&+a}aG%MrAC z&kI`JHKpYjdB5jfkA8eHcmCYO?J~8b-Bt~y{W9n>@3}qJI4ETZH9FUznQX)biL z>chVVn$zo%C{sV|DmgH7vgOqfnNuz6$9dvgba;*DzN^>J#ONNr!-zHs%>1WSiD~TK zLyVczLHMkhTm)US90``n=@tQ8;xL-A=2(lE9DgLvL~&vcN%At1K4@;(-XA2C+enot zwGrqcar=^wD`+cg5ongGGTvh`9CGAYw&|t5ttM+m$1i9kYOjd(Ah?RyM&Gv zTCO|awjGOYy&X*R8`wLqcJ4j+*^fNqn%Iv7yVz*Z{=~JE%gy5;dI{nic?P>C2C~3^ z*=<6BjqA|uc{cw<@;(%2@=W{?vr26# zP{z>Y3)V#lLN(9U>Qe4E7kXIAyV$DHrG`T?8%rc(J=lwQXHb zwY;g)$1k{DymMZ5`wQ7v4_d8@xYymqQZO8d-h2Rg+g&3ChvA4A>V5pWJI8zJZTlVI z=HDVq6fz<5@$2q)Qqa5(ge!om@bPH(E+22^eO&hNkd^WZ zLh;fdqlHAa)fNaf7coyQd(2+*b66X*Lloe+5>v?}wo{_hqr}eShVCOIzTgws50E=m zlQdV&O@yfE2+LxLtGymb6jo~fNpM`IN&R(@v;lEWSAWIb6Nz0`7|OxaFdSe7ol;Gy zESyv-(8I2a3hpl6k%ew|dQliW2C&^FKgzquIPU%}PhH$-E{T#Z@a?7B}JgF#}e)KDd{>fcjriHS_ zrLXxq?{*X6?Buc}%5uE5#uBJDBFX8*HTn_KR7Yb_@8)v{<7znf+mea|VPeAL1rxpe?y3`BLpuFdBqTR2Qj%p*7PEg zH5P~8>dybqE#P$;Zc1;j!(1(+^7VT`%ZvnklcPRESM9lIS*S9k)6BGHRX zNThMXUw}dSg!@Dp>i3=0>gwDO0F!&*HTvl0sO{WG*P$`1`e^nN$e-d)TpjQO2Cl@% zcN@RpN6onDY%`lGFr{9fIRmguFZ>6;Va}~S)Jdz+WCZ4$BH!oT6WocP!o7Ln+y$|| z{pqqh{Ky$LcRU(83pF~I=<_WLm(;DivxALEKH2d;J#76%y-O^t z?hmas^P{!a%yadE`Z|(fAS#-Fk9AK9mz~tI=^=cWst5;3%t!3*+#zdYP6li92d~){9_mx!%Un zRA@LIFI>Q=1g&%A!b%0tLd126J8Q;S&)yWED;yR{i%=7+Tc1^u_B}HI(k56Cy|d;y zcnUXGN}E^H1C|%uB9nG~ByB}0npe{f>Sgx;z`|1zrqoQDeLn!0|02T3M`|Zc!U3T@ zpC?g8k3JpgwZVbvAbA1pUak!f}=LzPn}^G=F!OnBR>u8})0Y7u`N4fe2BNPbqJdt{^59MgTIuci9k5yUsbSJP=Rlki{011Y zI6G7IiJW~28G1tdluzl3chy{hrwT_#)gA*bai2N#(%@WG+uBD9AXthUYZAS$Ml(#| zvWP`>P5h}wLG~l3f0*@G=coc%k>*WqNy6u`IzYiS#;i@NMHkzoj~woG+!d?={i{e?TV$m$f=G9y~9 z#DUn9ID({Y7RfW*>A=>Y$sh(T*w&{(arkA|cj()He zOviH9PE0JtG}}Xsu>Bai$~D}z`kCCgC-zu{z752>%0!@S3Nt8i8;G9wl6=EmKeL*xS2tFn^~b5t^%7zI zEMw|963^|!T|d*iIj%?reQ!^%{>haXq1Z5nq{5vp`FHAC(b-&bBN_p~$5dVmd>CJ* zA==+1=?86QT1`c3sOmuEZgUBFtDnXvdEYV#?X-NmeojvDC;QgYO{BpC)b@>SH(o} zD!eMAIk6^5+lC}_xbsiifC#Mn)xBed9#?>f^5PmwLnTI#Bv&V4kEGSGT$q|f*>*p! zQ)@BQ!GFzoRP*BDtKq;UfFFni7!(n1+jXRD1sK5xGRKA5c1wkXlHTYUWoJLif=Ss8CmD8FEds>L$FU>T4qivf?z7a-)}agywxtJG9~Iu^o)$b;8lFzxrF^JX<#O>#xDZ zrrdWvX9nC4URUvypOYM9?Ht6au_4p7aoqZI9AAa9#r4tQ%xy8pg<58nx>d<~Yrf>0 zwrVQonHI}5h6?wzr9koADwNfkS=A=!(2BeA2bJ``hO$Ao?25gMTew54!k!fU;(LLhOsz0|~ z55Y$O^4o+x$*|ifHi~i*b(9Fk0miQfWpN8YJcmwK_46|#0u#04U=RaO6~cBL!@a1w zz7jQ(M52sxnv{;149Kp|-N*IO>B{RYXLS{4QYcSfOLejjY{hEL`#To5y80->+#3~& zy=mJnxcvb8DzuZA;_rV>#ha$0s2~3>3yS)&twxIv8E}Fu~H+t;-7ymgnZyb$iEYqivQY_G`MrC8vh6?P3NgUxU-G-a%Sf{X4gsEu5xMFk9b%WZdVCSrDau3a0$`cTK-0yePHi!K?y`gm?i;+Z7Y_u^ee`|g& z^(e1r-#|Ub>)E$LkI(x!`y|%dG2igY7M-1pTC^a;IHi|ig<5v-YSBaCNt~Y45oXf> zU_9HF_s_!0JPQX$gquN_92j(ipnY~kcwt0%l?d012sO@=`vtv3I2{QNw z66qo({d{={Bqc(A*Sm#>*}+Ou)YYIGvGBWzspo4Abtc6YMkAIyN>)RiWoLqKCb*go z62}SVHg$TYH{r25c=Wl%OX+%7JD;Jrvy557JA{+k>fKY^$=9>56RUU~mt84uMSZDJ zf792$XvKArk(Y&UXOL^N>_M@RPY^J^M^{3ob|FN6N?aDQcPwO61YFdmkdwO*q9!&W zd@VwiQuHf{y5heSmHHa@w(%qDH2)>)2`;Tp^*RHbPH`%Z{Z!CweSlL}=kRe)M{A4-)xk6Ui<&Y+G|Vch3yC`@H|p|9S6cZr!Sr>eQ)Ir^4;&?$I?{%?Vc|NTH@& z)3Q32$5iNnd<>D1!*xACntBKsXS3>o* z++i~PUo2KnEh~0x>x*@CQR*EvDjnZI9egm6N_eM=78)9Vq^mf$%;z*5dy!_sL8M_g ziZlwBC#?_HBy9~hCY=yYB|SO_chw^k?ypA}9;rtZo}x#6c%dGx;njLf2yfQ|j)&}- z3IAfxFnraXQTU-f>%*_@*^22zKOwBKCyf1lCKHbEnJ^sZGf}vP&(wz-`%G)Nwa-il zclR0i4~%n}@YpyPhG)b%f`!5o2GDSSl31${khzK;%Y8%=hBb*_=YNE!Z_YaR2~c<9 zgEoY(7xA1Ph?kOUx`z9B3z@59L_8+$R9@X2dvlrFt5Jqd!B)*AjtfnZP2tVFg>&|r zO72E(4)r8ANEv!7I>gZ4cX|qWimuF!=$yG#$sCeKjmZ^&6KFD>^ZMeJ{pj~Y&S3S{ zhxd*(xK3~g!P4~=r51ktzDQGFfe%y2ay3dHgwZl{$xz8`9wxfL$g>#s9^Z>NWe{9j z@b3jCT1p06T!9->QR69+XeF!YLhPuD9yajJ5E=L=4{mv`9Ng;FYJF4SZD&Ib@6b=u zl4l;|sXB~mN=!A{sH_CK$HvIm<#yVchJ2#N>=D~3`dW4EAyf1q!kB-Dcr20a{29h0 z2SYyn53ECId#zbwx-Gfr5D*N= zT=#oQ@B0!z;bHXM^|k?^YS^yi#1RCGCvv$n=w+(zOT)^mUP&wZwCe4BDXsbfoTki$ zdaAl-B0;sC%H1QA28FY_RXw|`>esqdE!Y0ls(U69)T%y>s$J03Y(^d;DEkJpu|B{? z!8eoF#pYJzOMNFwV9L@~M^*XVtkr0PVL3GwL7cAf_Nrp)r0YYOo) z!GYN%p=C15dQ=>-Gj%7D7MQhm-TGR0B6p^LMj@lS$hv|Zv*x~rh_&4* zs1UF1n)6cQW&ngtoL}`l?@L}oqU(1|y;gZ2tglv^hJwPA6UQQn#6i<*?_>J>fjhHe zc088tF0$rPw$n0X&G}^RAyao0YSgJjCAaj#jA3CSyv0SSG}nKJNb|rn*O7@rzuC6B zL~}_m*PPX-G+!ik`wDK%whz*~i!7Q=#}sC^JJ6|4C3GKc(_`Tvey8 zQM#8IZc)0I5t-ps`Juk@g~iIfvkhQ7N#kN?o8U{Svu(;WZ&n*v>TH6lGh%1!nMfRR zwqAW|-R9g_?P{dgbfd13ea+b}O|14QTGpvVB>~X}XS)sFa%X!n*4#UrHq2>%<40*V zW&LfM7oDwVBI|EtWp1GAs*UgVKl5dC;QcMNZVBd!%q0bVt|kcMn8KSQf`3 zi7Z;lz?pv#kaPbciK6@$JPt-^|pldPB7o6m`i{@ zUV@oS&q_aP`K@fJrPvmfY-RPyfLgZ(_6)DIIGOAYDW1zhNV`L=t>U6YJge2|DE<9L5qfuIeo`$n8Yq39cWZdeLn@08?d~8VtG}6fM5sa>5WLw8JtfIbllx z7G#ArAIsQIxv)0e<-+&y@(6(9KeUVVbcdTrPXH!e1;sd*d5wjeEtPEn){z+O2=-1* z=vla2q%6Q}H(j_~R(8Gq4pRrVD6Ac9i!B0MOj9tdS$@73lj`V6J7W_+5rRrVeH>n2!B{walbOu?V48E<#)YY|zp% z2WvLHauIw3Kz_kEp3GoAQ+t&t4<@K2werdZ%CTnw;yLb8o}Ocf=NNyBIG&6vHQC!s z_A0Leva97@CPazDm89x$u=Q^MYxyAN5~AkoYN=ZPjc2Rc>2!n@~2FXvtrKILo%?w*>mSapZ3#s|7|dH2-jt9Y*EbQpk0Zw1oLxct}}xh11EJ zkm~$_Nwz+J3|Tvua`~AFv@w4+*%dL6eT{Nv6{`0;w>8O~!p$rE9(Ha(<$11`W9#-C zZeHyFfzB?DR`W@qMi!gtPRT3TG-^{H?@iTi+j)k0ZBrk!ZEC|DpbNPxrbu`i3F^F1 ze=L!?l5o?w>s|cd8VV6^@|_b2H8*kBZWeFkZ1mJ_CN}LD6>NNI&?tu2Ja}8-t)1G0 zheQ(rxxViKT$T*Gw3gRdz12>YMZFH^p`j_Gb+Rt=g3MsH%b5<6+&B^%Dy7Ge%`Z)& z0{iN%$aZp9_m`)nBy~cYsJS3Be^&AgNw2p^TB*P0^J*~!#_=k^)EZ`K(1`?>IRgDM zFTj+0$JU*BHNYGqv?Ix9a6C zhulhp(dsaNGWp&tGibNVsE}(hL~6#G^}woU?c{5ck>(YH&2X#$OlIZjP{>x7NW^y} zB@SH_Am=R&GjS)GI=m z+n0oS?inN$r=qn1er?J!E7_XSre3~wa_!}f9qzjMg%03=>f(p6NUu3?>@EFj$w zO}TfVtgdo1uOKt0tAO13*az+tcpRwMKCHZ3~gcuUx+2&$p#l4Xd&)dezYZx`r%6=1&N=!dM7*f=^e6 z)_8R~8n4rVwQG9`s)8Hx4Kv1iF->lmuS8zGzptd!s}B<&S7p8EgAwhw@!1W^*r1~G zeB>|}*Xx8hyH=ocUy4mS8qQ7(bONlIT8GBjwF9k1Mlzdb*9mkY%!qvR2!mH_-O4xBLH7%da|op#In7 zJ!`>;P3~|`|CflYT&L+HTrs39q4}m_iXzJBB{gO$ zrfL!xy`-jtifxtWG70?%dAdd|%?hDJg1D+4o1@8S)JbW8RMcHUQMbCkg~hh3aQ{p& zMBRF=q8^ty_HJZoShjN#n_e1Lt!ba_y!P$IU0-tQ;CcS-d2*c#J&(;U?0K|rMnuzr zbPh%BpzTmhy3uJJT5)Gq&T15T#7Z8~YDXQbWVL7ik9O!@jfuX0bDd+@LQ!v`hW4TA zqF4>>NKFlfozxf`tKoMmilLi$#Q0bZ?TJd-o@}bR?|5Bqn(Z_f)$wZRU!l-t#;)-i z=R0>{2ZxIFX6zNS+5=K-i8a=4uqVT53+EBPAwyFV!)gEdAMG}IHNxQ&Q%nmhp09Yj zqpM>g2k3R9fmq^(C|ds`Mh;aB^Yc&WhKQ&?y{l`;Gzu%lh1^gw@eFq)@Gdi)UR4>7 z!r5;V0orTLND4YyJtr=-{e?^}9HK7zFowm^`FCd{Joph{i(9U()@}4%#@)nI*R2;b zulztEL7W+?XNQtyNOD&wH-!7DP@jzn@(rY&01F!y zq0w)BehN63n@r&j0ZtDOFc#HVWbshXa(d`l&KO$jKIhJ~WO`!pP|wnm(dTh^2|m2m zZ9D>&bFw`t=AoYDoUGMSF&pxz1D2J1B}r5AQt%FtmDZ+}B+pfhg7RchZ|CJFtuPA| zskf7?%6n2m4tbWSb;ojNYOLO_CaW=h3s-px$*zj7SE0cWRnaXf4DdRm#{(4WMgw|E zttd+K%0A_l{ZEMg-|fqzXx_7G;^#f~rHA^y{M_3m_c`QiEeXqC0^dDJXL`T%P|xz0 zz&z&vr|xG6Wrm@bMo)DmxgEH}CvwG(GYx^vq&uUlJXX$S+5$Ic{l8$X*mK!hcQ1Fi zqJ2+CI%M1T|qb$4+Wj(&&;TU5o%KSm9zH2KGxnf_ztCoaWaZ6gvE)QPLq ztxO-O8KJA64(c}UnzaL&C8cRtLbFS+XF;`$0sWZDMQm)s%v#`Tk0j|TUgV*xTOU+` zMMmIyT}D=-YA2oClc?O^=(#~yARlJSO;Fg!Lse(t0H60p$ShE}eU2peI>`_sY30T_ zd3_Kmq-F2+Lm;<2m?MSl47*{YQ$VDY|BuOWnI#$UxfMvHf7R1AaRfG$vhP};c z?i+tb2>;&=YQ0gQr)N|}%Ge+=4PS}|b>>r3?Mq!WQT5_sOIZ7Rq8SeV3oBtwmZq8t zfonV;)O+03(^GWAGg>Y(c+ZH{j!w4PizCM6-b1M>W{+rmP(F1mj*EXAMPl_l5=E|D zwyG$yun;H^S-~O~`80Bo_mS&=&gwGLQ8{w}N$o6>`mpW@9zU6d>MkHVlqF#p)m@%s zDZ0#N8ckD3O5z3JXU8II9!c&Ml9iXn)JsIiTU3#v>52sCDL@Oyc?#v}j;$y~VV|9J zsBg8pehg!PCjz0r`UQ2HP`c2UT&++zSt8lh3R?oG+k&#NI^eAxx4cPzxSRC%y}Tw9 z{;w{=6Aw;>Cjb*3I}$BFiK;TED>+ZeM8W<=rc$XRs}}p4YwW{uKa=cd;$Gvhvv|VAJN`)y+l<9hW{Rz zt$*q-xzM^xoP#SNF9fwG@`yqU?qg(cS2q>N>dJ<$Rj)gBwXFrv1??MBK1^AzA*x~M zG*M*T;2nS#!eP7dhzjkp?vmI@SG%14(YP>pECDGO8o>#S7+r%OB2#d~*ChfJhfh^> z8sn$pREsZ2Q4Cs+;GwHs!Q#%iFnq@{K8tb$9}73_FLUN}6aKHO_G~h=^;jMQG&Ee@ zDP+|QwN+~B8vI9q9FQH;gV^aA)$B40Aj!O-!AJ8 z{SBayOW+94fzOfQU!)BEw@?Ffxb71vVp$NQ2LW;eKgD^T0U-+o&kh99@e?4PV=E+O z^tSiY@nndC)olc@;2906;?!PjvCHhl#Jr@=OD;-A%9<RcRn~?&$za(H*r)?y zMCoAp12E(^oy8N$XCmN2N%n)~OLx7O+;SIBM2y4*CA(y>eCjp;=tfPBQ9~%igJq#R z1fc1EJeh%);S}O74wfI?-M~#Q*y;Ut=Iv6nWP*yPWDcERvhYX|T9d|O& zkuM`~A&_{q93SWl9uYL+-~QQ=L*Ph#V58gh&wnZSc(v8u6RyxAL@;IlZO5SS{pm(9zT(pEznY4W-; zM?L7=fn>}STM_om6lcg3)n*6;c1z9cyMNx4q8oKFkceCVjnwx3bmgV0*Gy4U;c>{ev14R+M_uX_~@ z$$K%IvfK8uZG+2vs73HMBqckYqFSm-+f5b-U3BqVj9#N~of+J9FICgQJ=Cf-e}mf4 zAP!xNU)?Nj4YRm~NV|;llNzNe{w7OVGqhZo|%3}1)l6xUX^Mq=}B+x6kQ zl;JAX`kKeo0yq5D?x@;H9<>fFFG@^}XY6$^iKg;iGm*?tsgA6B$&4|0ZMrWLv}>un zD_LFk`mzsuc`Im9`!EY`D`?&KdW@;vlb;Wg;; ze36t0#%bV;T0lAk%y^HFX?A@*MBe$SwZ&DJHmK-nlWc2vS&|(Z zUYle)_|QF7twvc_eq}NRm)}T_uyBVS_mM=i(2{R2m`DC5|3S5Av(*HuI1|oI$r?@t zY#Y6_y3AOiUu{TnD#-4IyC%SR&^ku(6@UjQhYeJqFP5VHPg1@d;|5{axJIoLNf=h1 zzJ9HHnmfC5_I%u`BH^q$L}AZG8zZnW3?GDfc`xS~m?tY6hFeUmb@wP6g_Ud9x@VNF z4!dOUGf^v=s6@9eqIN;d z1^=I{iHE2Aze-cp9(09kh)*Td`Iq1ci)InD&?VT$#M_c<-2esZwrT=DHtviDIe=PkPlV0vh zsq}M@{KWr_^aUn89RiKtvKU}~_HpS;Bx}maPReT5!4%Q$zqjHo+Da7;-X#7$$tx3E zw(P*C-MF)}vKzAufTQK{U970M*TsWVuIu3FwPR0Q3ctlrXO>O5Hi6@w9=SBx6+Mgh zOo^VUf4vXix;s(h?O9D8YMJSIdse&@tDk@etfrcxC{rL6vL6Co>`{ms+f_)p_oYI< zMZnaZd(uR0?gZkFjLq|7q0kkm3RdY7qyCDGF?aTPchv)~a4tIg=JJ#4D~_}4i^B95*0 zv^sM1`>)g?5^)?j-8hmFz8I}UB95E)Gmd1`E{4MvgK!+NzqKP7iHqT|C1S|%8?!nq zvjhB+Y%c4VCd#3J8l4bCb!*w;^97VjaZed8+;2_(&!B-d8f2G4#;UFd5k~f9Otv}; z!FchPO8a|JT0rcSv>RE*Ek;_em~8IvjO<>{NK$EosfnenbQ>3wJ-?TcjV*27%0)7L zW3no3qlc(;_flz-i)52xvLSQ}WOuV`N-O<+k!-h^Yzln=*~g`1XB5e1#AHVh3n3f8 zq@7CB7e~iUILVW_f|lyhJ0vb(8yD@zz~#$DD_H6dl)KQATJ}b}8ocjFVEsPR+MA7D zSO;c9Pt_dmNnv|mpmQl8rY{eLT6vxDfPT;8`gkAV3N`B?`_u!>yLO}geaVLVlPI*Y z)Sp521_^NCQDnbhs(|0SmypAjdb9xY2Ov zYFR)sknh>kJC;FBl2gch#iI&*ysP^PyqZU3A5(n0|R3N<9rUrG3)x<(!cCYwkVqT38nq1MPvD{2_C zZDhhBB>nvWzKN_gJ932?xKFf{Ib+3{Y|pwgWxbQngK&sBc{nrS=Qqg7-bSbmd@Onp z33%Bk+)l`t~9DXDn2t5>p1C29vp{u}rut zV%+;a9Hwzjxcg(=i#`UX!A-aqJr2|DD%0&v;)2x9E_x7~0MJffPQ%2>%mUzs6tEPQ z0q{)6^N`j z(9Repnyw@Ycjpms!W6m6)tIdI;LhAH9-tghxsFh2;pd3S8pF-G#rW^8;mPX#1hQ}w7}HwANy zuwFnJw(3)nxWc(;GoX`1jTxl3K!05IDkmJ1spOb%WNh7HB;6 zwrJYVcvPG@?H+L}oOllm$eo5P>V7l$R)M*cb?7}l~ zOQIQfS039Lsyln&nFIaTJ@DARP#s<5nU?6b$s|5N#vRPix+v9c#^QKhfId69J5LYo zN$Xh``h$DmDR0kE*=9Vl_Lni~ z4_}X>THFR7uOe&!7yBrcb}5n;^dL?8lt`P>MOwLT8z#EdaCW*HcURqH*%E1c#L}>^ z>6TjA74jUd4yYy3Fe-dOU@d&D=vuImWlJVSHH!oBx+B_+y($4tTfP)$`#%ED$Cwvwa)5wb_3v>{3~ZQ$caj6`rTY=v|T^=sS-6XTQ5mDYgQy0o)1*8WMcpq;!NY zxk#uWuyc8dteD0+-}bh86=6s5fs4ekNFs6Q+d`rjZDwQ&l+4F{1BYH)kRNQooG;~VFyy^rDOm}G?b(>~DeR>9<0X6`X6 z*nzi0R)Ksx*5Xaz2QqsbT!*Jtag`#3%l8LS2<^?;sF)_dr(jX853_v`H_x}o^JFS{ zaWfWV+!q?5_XGOh++t;x=H1VuMV%CbZUywesnf_dP2k1V(a4ppEY&n3-N-GiEc018 zC#PP>8cEkE#pg}Q*t@44!043Gjz4#{d-WvtQlmxH~!GxEqkJ0Rtf8h(imoW0mDH;oFh1<ceOa9&tO@(_+k@g(j+P z21wU{(P9g7+HxJoT2t4^zgp)fyRaqZ+X~gzq`A}Ko5-S5msdk@ug1vFdf?k!_$6L~ zCAYb)SNWRo7%z+Id{u(SRV~#6-{!){RoUv+Y_99O;&N79koOt56858^-XV%HSPfOI5Ub1W~}{cBn8!6EHGA21CfiLWhz; zXzRUFv07hv!L`(`rD7v-&&(Vsv6sb&qS%?4n}9)aYUUm?vDo2c5L<6zBQJK;GIO2# zJ+Fq%I2(E6%*>i`ddJ2&HEYJ{ZN};FhIqx^$A^t_kI@r6?98kgr$xpYJEM-;9N==KDlRz*0@_-!}*Ugjy6I_$4=`RFjnu)jL&o^0A-Z-Xdy*ge^} z!yd@S9d^(>mcd?XlS%C#R~UV!r~C!iMh8R;g4tlQ;4PkHU7 zti$f0khw?610>lw`1TuQ_#f7JJY4u^6~d=UGvN!QS@d1|E-*oUI19R=VPQU{C2_8> zrLchPaAoTY&y!sab%NHyt7La70Ck1Wl5AA?@L-Phq$53$`4Gv`*CfjyL`7dzJc=4Y zg_QXxz{;&W^eM_!)jO*2WrYf?c>gC%F0-d(?5pGelA7a4=Be~zMX}b}1wf+hpQD~y zDG+UMRsL7RuI^1Z8)<5^&D#j-Dt()x^leP~e@l<;zCwEDTax^WGZ^q3WKogKR`?0v zsyG^k?+!WFESn&bHRE1At+!n_h-$H6lalgpN;9K(q!&R2be4F4V+(9!9cT*{D2yt4t zjZZe*+oibOV%$ro8Lol2k=FNCjN9%^!>v_{`)#Y2dEI%2JFpZtia4nH9=^hGSw>$f z^BoH-F8}G3hC3LwQ(V8Hp6|e`4X1@kirYHIZFP;|t|_hWi5Pd<^@e-36n7YbPP%-0 zli{jLZN1b8!|?_4^l;`plDex%zU9uZBx4snutFVi1&G>rhfzHYkpKmwe+qc;asynK0^Y&Z5UNSSvn;sE07G#N4>$>@f@1d+Fb_`x@KOqR5%&Qw6OZvM znOh97GH&7lpWbSK!x8{rq;UkEvzijQPqYrXv$!jlweAZl)+y(q7_gDbQ8Q5b(Ji3@u5F04c5l{|UpdKb2& z@UbtryfC!s+}Q11Uf2>qVIkEDt9X__!h%j?FXo>vo#!U>_@ zGAVicNO%drgbNF+%fEe>qFv)Y-Grax<@F6r^;xCTiH>T1QF;l$qzh}u^_h#&JwJ;i ziVBzUcnJRj=`s^erFSNhqZ?^F+KjRasFxplhQ;DE<_M>PaL=D@xHMJ?r-GWr zcc##;{3awp(6}Kr_R*BW?_RpXngI8;f}?R8P&&_-2;oL=QALfbn2MxUtY?iCMynnLn0cXmQ$`Fvc_%2I1G81rw?daL$d)4Tj0L=QSd^;-iIv9{h> zk~&aSs|iyy>c7z;wQeSN_JvS^vO8ac>Cu16;fyoxY-i@6iXQ1CutBxC{+$rMCE~Y& zGU5i&aG6nZo6=Z1HS-D2{JN-(BX(C?s|&3RPHL|%6Z z4L8b=^{)`i)qwCA8KDQVqW&m&J5^=wl}?Y43`Kl!dWC$~2N(*rc3wQz<;TFt_nWHw zWe7f9@FglNLEH(x3N%c-MFy-(#5jaI_;c8>FX5=cg4=+L04)&s(yRwd1GHN}TUxYb z{fd(91phXhPsQP~!JE+pY|OXX4ON(=C_O25JbsrIS7pUJ=y5C{_A6lz-irG3J&i+O z2G-gKCD*+a;29N5031D@a_b3Le;UB-8kM~OuF^?)u>RrcdNPBSAdxKMoy)viQPXxC znFJ8+*l2H%gw)G}S9o%@?aDA0&FU1QovS4EXh0_QR5FA3$qFMNaJh;PGR>kG1F7)czaInB#v(8^pw6{7h!jdr38hh~oy`8zVT0aM_nbHE8U!z}nu75vnnK zTkvt80*bH9%XCAz$@jvbX7U%yP5xrJ$zP1j{m+?MZ5WwB%lBaNt<2>5 zcM*v%Gr9g>#F+g*jJQF|@c|1_m707bV1uT{h*Fd953KFT7*S&K(*UJclg7-6j6YrZ zQH-TU#@i+hrsbi~HS}uuiVMLmk@bbpBANyBy!?c#Nim@|E)3m`LJ#b=Oby?%a5A)s zZB3EJP`TZ02h;B|FWrO~|=h|d3F)V*XZjP${Z1dGw4AVP^^(8;W-)vxP86nq`@(@?qy z*q|vTi0s=zg%JAzW1!a`A%amc!B{x6muDJ9u%;(y+K8vFep>C-hy9-8Q3&%(Gt3rg zr~GP*!-oBSR*ktwg8P9xz07c8lkCi zX*O0P(p*D?x7hw4x$gg^gJ#~vNVaRwU)*KatI75z+pyPv4r<7We0Z<*D#m0*vN3M> zltr4WKl?2HcZIuZcsuWZQf!6xp)ywa?v26T-yK49V{^`}Kw^fh!+$CiDoKfqp=B^sPWf_^a z-z8)#GezvjT{T=^FjthOoqq}0r|0m&h;v1z|9&r$X~SMZ*82j!J%+n#xV{3lNT#!b z60$G;SnEby3fb5X_~1fH)-bnS4Llsoox-m0L}^_Op~9@ozsc6H^teM7JkTsySRK@Q z{>0@A_Gu&kgplobRu#$NNP{T(dK`9OQ@E?9Kg0=d5i43(f5n~bgSe{>)&8>!*5#+O z6=i#p^iQGKg{Ht%ufPRV{^-E62Q|byGIhZNbbXULsb#bTf+Rmp6iez%W60&O{ zGsEs$+pm-?HLRERIb=iGe^%|foZ6MBSfR6w5^2xf5O?~n7nVs&JKak=inu?UyK2`% z%cSY_qbQ9pIkEj-y1_7moK@_R-Bdd2OadOFB)oNat96L3P<><)O zf6u|u*y6}bu+}`&!@e7_{=N%q-9NdjMvJW?A!{(K%b(We*hL>21R&(3r zWUJu-tNz^6`L`MFc;F}4V)bHj^(S0X>*jD*jTT!)Le^kd_D)E^YtoZ3RUc#tldk@% z3u@hK+*PA5ZG$r*Y0&t_;cuq-aHi*G;?!^7!TCM)EzMx68huhboC!&ThCH0p&Nt5V zR85>Kdd^1(QQupb>JVo_(xBlD=cvmT>*I%eA8%&~ZsYix@^P$ji;y3@ki-(^7vADF zP)_qgmS+!R#-D7iolrOE+{V@C@n|#tu2w~YEgD};uKwWL`DXy`s)KYASv0<3UH)6@ zz=VlQm?qx!Oq0vJCM$9rWL`MghDAc%paUaUzY3a|7kW(+Y*7<2x%zGIV1LeCb&$?W z(<&Pb>+%CQVM3E+ZZS>#^kbUb;x*X^Dw~NWTU1D>8+20T>X*AVo{79B3AU(-m|Xow zx3OU~o9I+Gt+K(eE+1ZLnxw}Va*i#{IZTteUX#I4P2sNE{zk>8gt|eLuKrdu`H;J6 zSDnwK*z}mQK}>kUy0fgV^you%?N_YpSzp(^P<_o^wSAL9W@LeptTKmTvviE z)+HwD`eT=4U)6P5v99-gU4Me=9qy{_k5^qMP<)EQA z(_>`SbzQNpuYFyg(Fw!MC3M7`Qa5N~KuCs0AtXI-mXODaLPC~R?D(-QJ-QAi&z@b2m3#awU{dGK&qW}PbUS=G?pVfTcX0kQDjBJ*<1d2I2yyk zNI*Aw!j*Zk@w8zJ?Z@#CA$V~Z6(%y6+dB$;-KlUU*`~sI1Xo_#{Xx3z<%#n>JW)IR$$FW9Rd50U*QmmI5s-R zI0pVYhe*V65bF}O(qR6TIz%Flw+Mb{rGfA(93l}%#KHj%4bxxY5D6SE^SK=7M-uo{ z@wa5{B-6COKfhpcj(@6(6le8;dz-#t8>NG26DUuVr{y;waRHv{npR;^btXQetLa|4 zD8R#Xbu`%8x=9PB^F+_p^cnAj+9iq!N zecO>?)0gdhkc|+ZLa0^@s%kCU2Dv89n@cnDbXj2r9jB{Y#(36LMHyuaI@hFCKm+SF zT~-)>N>4KGE|XEVD)Y6)+th65s_d*(o3^R(GA~^_tDRb9x+X2m4nD1@w%`~Dyy<=rCqGDyp}iOuJl@# zZHpJha{FQwQ|EhIYQgyp8_Mntdv!7V$#%0#!yJQiQQaqBDR$qA><`i^HzH>ayFBYv z_#aNMOcmQ~Cu{RA75rGH zN|^(Bzd4GHLHD-qTULRc4J6wJ*Q6-8AzN=_`_p{R7s;84MwFU(tTyV_|5`IS3sSGf zY+lA?B~_;~)-IK?g0}M|GSp8;m$IdUYaHw9G!#tMwjf>K`v~&8&XU?vwg=1Dw1!U? zQ-;Y1P|n)tjz?U6bayJ+6*rsBm0dD3@`4nGCIF)3vP|{w6)TDb>=W zxz3Y)Z$uWQx7WEyx|DNGTG6)Y%{G@6&Wa1=;i0P0Yit9@??%$NnH+TZMyB1eYiuab zQntNWR79B{x5=}Vt=H2Pd6!zgEUTq#>#``8&0>G?wUq5e7p2%6Wh`Zz#znC#vlxq| zGflaXr!0o07~Qme*zNkb$5fad7s`d{r{d*fJ@r^}O4P-c+mxBVY-_eCTk87=7gbAf z4$$^v`6J>P6Fz3hC@H@(A;k!q2>&cet3c%&ogn9^#!QrY!TbE|h)CYPVy=WT)AMGFw)AnIm?g zyu3`No$DpLKsS7;C!AZ;w>{VSxVMrsD;?T{mD0HNg`ZNqPhC@XXzOcFWq#mm_cCXf zoxQrI9jJNi-QEN8)nwxC+mD?Y%u zFGC))X#^ja8y{l3fmU_~2!KveytxQFy5&8x^j2gm0J-U0Cg( zUFK(+m)V2X@CUF>YgPee^&n?t$2|u6)>J zF2o5_nf1PxzXG-DJSu-|XU0sFkW^-UFW-&(qm9N}%DK65y8OA18}5=)O%L@_{{?Eo zpC$D^Nli#9_x4iHdD1waF6DgLbG`;@*i+*CMw|&r<&&QC%cqU=mr~Ag-qXh{;D2|y zGmkBWNuz|Ma)kHvZ=N^KrHSEbOV09~H@v`SKDjfG?JmxQr1E&rdCjZFxl<|U=brNy zQ0u=Y&MU>4kW{{FoS7l-a9Xn@$<5sSu#OZ9Qq3AZ@z9w%aH!ww@BAk;H)N6(q{0%i zc9x>9zUK2SFR7FCaxLx?V2}yj)gvc{uA$f)*eYZ7K^1$q*W=@4tr|}+G@#2TIt`AO?-CZ78 z#EKRl`348<^>gf>+1b**=$^ghp4r*voxRrl$a`mYwpfeK855ar_IfV%&FpNMy6BoQ zk@w8Z;qOxE2_za6*|}XRRY=RuRe!i%bCXKvcB#}8$r!HJreF90k)7M6Qcoo3(Un>9 ze#XNL5)@k@o__hv+XDvJG6if$7=_}A6mTU213)r_T>cS;1ArtXy8Jb`Gl0aEU4DO@ z7(n90F8>gY1R!xDm%rmh10-GU^4HRZP$Zp=zUQJy{xT9i&Uzt_m(U2mahXrQ1@S#e z5Y()R6Vyr*zQ&n<2M4&T6&%yix0FutCH~XE=+oIDnu?^4wQ$i4syRa+Hx)+^EP_ZJ z{^O>NTZu8q9Hlwy4@yoUssH;!wQkg0B)pgX7F~-bi?(Fm`2cJ~$YcXrb4wp_lNZj_ zU&NB>4Q>F_Ko*VJjaM^BIj?(ybqY7UTACE?-i=q`pq%#z0?Ax%c(s%&c2PH8jq`He zE1s!!?{mX@u<<6n*^O88NICB_4E^4(7_Sy$#g6aBt8rV-dle)8EAC*eaA{_ao^-zX z4MVF*eLeHUP=@Yvs}K`IAExT>ru4lan}nMzPSPe}iKHz}5`Ff{TeN`~7@Qm`Ml4c~ zla1T;)1k{>=xjTb+UOg8#+N&&3uW0R{_EA0t~281rFn-S`m5x0yzk&!rdzfE)_hou zI9iB_;b49J^ku*XhA|`n&(kl7gkw@Ld00+KH6iUQp?`kx}4~k3!zm0hq*)DsR+R#*| z5zJ-k3XZz1JD?RmhB4pmE%k0KRbuV10fF<~L#9P>qDkGv)en5H*6qcOJ3IwdPp%ZZ zgFLNAckr`8{iMIux{J7R2mQ2h9eHJI-9qJXkV|0V9w zS8J%|G36L@ht-5}&42329UhW9M67BOafv&$19Jlh(D%ZWxWl-f++km|GIuy!>aAa@ zMB)xpOpD@tUg8duKdyCu;>I0zfvTry7`ualWsmOQ*Gcu$KjBN#xN(Q$7AI+wutZYo z4!5v#{Dd2K(7eA$Jx(_6F79w9uJBjy4vN_&?x3ogH{s)$vSg_{><_G2pY#;sXzZQ1 z!vny|+~EmPz8q7Qy2JNET!FF@L0_iP;Z|U-`H6Cjxx*{MxaOyNa)1fYZUas4cT6Vt(H%L5vihuJe$YU1tPFe__u6d5&Q<&z=1JB zrpstH%gUlpz7K|zmqC!#E24AHU%VA(xqv+ zDvwKzugxl26st2oSn)WDQF3NeIyV2=O=iFEVwszj%iOG7 z=4ORO$#k|V&%MQJn>|71d`5qMn4L!!E+u~$t=HNlqe8x5h;%2Ds%D3tw;5?63ymF9 z5t}ksi|aiS4ziN{PmxP!SXUC;*r2`zjX&HfXq~UMr;g~@)lkY@LX!UzDsoDC7f{=X z`~%=6Y((JBu_w__XYnzk&B=;HpG!Fs4nAh|6@=G%!dA}1o>4X|)Xu4OJF@NIV@6}y zEnTQ=b)glOHRgL?Vt! z>^|Ta`Rg1a5l4nS2OOXOx>h0)$C>OlXvZqQUWZ8F$Q;A`Fi68`oAj zEn857)$(+{k+mZz;2SkCLla>2i2mglqUma;q_v-q>s{G-12(_>XRtA6W>(U5=Q z{_GI{61l;@1ifkhR@;@>*d7Jcaiv+OQ{Y4ECa9aRt3xNXg?j4KA^Sj%`L%L8l*4PC5z{50kRNA#wg@?ULY9s#=#AzDwCgzOTn%-o9 zYZHGZmd#^B7JRbaiZ7ZWynb9bha5mG8|yHr7nORbF?#7jHUatoFX;*p7=# zGi?e=G*i)g{6yX~m}Z-qKO}4V*k-nu?pO@!d6S;JB8}T^FG}+h{+-6B@yu+fRT?VS z(Co^U>jfEsb<6KlYJHhk7wUZy>eV1~LA%1>dCGFN??AF2Q?stdIx_sE;6^;+;5fUx zxCaw)Aqa>)f;4HLLuEP}7@r zR?R94=n$%_dtI_uIh79wy2cH9p%Lz83hyIF|I9_5Z^BvG531iT$rMn-FZc#;is`q~ z5fM%ATIo1G|3InrgS6B~N<7cppf-Fg@Mcn}{y`{(TA4!4=4}mpNm}MXX;FEMa z1ktGlWQY9}=2P6wh713muXE?|XM(qZtVsC(jOYmR{Dj|~aF6ta-;-Tc*)SYXQRnVg zHVRiojejaz9S(-2ohgW&nkz_bbPI_K@Z;#XnmR&K*q842*%G4y`zih+csh(4UbqWMPqF=#U>(IM>J# zkj1G+a%VQ|QNV^-2|&#q;VSG(GE90MM?jpRU6214uK&42(Zv}Reha%hPyDflXydDsxFL`!dy{PD33O){lsX*n;yiwD%Fo+<%S@S<1XyH zER6jWebmUR+sL@eIbc2)cJuDos#itg3MV0~@mvz@#-Y6GYQ6zkMNg5sZz>G3OAW$z zQ1i>UlnFnil(kg~nu-ujpGTOKm*a@K9MmWlz6m7ym|)r(hVSq&>c%j`fZ0$@thX8M z4f#k*xDavXwN2q@2xK5^P)M?D6ALfXPb2nw!nyrbt+wGqYU|wI+~FIM<`;hJInw+> z@tuBFtlpcEMsWmINTY=t@qVe0*$DWhMjj|{ee5YD&}vpHeD6ZnJrIZ%J3># zuzn7DhK zs^g)5v2!YlaD^Y~0Mm7cM9|R2Sl1^@+ZsOkaNJhY^-1Y!a@ryH5?)Ot91h4-Sx~0R z0+W!cvLIEZC}K}9BG>sGB05-TgpZercsy1j(jp^#Tyt4b3D>A;#|6>xco@IDkh)(> zkN(+eo~U;vIHmm4vQfA^S$&f;pNEXLpc>Y0&tkeZnh&A8U>PP4JY5FeM^HKPX~2hl zM;y6^Oc0Dbm&Z{fFCuj#I|XuuPcgN3c=hjtiM95tt8?PcZ=V~=5pUw~6y;qMtLIQr zT%@M2G-M{@otq{So*8^*bBtdb~uPDg*+q_poB%y9B30PuJ9n! zis{()IJrjpv@Qt01QqntRAW7r&&;9lof=1rP`HQsd0ZW9DB*Ab>1Vj_J&scnkkPU|PzDXKi%36~_Njl#Q&AS^;Fv%T_?S$|%ZE zwk*$+Z}4459UhYf|BSV&bDi6w_+0Ml z=3oilT6ZXn$?S2tpMbvkuCOdJ3#%wO2X`v0O)lD6^#q|5o<&D$rDIp&U5qnEMx92P z_UAeWFr24w=eDn8fQ}09T7B!?TX-(Tmax=Iq4$chI zKx&uj6cokVC6WB*8hl)ZKa1^Yl3rgt<=iyycKOaX>5@K#<*IQClypnK`&pn=jgy%v zHSLMftHxc0UbW*dw|=NUP@v_co34VEY0>K_90biNkrC%ogcdtO&|SwjyyXl1Lo(xvoMDBQ_eOBy4_B3Z!f5Mu7hYf|s&V zYNk|KZzX<%$>`HnD67|UKXChl(ERJ6z zQrq*ZG7t*E(ns>(Hy!`Q<2ove&zxpMF_Mw?|H+wC{wzhGz$Wm|$m+7feguuQaC2OU z&LwKFX*iz8T7(k<{%K?t0N7G2V*#0bUeSrybyqHqdf7TAq>^qKrx>aK(;!A>JD)?$ za{Ez*pzLB?%@TcFG>i4ZBCEGEvg@GGWzw!8V>8aXWHiqxD%Om(ldqhX8fy|(bmer+ zeo0d3$Kvo>2B5CxwLGoT?ykyK|G66oHmAqP{Lioy!e~zm7`7(R|I1+&9Wd;nELPc( zr>@2|#TMiaqP$%!VW3RsH|qQh+VaF(nrG{k?sBeA7M{wVqWvBPRx4G~uXeKLcZd=h@Ew(yIv570UJY#QeEN^_3 zj(=QkePAbPXmTyT1E8vzf;Z+E#4d<_YpXSD*r8B%F_2D#bVc7Sjx47`r56+rxU4WJ zt}r(r0q1fiqicB`QF*PR4q&l8yH}h08NykL9^x87gfyM2^h3P3&d!8hC!o3CvGm-$))YO;!{Z}`1V%rtT82&&=t(u=i=lMi~FoyNsWnn(vm4F?>L z8W>`23)^Nd{ZDomducnXt8pm{b%j%S6wXp|p7f$=MT==p5Ojn&ZnndlJB(t%T1gQm` zI7Y{qh)@a-HwLI2uxK?UJ;~N7;smdF7j2V6C6`mYzgE?7NKvo)}<(UsF2 zvQAPE^(kqA*gC7UaC1^nEAEO5(JN%);Iq2TQf0AETUA}rzlvn~cjGQ0vP!W`WGmX_ z87h+M-#5FE=}<^lP9b$iNOeW~6nVNw-<%Et4vtB4T7zB@7u*cCouPZ=Qqtf;jNIa$ zC4H9f@mjyX7yZtaEch>^upC0-d1fZrg@8C+oWo;pifH)?*<+Lq!@nijDEv4fsCKzS z!7iYzEB_Q3-eSC|N0|SbM<&R$52$m}Hm>L;vM&JoZ!7u?zT4o_RoI10VK0*C6l}*D zo0+!aAYm(xRiWY>(u^x?*uv89eUi2K&&zFi-i((9+3*Om_76U5g(s8U0{aE7>T9yA z4TQa|9zgXo&{hk@!2T~tUeC7(B??Sn2E7VIJ0|9Ru zespiE5liWtOer26Y&l%T*L-niu%8tJ+{AXGAC4!4=^KZS6?}|@G`8cos$>ZY!SaLq zWY2m(SQZ$Wj{?2xb$!QQVQl9Hmxyh7vGv{5!ya{~3$}v6cK5IggIfe!Ra*3&>0y@# z_Y1bVROx#yuztLI3FZqHtpB(O=X>C-F>p%*e&m7o#K36=WceZXxiRo}0{Y7u`6>gJ zM$Qjzko2RDk+vPM0Q*buoM1;AY=Vb9%iF5wYSrVr@G8$(*|`f$pNR3g&9NVpd#9b zG(d2gzqmC;{E)^#-=k#!T4NORMA7#`ZrfwJ8?*eh>@&8$vbEf@d|<5PE9H zgg$FRZ;gc-#dD(QJKqbPnK7X+#X_6ph+q0vg`FKkc~8Y1yr&+fRUHeZ!Fw`}D?H9v zXcqnHo<7rgAhh3!el;6QuJBh#`io>)Pm=BY1+)fsFfo`3Y(QeEiGd7<)K_4!o_>dt z+3TcX93hJ3tEYX3`JVnNv2@J{;Rc(h6h_dqH5-#KpDe{g?IO0Wm}IpBs#%xb;-|(V z9){X%x2nj1vr0Kn&aB~_?cmNZkb5-DyuIG|fyP;&&9}V{@nXTp|eO++S8V&~PtrZSSvQapO?6RU|ja!(3-3o`3w4Oln40mSTP;Cs_G&15s z+xx{lxWf19y=!Svb=a~!ojuUhaP46Z*s%a)-%L1*(lx&1YJ{o|hs>rw#*iKI6`3o^ zm{kRZr$!u$BoYVP30G5)cLy!6s^+w7CI2TNfpx6}wc{w1eAPiPMANcW{W#`Hs}_{4 zsa3s5B60WwmLUkPS&0PSno0$6)A6lQ0QLDnwLJ)zrlgMvQgSsy@q@>*s}yiG!j=F^ zJPQ&xRE-*TKiqDD8@>mf9~BHX!eBHi_bRs7hECDdp^>{yhPo7RSER`bRz9w@DXtI^ zeAH{RnR}$@cYzW5Oy}Xyn}o|fBh3P zXf0tlFR9_-QU*Vviy;!jxWH!he1M7g*oQRUji9M3zaLSFZHQJPLp2n*YJNwCVYf98 z{c8h3WM{I+fWlWs$&$KiW-N{@_cUZDQoF8ve=_x9%}zWJyeyC3YPh&?Q?ffKi{Pm| zbq!t_AbZj2lqW08HB`0x{$teMZp{DWbUF;KfTG2{M*8)btlOf)(@$g4%UnqzbB&T4 zNU~?)%1@DDjdmLk7v7~p_yB1pe1tUXatoKxTgv>+JpQ6#)|kJW?5*;;`uxLWwU!N9 z@_#0Kte{Q#r^!+qt;v6tWFwdRlsumlx&=&Rl&-?%Uk3QD(YlHt{}!ch;!-C6KBWTP zAotFRFbeap@i09?mlJh4s8TFMz}yo{8fvrAb?z-G#aCaD{fDxAYI!U2l{=Bh%Qs$1 z&-~gvBKns4T;@gEUL_BnDrIz<{tRdtF8Cp8#0=HU%6pBpqJF22Vs&9@E7sZ6m3cdn zutOrD-fwV72c+oFFnE zWh;dE0$BYAc%%^IU3O}-;QAp7XFtZdJDFa*9{NF)uf?);%9q`CT`0$X1BmB%zFHQ7 zI?`0sw!=Y;8!3c|8s$Yb74X}7%`_<`n}6ObEe*)7nxbWMpW*sVVg6*SvMP97Uw*qe zLK(0d;q-S48uk7Tx^Z}Qux3z+@{J;H6t3|kB`aY}*Ly1nP7~3{B9ZHT0gxvIUA71{ zRz7ku%Z62MIiwE_i&3Ga$FR|A0peEa<}7SjHp;(_kQVyJzD(yQ)X!w`z&^Dklesf* zXD-CLLE7xT>RzDgUe{;Ds5&>DJM;JKiWs{q+26B9#=pG5lzW|og;ip}{MnSXs7IkY z$f}+&%->CR71Rt|zxT-wMtXLNgr|&+UMQnP5;EtLUos>of%yN~MS2<*6X^+{bYj4K7r>jll_UrXt+XprAMh<0d{Y9ziB`~r zb0eiae97g6;=2+w3#bJ(C!y)}z)ZHy4NMo}SR|1+YzgO@Z^mm2L4Vb|qwK3jpGbxY zYd;>30LR4+C95VdD-95-uI6I^7D8ivoUE>vJiRJEoS&yj-*y-`zqqfNZcS3p&8 z{m-N$R*z|N1AHYKeJd%bxcoOzt*zvH!P z@I}`$S?<%Ib!*fccV0mnOa$2Cjv$@1Y}S1jlXT2tFt5E#w-eLr0CAAH z7mvNwA{U-W_84Wu@a!ZTg%>6S@rmgXly&6~CBup7sd|JtFiCiV_$Q{p4n$Y-j&_e&7m?E)GxKBodMi~qI*&eX8;e9{YdW!>dngZjtg4D`9ReI zx?w?*jlxS%;tSF03?QO$g*uXkaU{2KXO5|`FLSG29norguP;4R-@=BMy-q0#dv{Q3 zwA#ZyE_@c?2HJ&kY8Adj!M3C#7bXf*VXj`-5Z`}8f&KcLz&|1|NCe*G z3tpfLs`dM9)-xus1YiP%h1C_7LSVyql3CpRnBZzcRI78u+@!7tn!`xVz5Wk#?*S)8 zmHmC!t*-8_ndxDAV1NMzm|;d7f`I#|fU=6&H7$xcV#YOLSjDi4ISXctgBdesR#|0L z6crU$R*^MeX4izSIlkZDxz%B0#{as{^Stj{pQ&5-#Cy)U=Z31T?payDZVV$yrV(l=xP?y#L*2s;O&Z{qH6DG8N%$6ZaJELZjB@{b;E0kdEq+T7;=Wg!}7!g ze2&g4BqpG8$sX8kj3~Fx(bl9xxK^l?333`TK4bG^$QF9)Z!0+PrMJ1ev#!cwkZdY+ zRZ&Bss|pD7KmgM-E__1(^UgYqulZzWQOn*-kzYhX;5LOT30#lpui!LI@<$Y(1G>ON zL0%-{r1W~4szq>taLSA%V0lS&$|O;TNkR4+hEx773NlQV-b6LJmBP#pq60@3W}_g# z|C*+<$X28givDZ0rbxYJ{96NzP)nKMUjV^!~N=)UAk#=P;`!(x-F9x)W&AbSnwv7~Rdm-~PnO_kmtleY<+6Vf*+p#w!Z zOofzL)RewNEpB_5?ix+sq-!S=C!&^@o+4B)v2^Xjq)$$3fRa5Y$h4cP6TGTy+ho-I zyK_|yUX^YeOR5BQplSpeaVuxhj`mh1svKUHR0;Avmy)CC<|`=MnN&(QTvG040rGA( z{F0kTdN(s|SD~i=Z~rG%ecRb4r~@}QMa_cFRe3iXI&rgo@P9oMCucf z?1N%{wgYC+&lxBzbzO`TIoB^i^M~HkI=XPyuNI){%LZN;b-#NMN(4E5w^J z!|=J!dDL%(F$$Wu0&^N?=BiZ7DEhl)Lkfts3wb3nH z_EMS#(LF^a!Ag?TQT~J5>9%vhveZYK@$gsfYKN-G0Gi|3#c0XCL6QH2g6tPnoKdjy zw_w)PkQsdw2n!c3uMNf?^FK?2%(3aVADO97B2(h^9wIH6V_Vc>yx!XE{DE3`W=j#T zr}>v7yD{?FEmZ79VILuEQ_yq+S_ZJTR2+bu*8`}p;a)J+rr&pi zDQ8WMmPnA_i@BP_={RKhGnwW(rKYvO48{;0X>FON7XWR6k1YWDf5M~iPDkc3u=yxo zCvT%jvqLojpr<~9&{x$cSg8kB9W{%k!=(oU$BBl)N~<9w#lgRo`5cBgn^x#|O&EeJ zr6pLz!W_BNKsE%AP+l-96^vfrTQU23?xju#D0}P;Cv;Ptw#&Xw;E; zkqS3v@9Gj|H-jy^HAUQ}BC7ZRp2~gc0$v*lqFq4hUp2FoR=H>r(C-o`jE)Bymq4j# z8qmQW3Sx=T4->g0ZXQV0w7MWCHT<@QGuAez(eW18tu2bVpg6kULvk083a_b)F9bZ`wuw9xFw{h zX?Rz?PVp~rwcW@*5%fjb^d1#P7yypS0=J3{s@jbbp0$d?Gu^h}YL8C{CE=OwTyO~A z=B88OF#GCdU+VmYff?9r2Byw`IWP;G+gUhHjkMIFVsU#5_5FNr;bNCq`0CFs98(mY z-QL2I@a%$xa|#wRYh1Wl(glB2|LWfR<3bm#nRLPYz`9_~3m7DH!GgfLV9jC|+)mR3 zJ(t~@E*PVZs=X@-&l<97%t~@8mBjHyP4Jn_#nj z3k_(VCo3zaQK8{f+fgvyBjyX$cQo8kAwLb`tGfmL#qiCC*D|=m!pFwg46U#P=J$Fm zcooIqZHrRnZ+9uJ{tkP98u}SDn!tGH60V$a)hAr_##L`zIQKxol%_&Y4rCOVDZ>*} ze9VShN77+t%J8Bozw@RBM-*)h$1WZ!%rrJT zD4KBOME5UN?1&scY5Osk;}A&Rty5gB^rVr z`$C=}7Oz0@HwBhSJsyPeK}kV7YW*Hc$sXgGx6kEF6evoj;CiF}9ZH5|Oe|gO=TeioF1}2Q(Y*e?`7xbK>%9tlZ^?t}J%})drv?FQBrwr@}1*P_^$0 zss^LxzfqMt(#(rLCGss%v^kgK)d3CBc2rMQHE%2Y0l4oPqX}RSXKtdiPAyd9Xe!ln z#H;6clhBxzTKlO?UWN3|9*u=}a)t-jXo|%-O&Q_Aik$g&1Vk@0p&;`SsD>@znw-ps zUS@I!G8+|S&V&D9$!yb3W}Egh4VwN|@iOVQx8U!_iV!}EU6I-KsQ5JlpC>CH-5Z;K zX60sHI@LA`$^9k0`)z&)>#f{f8u)kX`Ed8E!S@?UfYfRea^YSTC2c|WDcZ=rKw*h; z9I=Z}QxQi~xQswB4*E}}`XFcO!BFj#7#ZRDCO&XNNc+svuOf=Qmaq#IM64sW6G-onPGJCGYM`arFl>G3v~ zrqvzyBq|y|GLb?LB~96^nm(AOzHHZ&@JUm8D8i$#P zQ0lLwDVu-OuOQgU{HeoxC4AD<<{ik57d>gp=I3}BvkTkz#avdgPLJNCD#z3XT5)v5 z+gXxXPi^Db%6n>8P&#t!z{WRh?q(>WRQ-C=irlY|AjW;Mjo7rdX78%1;}IJKvu~h% zw=#R9hF}8as4=Nv30EB>poOjDnQDenq+X@q0fqk8@aj~fyLj}vHkI^PiiZJs#Icy_ zegrUzGv88OXB&hs$gU`p)fbSm$5I6GJeYnEql-;+g$A;p7~e+Q@;HPu{32>1;+-fB zG7s!n6a2^-ZdK6d~mDFF`&44S3&wO)AlORWvJ2Tu=k)x z3BQiILKrg{T=gjlLCRBabmgXGZg8OpZ3%%(5bfUs!sEdm0yy#qGk2*SGwG7-IH>c3 zGeDwuwTm>d|MuZ($BG>xv}IxKNHU6LB;0^&>H!Ke ze}!a8Zw}!R-TMaV+o@VgMQNq664nJ>?;(di<4nEYNgC8b;lKm}1 zD=Xbr1YH-xS+_IX?{$*HrZgT2%ZXw;(CHh69VixGnPM#I_8V+xi$9J_DDT2;DN@%` z@I0gtfb=fFdT$E9Po`>Lvkbbfw;eMBXEd>$vsp!mBivi6j_N?wPWZ-e!knAPr#E!% z6{xA8>rRZb8#vSRtm%R=S@BB!Ld3(x6m@S>3@7 zg7|aPBwl%8N|yahJi(ec^+dd`5zBtZSv5NRnb5W#>lwqd6@&{Y%Jc@Qo-_$UFI;QB z!<&&9&|^J{DV*8eE6c2y?lEen`<1?~7??$HCJkxy`*1u&P5lzT@pID@4zM;w)g6Hi z4{^rtr|cir7rWb{2G-buuo9kBs~F2NLb;M;L=7bC(a4gck>SQjSQYGnoE1Atc~Q5Y z9_8>Iq-uCKMco{Vh^emn*+{-PYd`m<0o`jMBz5(APo=>@7BaH;E-Klm=LiV<1t zO!*k4r*pZ?@+^G~RVijIte3csUb|D2Vq9EstZkMRO|{+sj39L_CB6G7eZmWE`1J0h zwTNlbhdwX^`Y`NG^BKRS*~PZtm>ahiBxe1R#21ll33_T3%+sqndVQ_wrWn+s^$qIa z)ay1M^m-RpOFTx3CfeBSwGsoYL^7Wlgf{F_k@a*Z@iV)-!C_W}7*sfvx@KqxavP864WuTm++T@@~hlLDlCYN z`bYHDw_~PMX!WVsbrU!np9ICV^+m2h^;-#psoHfQgqH6`u(frtSCy-lD(#)6$~bpd zqeBOSvSY7wyuOm8U_3a$!#OvERu&f_*!nhTTsTNlYL&MVv<4XzSTVgytVbu4nQU|#{Vr&D) zf10B~wPl-+gPb}l);E^a)}~xJI_QMp92|~UxeL)mXN1p82awoWQ|gR73YH(>lK zyW!PuRIEXfnoR~Q+1(b;4S-!VPNZlTN*=*e#?cX!`DhAdV{{JX*l0TC6c=5uOBl`4 zC5qkB)vk@v+IAfqZDv;l zckq=k+Q(O-=rCW2qZ523AD!bXjnQSkGB&!=SCGFasfE$pq!vZbCN;kN&}D+$&D3+z z$1i+x&_H!3&T#i9h)}$iZmT)Me<2ipOp$s7yyWI>a-Zg;&9yMg1raD?Zmd{Lq_Ym~E#>^tHn(BB7a!H{YXWpSYR=hmo2@jT0 zM^L0squ^c6W4Xvi?3X54iv8zO{Trv-vSfeuT@b780rJS@aK%PZf!fVLhucutD;@g& z4?`oH|j2y#b37xs?XoBW@7C z1294#^mlnSAt=M$t^KUI#4Cs7Ku`RgZa9pC%IBB{AP^A(5}Z1-Vo*L7J}l zt{0S172vpzsnblUqhc;Tu*mcK>{QZ!qlly0HSnmb^+(Vx^ANZlL7=oQ$UFyhyoZ9c zNO9C%F?*P5_XY?Hs93%Ti%eP)oia%Rz98K!pIq%M;I2v_r^cjzk>{v$*7P?8evx>N z`!9yQHGL6UicJg4++|I7$|MPUC=_nLC$3MV!1YyWJ8>NYb_2OB82&I|FQ9!r6r@GM zE%mkx2-2dKAuI->vR5Izo06*GmK5ndDH6VIsAhJcFg}_qR3#Gh7|W!Pje2~_z{$EE zdy!AzDWgY>GqeGGIehVi=HYDMH3dS3IJKD|IBQf-58GEuAWNe;b7NHR> z27QgO4HJDcqYe@36tOp);ZgM)3U$VLLd{H!IoeQ#R&6@4FzFo+TO{wJRZV`WORpz6 zY1uj_b!mSlCZL8#rQp(`K%~LMLX;;K#K+>5iBC(!WA$xnS|Xk^@o8Q>Jr!Mn>)S1J zEEV0t<9<*fz-m2uqbwWrc%BQtaIqG6=D{IcdT5pmGOJOQE97K9jWQkm^|)<@R0y~N zjpLYF?AfN?#0Wet|SkI2V4wwK_6uQYf??{n?vDzHSPw7K4pF94+iQXDqwD_Lkv8Sr;)j-cwlDLetj_Oxu;0Z z<Z8dTRyjOtB zX>fl{rB3KNLB!)UFE7WXmc&{gjM)%HM^b$rtlsL2`vdTq)Kzd=T6Z4D$bNt!Hw2PpR0lu*g`;oia&+hWV`ZkK9eViaI3PJ3R_a$!Yy~r18tD3YVMM zVbj7EobHs#nwGBYRp`oIM-hLbA}Xd@G!wX%uBPXnq56`#D~g_{x*Av$-r*pGccbWe zEX9|c>Dmj`eo;&ALGDq`Wd-PY*#M(8!m&Nir z1^Si7HdYvRD9)ZiQF}hc-#JtDZVy>uqa^`&@dL`r2S7cioa%v~b`>axiP~IY5%jXn z6;k9!^%qoZRPV@$zM3=jK`hq7s0I{s?}LesHnmT|pZYNF%1R!e0Iv7Aa>9kKhX{Ls zgLFp*0Gm$=+i0=!epQG!#c zwp(!MQ#rMsHIwI+l)zeA&*IU0B^F0{#V;)dsr4)R^bx}vAcNj}B&0_@sT$*h!@%`k zznn16brWG5iEw0_F{O4DipjERY5I@&ll0iq^oekEz1$O2Z|HlqfH%{cYx>UcbxPMsKj7acjOx_-+TO>miI1f0et4KYfTH`M6nvg| z+~GE5D(r_*jgF)ckW86YWzy!ia9Pl^qbX|Fr+ADr+Szq7Q`*b}`9TImUrm*&%T|AP zA@%w);hD5maYRuOsa>Zj7G^CzO8i9jugDgs)SMvA#~3x99fs+A+3Sqjz9!=P%8@l) zvR`R6ookvg=p3p&2UKkidVh{8MSWX|ujTp>?be=rOiFO`&0L$F!T0z^h`YE7h$B7% zhFJf#ViNT3#STUC`fv?-v5fg&;J6N5hil1djNP?h?BU|pP+tS*|Dpiw>xSY_F#!8I z?Z1lw*w=zr3P52&LZ=pup8KKrdwKQKc`WUvm8)JWWAu|csiCiysK`0~@4b$=J6i>w z2Odkl2#2Wo)4(c)$HeSvMJc%fcBYbGeBaiKJ}=;a-8uP5#ovY)=Z?RFfL6^Y-x~xSR2JuBS&ga=jbFsXRqf@DB0%DhW9o5%3 zGtao&X}(Szb)pfOH^JN6>w5fcRv(GQ+G1uND5RNfivfAuuAZ}PF<`Q_Ric`PzZ5hq zDQI}Ky@p2}^M6UhqlpG?W9E=hgDmg4{h3MQyylSxX1AS=qxN;Gcc{uc@;BM? z!ZYHhK(gt52>2USIa=l5ApNgtcK(Ck19IEyTy4<+OE%|#ttZhzfZC4_U4DZtFL`ax!pVlS1ZhDBb8zEX;+^cj(AUAvKFBOZ zcQ$U7Mc&w$e=x&TjnlTWd zx2KKWV7G>JAGKBikO|WYfO7M13BXTa%fG5yDcxrv8-gK|N$8DJ!S!5q%$mvV_h$g% zS1P`vNX4jVJBE?Pt-{d^kElCk7&TEw(JGX2G@3FWZAjS|ZACdY+LdyOi}u%r9}&}q z?}z9TN9XC1kFLc2{`X03#33kHOn{oZ-Coilry0d>Kk_8NH!vuUO3dADxr=pHQ6P>j5ie zQGaa0+-%-UyPt5TqLjRHMULF99xKM`S-x&z3i}<${~=nLVjs?EN_(-Iqh)M~zd~>HuK}Uv zP*N=(ZISA7?MeLN6ldHtB45t!nVO6#Je@#ynM&~qXWVR@H5$@!v)A$qv|njZ?NO)k zmKtaLRJvq)&P;wPt=4j{d#e1de#h69UcrClOVxDJ{XNduMbh^3Hayn1;UeG1zbc}< z9B~$}fOMnKxQLf$J8EWm)&?Jm+Lz#O!I}CgEicOK+1+C`TK>a)&Xwo$e>Mc#i3H)D z%q-zO6e$^_S&9$e{>+7cIwc@_oHC4_p=7hi3sww;@M?^+5%bNk6KhWTuD~ z&sNZ~M}iPf=Ik=$?I7M4@+F%hjZ>}+!qjjCMb+9A4m&Du%IeKCSD~3u?wDU|Lbb{m zD%JOTzEZ((yt-LvF-v0kgO^}|1rF>lUARhJ5A{_B8iG9Gm27=8}eULd2D8vz< zAT1JW&I+#Enk6h;X-Ra-q%dd+NzaEXaJ_tUo6!K+p4QqV5BSyyv>tA>3$(Q+EF#ug zr%c7xCZD1er~9?2Zs+Gb?^)vKzdYnyW`R;Jtk|-!1wT7wDzqHVrRA!pDb_rdJh&oz zF)Nc>QL{~EkT1c6y6T7Fue>U2t6GvlR~Is9mDBkTCY&(Wa4*wAA{KNhPm8*2;r_X< z|ATfhShipxNbg2Lq;t5LM4I4k19CVR!qzjhBfwY>1Zh#qf*7PlEkjseClRmw9@k+kf;qD(f6#MmjetX?a&To_<#xl^V> z%k;-G*1_6;Q)ua|N>!CDBZDvtOmXR?uG!F*PU^OF)*jAsb(hvH-ZCt0m9zqZ(F&9^ zHT;Jl)wKeHml}@VX*SXPUf2E1kXe_`u%}|0UJkSx418Gl4OQ`S2h_)!laM~W%SH`? zFQ%%a?oI40%>5;vmpsNk7&o4*|M0x89=Mcjx7|@VPtgkc?%IxI zLzZ2wjrhJZ+qs;G+1|hwKr6cZn_ZihL$|x_C2F)By4~eQ&}A?B=weQHdl~I^qowQV zC%zcjpUZZf?p{q3aTWiOAr?cdja-m@ihlo*(>+=u%Q(+dVhpb!=9;O-VLjC^KASAybd#O=<|a$hb5AxSZM)Q8clIA(40raKwlN4?BcUI;Nw3q^ z&;2N)f$FWvA7vg;V1f8idYUfp>mLZ=Vc>r1#;>j9;4I5@8Hnp~Uamx~@f2z<+Pl5AR%5cK5D9X$#{>rzlnA0~K&`E9K_@Iyb7 z0Ehkh*o9PZv7+rZ+^akX$FfdA*MleXGj?(mFlUZdSe5|h&lGc|ldFLB7YVE~&_CHZ z*=x?U)j&B^)X$~37{Jd90kn{PZlOoyKT7`q?8@ zmj=-;%-EeRrYsU#4XPjX3x*a2zZh2B7}+rUijv*`uE23YwEf;f^9Bh?Ne!thq?zG(kUWuFMr%X$eSGb`-E0l| zA@NOyTNIoqr~a&-9nvZs16JE*_n;Q8*2Niqc^kBQun!J2Mr7-d9e@E^YXO?8VUS4! zXoy|4xJERC)6q1NP>Faj02;9AL$?vQrpFT}hd>D5s5QcC;F>;82;CsWzmXTq-H+yc z)7FVH1txscE87DcQU@iZ4FKGOt0MJza4I;A$)C@46&ZoG!5}E^YA@71d9d$=q;GjJ z3S2q!*KR{F9>oSh3hT!U<56c(A+X;&n+G0L7B|gLY%!l7szdGf?qzUP=DWA4G~bqR zm?ORyzjqIT44My2J|W!!AjzI7;b|aE`T{D=E0eQwrz}6FgueqBG)GDB#sMVRbxPP5 zq)E407@Lvocl58x* z*X^r(UFx1zhBm#FQ2I+|-=R?6aj$}FT9y#hs%BvQ-;j?b0`1hqg8c#9pNFWS;9_u1 z-zGxpM|Z~{2n$>w4NW;pSzztlF$&5;*A-k-zl0zz-_9b}B7mc59w{#=wd?Ndfz;#f z8E`>U;l~r!5as?gp-c-ufztGHBC;}s%;L?B@R|tUB?Nt+$v1RS=xp#c?UQth`YW?o zW={`KP**hR*HvVI9Lg+Ku3s58n9zSa`|Fr3U28GNvUF9pJxRu}I=$+buE%WY z(h#&M>2ceGF}woXn#@aw4 zpUM3HTv~%-c6cKQpTBJQ-xr+?GswWz+H8@XsJkdLEVLWr+!8 z)A8J}QWImdei>6uj{``iRpn&rVv`tdy+V^TQ|AI>sN-qs;gvTB2rz zCxdI!F9%EY5J}nkIU~FoT$8>EBtmKZyguv=4${;_nfYn!=Zx@baFFzm>ZGyI1ax}9~fBqZaexrN}$nQseU(`sob63Mm=`suX`7Y95hnyGGHXZM(EkZnf{*po&=S{|-p!{)b%zJ#PH;OlU6kcjP&&`jg7uo2o~x1Z6Po?%Wz6lPV@57ILWl{JI6^^F+yL)b>l6$T#zrH2 z1^M45wJ_Q=sYTKDNsZ5ff1t{T8Q*YOonZ1|#%h=GE+uDX_lN}ap9N?8UC&b-&de}< zvJotQw0)q6CRHBs7uE>?!Q3mi~Jxe}EC@_671rKN2*(@<0JRS*YIny;SN6(-t^DEDkaFN?8 z76H?leIv2Ha=UhH-umpy7$)m0C$={}v4?Ms(IF{WaxN7qAqcjbcq#RmDllF7ALy0%xSJdS=gbjmzd*gK_SYysA7d2v!;cO_*n=^bjoB+qbodxX{zcOit{ceOK!?44O~SrOA7Ydka!BV z+-{c`pI!z}66EHrxJcZGFXdIM=^d#lB-;vV_Q8gt8gZd!)Qx<0&xth}c&?(@SHH@d zoo}iM`pxV}&9AYBug>ByoujWuweOs>!C+s~IkP3*1lD0x-eDQY)&ehzV6kd`=m!nCgkg0v{) zgvR4;;BCxJpkm!um^&rWDU(F4KWhAJHoeq1JtqBgd}9n4DbjCC8^1^l7|kfwv^*^~ zEkHRdiB6d$Y6IpjmQDQb#!|O}-=jg&Ufvqt%>zZhi;b&;ij4~>G>+dLGg;%x!@F5$ znJDy-qcl;-xqE$MiQli3H;qfhkSjNfO6u;`zH{R zdQf%tHGGweGq*H7nx8CoopDxo`35e;v}Nh?ov&}NA2|-HegN8lDLuEq?alLv|5=C3 zXs?5y9M5c$K9!<86hXM@4A5;9q+mC+`xN90ikYoIt^vl9|8jthJrJZtAp>jqijev( zNQ+vAu)!~?jni>{HJVgZt~Ed^F7o=wZ^_?KuDxuT@!HD}z7*?mRzGSTR@x}%wkTn{j4RcHa6CZOE)*u$Bjqzn<@O+Rr;68O zyJ)IS>c1pX##Sy)cXw`HnMviQk|VvI=7u{P^*WyJ$huxP>yoTW_fk)QCZTapyfDkPZJl|!>ROoY@b`$O?x3H0K#w?v_-->B8ndhD2+b_5ooIaiW ziv(XZB=Gl6&uD-(k2dNd6HA7^Qqxnxc8gqe2Wq;r?O^n*NxO1R=C8v@^nEftpWGC?%nD!gIwI1TA{t-H5U71*cE87YEye=r;=I=-UD%`)sJsDW|(jKyp~yBdHL)rGf5HXiSS^)2YeRR1p*7mj-u%G!cC@ z5_6ZkhyC+aLyq=(mIa6TPI*=V37V$hk=maD;GVa)RYqM0u3XW4r{6vCD5*jBT=%er z!q~_QnYh@^mujB`o_j}6neUB%-f2_Oq~AnRlOkG^dYJo%g7Itl1{S)bz%>0K36BC2 z@@YNcS?G@O;R!0f}eHYTa3E3uz<8bAD3z&zDA`6(W% z^;ESlFKIAgJw`@2YI_jDs#_6$-Dx^7iPxR>)A$)>%96cFud&G+duiu&wComJX>*}ApzP@BZZ{{>_t8}>lna4uKUL_y zjOGPxrg*q^7d)D#cyy_0Ml3vMdkJh4i?I7dlhBG9;^Dn$s`8kbeD{OXonX=GfbS`` zEM<2qtw%8Z&E<5HN*l0Z_r%7nEo+2*9SYIoU|0|DIfDPRR_BU`v0~Ij4TkAPfc}>&3J|Ya+Xpm;s?o8u41|I^D+%-+H zyQcJ=kXYl|xNM^E@ohS)K9a!@h1>-7!Ac@{wh0cl58UkrEaTrf9Q+^f3{u+6XUv(> zZ@DJx)26mi57LM`fQ3oNAT6{vCcxm!%mBN|JW|&6uv<&327_eg1Z@F12G1ZN$~r|f zZNAM^|GYIA{3ZeFfX8;R$s=X2^-P|xn%0VTT6-w-s^-~KdN2cMbn#W9gl2Cu>{GehD3sLG6_l^2z*q7yO-!?Ss?JbElO6=Pa zjP%v?4@bF<(oa46x#4vx!&xQlX@dJ!ikkmMAwm6Af%{HN;N!t!a7d1Lo2!?cCrREs zv&ro{IoAArBB+lJ-S_$kZGKS4WB%qw3Tf1&Q+dwn5EcZZz%^~15ZKTJRgc=cWebBn zKq7QdJE1YO-g2BM&DSRcVu&_EE8ShRf27Y1i|$Nv86G`Q*MRnq z%l$(jH6K`Je$33Q!!lF|WZ21BwW2$2~v1dZ`6X89SR?IF&$O?FE?OM5E>caa&nELf|s)~l1* zZcPt20pmx=Xpfo}ZYPw->1|+kCNu3*P_$^x@|0noa)z_*<3)b^s2|gi2O=hIp5fL3 z*(fX#Q=2ow&6V+XG-=@xjqQ^{t57a?cYvhwp?i=@(}XgXB%aINF$I?7E!LJBh{#yE zdKTLZb@Tn2Jk-CBQfb;F3D^d-ljEm9jODNb%kfmqMB*$H=Q#cA1}cxaOQ{gv9Z(JY zxc$lpm8ac5jL@WSEy@8KsHZu-b=~@;M(V@#O@WYX(^{WXe+5muCEYn50DJX5#oXXX zkW}UeCs8qDNMN9(dNiCgj{**GtC|1!Ti+CT+^uWC1% zZ5S7yb+MFMM*Y$<_0lW{P zj#WClBiu;3q5foWP16#BvfEY%QlSkTq+8p|tc^_WL6Mr?N+?<#(AF2q&`-fNKba7u zO{)X=mn6}_E;SgW?d%TP^6O}2;~WJi-%06KWgcq?{y;f~d(gMJ>X=J5hpRHo!ZlQk zQL!FHY8=HoobGVfi#~Oc-X7f&M7sV?!;a?eE-j&iBa>ZEgd>~?ne4^_PHHb0${4-QT%~ch6_ud!lZ0g*FI)}j z@t~s8c;*M)sZ{Qkutp0FI6XQSq8QpE}oANlfwU4u>R$fc@$aIVIjjpfa zJO`YjH=k>}IKKs=ats?gNm!hxx>d!woi=-w4=qk9hAN%Hu%}N>I6dd7Syy0Hg)MB#OMGs64)4OI;C>?DKDBW^bO&(c&Zxb)R=%7JYnve7ax01ODY(khlVlJf+&WVs!VF7+ z%F1M=)EAiCTW%<%xCNY8MsT&H-XCJM#^oupmW=h$GV7z@ zaBxzpuLZR4qszclo>ew8u&y+NAvO0q&nsgHtiQzl{?n5&7Pdy+YS zNrpy!s3njeaL>E?a5|}19NC`2kNC&dA)Z>&+FsvpA5OZlZ>Xu>^!078&r^!}Jhh|` z%fh}a+F=t#esv0dbw|th%2aEIPzZ>E+EokHD9CR{_VE&A2W&z9QA{eQ73KJ32mxSKZr$r-&9 z{%q40vdsW1OVU|iHy^?(fNpgZTXLojX)ji{myna>U7Z+HhkD1aXSI5ZGc~3Cp2hQ@ zcwv$MB+nnwS0g!7y9q9JSDm^)wVQS7uQuX8Qu-?`4Z>FTVm=o~P@Be?UY^xQC?%_H z2Mkue2dP~c0?Nho#B6)#Jln*C?LX6&wDbk3|Jx1F#OCD3>6}rNYM&%&%f%=qOMEUyDf8jKNZ8gLKxN&$Y6SB~mK2$W~sI>H(pCn4W@|N@2MdYq(mhYbC5|z4GFe z*8Rqa0!F&?Y=gy)@F3|p zRK-ygsS_#Q;R$e)y7CK8P+dp(9k7?x#=M&&7lf*~Pw{a!tykPv;DPmCj6V-&T zx9;_gI|Exb>LYj|Rl}{%ERzlTXpNgmRY$%bY2B$h6K_-EbC}!)1XV|`e=5$dkJ|m1 zstyBgCNf3f({f-928fRQGL4kZJjkET-BYL3UMCO}+)}>0ph)Xj#^x>x7R{n`?h!pJ zS(EbdT~fh4Ty?bGLnpbpSR7NN=Cfm8iwdvHcjXd9{RBkADZ?P#LYG}B(q~cdpnPvG z&m+R;W`8VHqwF1ORNFg`)&vrBL&U;APRt$gS3!T# zmNcmP6TnkKEE>t4+U53y-Ti$Nh`HlceMwTeOH_UN5Mduxb@BOBtGm3Y`VzTQU9&`W z_xhbB!crr6rhk^zKP#($XZ5@(id-2`T@LgxK=%5hR#V8lKbnWRw$mTuI|`g`jk|E6 zk_YK2^J1jD0Gtw?Fc0b|#R>3?$XpmL7XYV4=G>Zc4)Bub3^A{zAD9HZG@2=J%m`$= zHr~qCjR)S*u}^?oTaoEH%H!s^`^2|_;l_E~t8RgC`xnggo-oW4mZiQF;oc!tz(My+a?`XjfIDz# z51vOy`k`Gab0huIt{1**f73c6I#aD3C=0B$Ia?e4`sg;{Cz)lly=60_Il>*L;C5Z? zakHZN!X2)VcAtZCS$rRJko#jTEzXJ;fTJ=ye%V*%#Bce^-1s9ZUB5<8Pwu1RZv@rf zX3+9%nx(AkC=WdqcNMgQhn|l637YJoXJY-Ah_2H;v>;wX&}eE_0YRnb1JyQT6iyOPBnVy{cPt>&Gt@B z>AmVF{kEx z=(~(Lwai1`XUwViPIKdjj5*cnp&v8m)FvMKDbu-Ai@j5)b>P(La_Z}J;?$IaQ>PT1 zI>S3P$u~01J2lNiv(x6(EDxRUom%Lj3%payJ#?XWD$fc)5?|z<8sVXfy;I{nbcuIr zl7}w+1*g9DPMzb&b22PH;Ss$i0Y5A+(XecvnbYO(w1U6W(@7^@nNB)!M%p@Yx^I7G z+B$KzhZaWW?_v+#oVHH<+C#UbtrP3-G7oP}TPKe4&~0h!#2q|zd)hj2vWMs(>3a~AyIZVTdkXTfju&~onB zXnm}Qo^lra2_AZy7j&Ra@z68Qf*pfqAvla*R+QFu20$) z;t*wCgOYqhWTng+aGVXrX|rSlO#;laO znT-Z(SG*=J=xDl*3NPPC=}b)2VJ!@^7P#rrPb%>AmMJB2Z^O|LG(5>|E^q2y%vHzO zdkMnZ0O2wfAF23~BK61l%A#ll-M1grw8#SZ#?Ah~x9g>wICCY{e{zOB_33SqJ1b5d zVdYa0YgP27u)BOcjkl?)-}C%$15Woz8EdM44GJaJnOb@)d$H17i9Lt;2StAHhD?3f?)Os8JZb{ar<+oj_-(iJd}By72{2B zQT9%rp=1?cOzVOV_ORtq#a?%abqo0_Drd#XtH8qZmsSO>;$%s6nM1LV?ygvCbsoI5 zJ_D$SKKjB)emQu6G5WG(m+yt4?<;ot4IgLB530x%i20seYd^)~R*1Rhou~`=O1n|( zdfEW!ss#u6phln5eykcRe+x7b^ubTX*@J0*=x@bdj0yFyO_^{VMcv&LpK?ZjuW&_{ z?mvKucUL&NUuabyh8`gPaQ6PUVuuDl`7cUTm>bbCnA~l$T&nF7uP1gfkz=NK- z=W2q@Ide}s>*WGZR#4IfXd$~S#p(x8o6MQ1PN|)e9lg{CV5PU$DV{_1-hIv%P-}$V zeWnTMW3oh}$5nvKg?gsFw(h3w87T;Q{0PHV3t(DvC?C9)nvC=ho4$wWxz{xA`kfMw zG8bBtC3bJ2$M(?(hQngj<2FP>(kwIJ`F1{ey#q`y&!Z+{LmOx1JK^YdhV)XWffZvf z^%`~496k#5hapupQ1DAh;=-Hht`VHAgQ zMxRu)x7Jz)D6321xWJdZ&H~MT&T(M>#Q-LIcC445-vBiYRIr4Y6;F&7A#$ z^tB*&0YfVHPu~P^kOzX4DCAYq!j!0Gi1cm1qS~Md8Z)@TenmOfXdW?x3;10EG#(;` zXut$4cEuU0yUoizZ9;8454S>>+C?KFN^j2PbJL&Rma3fM;a{_K>S&V8y%2N^*aM*C zvh{81WSgZLzac2uph@|(8y%q|HJeJOP1sL`-s~r&sO}(cb(tUX(vqg9&3l7e?M*UMHtVRa z3C;h5p`hDl3C~92*}FbUIXf=Z3Uo5#Y zk-dp4N0;BjI!X2pYD99({(#Jfj|YFGlAo5$rzZidl*4VQV^^XP-jJUqs%F-ykU6?t z%~c%Q7gV(LMBk_fj8vSNe2*<=Sm+pFuhA8W)?*dpHOmkD#ug3B^nn4Rw_+R3SG@;D zs&6N}V;HWf^@h9`r_#PYA>CBryR`1?ZDP54^BpRRuU~Q z;;W#=Xu_KjvT`+w)LBrsqT*aUl1mVe5fHCO8OFb(Oa1O$jRKF6hH1sU2ZaFc4eRm3UkK; zt>mGgN{m>#8_HxnGf9=W+oNhEqT8>U?X1zNfw<5TzLnyw`5yP^wyxG-Cv}pJHJu;70FeE;vb4okF%25N4ppINJCF}uK>k0zKN?H z;SXxY(L-S+g|)RS6l?1S0<)Ae^R4olB#1NLPNrX|fxDKP<=ttpWChKjq9d$Dl|3Zs z4`e&Mq5mMCIJ3MQMKW>e&e+UypKIyyGw$Qy{Bt|*0pga&N~WK2KL=;-)pFg##r;*s z-2LI4(2jeIxHVKe(ET`^Jzp!={X21g$~@5l_fc>@-Hv-ZaS!g8`zJWZzh16;FLASH z?@0G4a4u=bJxScZ?^yRrZ}2aQI7{*VlepjPSobq3ce@;xWn%jwl&L?n2J93kdmm&N%MEN)VX7xQiIIPW%DOp-6r2 zm6HvI*7dlt%V3Sub-@L_w`@-t4JDXpl&{#*X)UVvGSyJ(s#%S>*7x$)hLyBB7Xue` z`_G)UMT#ep@*>@~A0FHxFWyhhph--xH&5PAnduSpoy<5yW-LopsCoSyL616|5yAE< zJM|KNnCkXb%!yQZExob7IOist4eI<#$|i6&E&;{0^*t^AJ-$d7Ox3OfA+*#e2BvDT zSCtruz;}xL;pI8tvM_B&k{wRIwczzjfuL0eO+m6 z!v}maDz1T2bsGiwU7SLL@OLb0Rr^vnm){v%YBjK3z-l}WFbcM^t%uLp_ z=E-8y!WNqDlt~h5nwxtpth$$iorqrEF6~5a0jU?Z{Z8agApH;=P*5cjU0YnUszfbA zl5T!$;T+l>lbp`+rEZ> z;@D`)H}-&6&eUD(eN$eBFy*4k(IC8yElHCG+zmiBoDQJ9n>ee_A^%%@L$5wZ8^9jD zDa5%FoYm)UtkFG4_^lJX?uF8OX#Qy31C)mDfn3S-!bXzz?nhtvFolibEuh*Q^%xEI zAxpaaJA9g)(DbS?3}{17g=K;||F7_JgzG8n8&OmpM8Uprb1v#K2H*}pU8QXZWNv~vQ5xl4ieOrTWmW+3|)_i999?Y7Ffv)SM!NmU~?aa1Mw z&Y7goKG_)X8Ij1k0domLHfoWQW0(=lnTxcfM!8eCJZ6^U&ZTO-z{dh&)nPJU6=Z(; zB^hI#sVR(O;0sKYrIE6-R{hEy701>=nrm?Au;CW+5V*E z&y1)BGC)Vm!9;&k?iX|nR>yVGEm0SBN-$tNT-l&yb$We7!ZYAZ;i3T-aLGqiIncPS zz0t$gkGXdtJf|wI>mQcts96Xya4r83oG2Qi_zYbpOe$FALm1+0)ni^=$B}H&5UL|% zbPPNUFI;g{t*kMco?tg=E$hLueZuE`65jhXa9Rg)<3(Rt$(SC$y7af4N_mIfjuMs; zV7go^6)J)jS$S*~Rz{~=mJF}hGrRpe?iGvoc%iXw%)?vocw%udmmoSuKy)@GZ*twN%bzK1s+1^mO|I=pFv7a3uMp4h ziM4B72AI2onFR1vH%4IfMIK!0b{5#>QGrZF2MVf5h|Ap30`p5f@5k;2fwduyz}tVG zpsq@R?AZJ0EB1AN6Uz0dfFrvDI6lZ|eMh*SQkk9PQA58Ls@_m%c+`l@KSA{})C`Xr z*;}aIib8g_P%?fKN%k?eg&wy!7%0BJdQO&I?s1>Entur=S;UsRS_36ksX*(N8~o?4 zoAASg53>3D4f(ZONyzQ2jZq%=lN%!3_R^;#JHg{;xaZaOar(v5>|}7Uz7hQ!@w#&? z2-7{|z3x*nUSf>1JZ@?@QjC`slzP>aReyY+DJjYg=OQbjIJYj2zLIYr+?#0F0i*lDzHLWhl zOAV`m{ZV&RN!~j-(ApPSW z2~~*{N8J<&84y&7T81c#liE=Bg+o-VMo~4B0?T?KJwsKI1u*+vOV#%$azVH@ph;I< zN{t2-aJ87*0C;;Za|qSECXOg~IMrjoGD{;Zo^TV2s=X+pGU=^=O~m+)70YQ9f$P>6 zMdlJah*lcPMzw3%rD_d^6`ebf%b$J2!>RgY2razlwstO;(A6&Gl8w8IWk*@YVZccVQ2P;;bQBEfs<^E;o6>E_SZN53r~Hve)L(Jc zv5=t@Zuo)!rSEh~V>@*z_^J=J21h4CIS7z{8-69#6IG3(n+nx9y1l@V3)1?I?ghX) zGE=E!gUmI$MA-*)nWJJZMeNYd$F5IMH!GH$2OGNSH<)t1^>ErKG@2aSO>Tr z3ZnNwekeXnbkRpZKX@pJMG9R`tRGMfVo}Qw(PzM>2;q3nH!`7OAoa=?mNp)LdhMHn zA?k_tojv5W)4?awT1k5u!nBKO11Ed7JUpKQkJPSWgR1PZPl&;%6xH8S2o+@Chb{X7 zMHd+|mDMncYQ6z>HR+FVp{ABHs_9D^*9@Y}*Q`$2ShFtW*qSXUr?{FObqQP`>Fp~~&C0$K*R19%`I>corLks9Um07ov#%gOF{y<$e@tpo%}Gg(e`x>YXNrJ@ z?M?!uA&}kvOPoJKMO5tJXaewYTDRfgaS|G`H&Ns(2<=Xs;Y;D_MAYR}s@H0dD`Clj zZ?)IZ|Mtxu4?cS;MK_Ir4NzzI9eaJvEK8!eo3bacWvWYk#7n>58>|;%x{Fyq3(3D{E~qwns%Vz`qV?uGd=PVyAnaBm`!)mqE%{_V~Mpr0lKyQ3hiF`t+n+{ zXKnum=3mkF-;ywN&~^~thb{bU{YZkD42WLQRB$_i;E&O97tjeF3SyC%Q$H)HJf5DC zJJxN&!Wc`UQzl99*Sj0OkK=U9!gml_QDyEY)V+tQ+!gRERDFiP*hdhJ%mq>5DwcyP z%@Z=Oj@cR(MzZYC$Gj3S%PX8IwT@_Kxtij^hFRVzlUeS9-b+7a6q2lNSR}a>RrZlX zee`2Fw3~*TpAyy2rI%(L**OOce2JZJddSKD2?{RoF&3pDs5{YN;z{y;C7>^v=rOw45-RM+*o_(&UGWP=GN*R;efJX&)!rEtF%;+PC zMsEDvx?~8l?YrdnU`kzbgolbE1j)utZ-Ug>K_ySs;s)H-I5pEl6SQ&d1XnY6;OGJ3y1kl zmR^!AOwEyH_#I#{%xB4q9w_!zF-r=Xelf$_F$u8XMfgUr^^$D6DXG;z$E^x&Y;ED8 zVystKAgyI#QEFMjT-z~|wJfeQ(c*nppOlyQ2E3mSmA6K^^P z8DuZ}l$}c(MSMR6TlSe;Y;_2t+o{^#HjeHtRO##>`ydl`cCKda7i{YO`R4vUKQ5{l zL&cctjhQ&PW|tDx>^l_kmgZ%}KBz18?59x90AoG72^_b3Ac#f5V{Mu?0B~c^kg7=xkl5|6uhT<4Hr|$Eg03__zsKSpP}U&ZS?W6oZ9KHe*qW7LE{CQ>cYtBYL(Vw}iZBWYh$tcgiUBhQbj%nKR7A{( z2}K1FJt(4>L4tq@5fKB5h=Kt@Ma7H({eG*ux~Ch?J}(!~x$phH@6PkAp8Bs^RkdnW z)vD_1>fTj2bD)R*mWV8?fMpA536^8Bz|x*z2=aJ>ma=@dzKqE7&W)fwC8DYJ1Ybp@ z33h7%hdy*j>b#A)d7i9gl>I9~T_yH5MRECyZKZ_g5tTo!`l|#`JuxlLJYMOxqWa(z zx~HBO-Q9(b*1Z`CP| zp{1moo7~UprF@r=s;#xEI=AL-ZtlH9$DF#kRIdRVXoZFyUcr8S(D=${qyA%)2VNon;WwKk)BOav~d*IA5|E!=>;VEEm75ehpTD%Z5;JG z9uOHRm-FOuv0Sd?61|y=`V;h#6}^W4Wq%RA&x&4fPD*Wpgn#C_DU~^o@G>j9|E($Y zI-j+OylX`#a89QB6vFc;;Rrq&8aaWBeGZq;(x8$E_KDoxETy9Nbx)}y_-udVdPE!X zj(M~-7tJ{n&h;ILn!uO7?HOF^T?!f|iB)7HgCzPHmwHx8C8}7_n~7Wn5sqvrN~`F1 zTm}@URieOB(QT=;YLx~cxiyE}?#0v7t`6L$wq@5T zOsTIR`-rGz&n`--w~I+MhDQ-^RZFQnK8+GtPMSLioKi!?;+7rZB-b{`-iHh(W2CFk zH@UUEFr|KlbZ+xUr&NlnMOKpApJRsb-fbnE~ z;bdd?7->#=Jf%84VZ=Ts@WGP+slu8?DRuvRz%5i^Ghe&3mq332n(!%&&dUIgBewX3 zlzQ?-z|DY)_t1JR;1a}Uerz&$7qIO!ljcptqMxVKc1Wi=;K!6Y?I*yqh`sZt$>2r6 zMRn8a#IiKUMM*QGby`hs12_Xvr)^p}?M%%0?rC*s4?us?bl5MgdhQQch*+$5TD=L` zhY~aKfV4Wi4?vnEm_|PUlGji07}06n_(j=k`6Z8D)#5KQsAM1KD|%0_TJ;iB8B2m? z{m_eA4ALsQ)GAZXCyn?)Q{?TXc2(!_vy>Vq;E#AS=i0-SngU49kJQY2X{1tf z0r6*S_MejX@t%)l%vcxUy2(ckgQc;ucf@NaFPY;?$T)=Ia14q#Nh4jG(&{_kQuJ~u zZ5c(MMbR6*qVJ&S?OxGuQFLmnU-SY~5?;qGdbwfXDczzc?o#yL!J?Ph_1U$@5KYOn zSN(d4J|?!lWRM>#PV_(5)wG&04z!ArvoN5jF13qwuxm4!y@{#&l7U?iYn=GV*j?i7 zOsqxnX|k6D+CE1{>v4i;n#*Y*BBimqtOs3&%wBd0nS4IRWoY|!vfCvt7+uN8yE9Uw zpgv}iTt&k9hK;;LuQOea?A6(w?0$(hMno9WaLHAtR7$vwCreS6r%hNKtLI43Bcw7E z>qxPq0a9e46gdg-H;PmF7tzqO$fQ^6(!{a?w``_YWp|8KPkzeTYpIlGl(M^-d?PH< zSrtqm1Cf!*tXKPHami3H$8uG#Mx{wFQxfV-6J8eDmK|fAli!+BG($?^{SuQ&4auZg z)8tpiDly4qZY-nX>y08TA5^dX>Lt!G{X!Qb{o-lUFT~nzzlcW+t0%ej+P`Z4&j>Hs z%4fLt$rgA&UN7knC@R&RaErucvbj4Us^;p1x%-{&i2u6ZX?y?Oey42}?03Ql^*dph zewUOnBh98$$++=4V!qVT>xk-WfY%XA0e(kp3kY|_|5EwN?>Ew*2h=Y0dzv;E-9!~k zZ{(`T5LXA(=^Rc`rLw1)6xCJ1oM4KoomjhEv#*4K2B{t;cXs@2|-0`L`qY`3gC8{a|T>V1h}R#B0s zV@yMfxD1ICSitnSj=(dlry~~v{>o3O6AFl_%FNq6lTr^rc6Y$HXQk9c4jt<>1!t$! z7D%TlHjad%(8gTNfDYXL9N_Ki9rCx%xSgW^FY7wNxwyjC2aqpU#P?}}$ zr_`WzM(pJEtS=y4%NsVP)OV21Is~rS%#v@5$!!~fabK7WLSm!%_Vf-&tMlzwDK&Ph z5nIWk;qIRSji_AvUs5W*9ncaJTu7kXuYfNtJNa8my#d*skQ%rnr8Yu3vrsYL;tj_t zRtI8_vmS9QnqeH{AdI8efG-#YwPeNLO9(>~Y4M@kl(k!ipHa9UR zwMeUrO-Rnf6(Aa|fKpc$zmfWmtb&;6rhosfLkN|FS z`ajD}&R{MNK=z^dkA*2U8L|%ug_Zr}Y8K&;T{B_Xr!%zYLKxU zrguXEA~&*%k51*Hb3fZs_JHrn9?}V~vC`^wNXu?um_)viv9g1U+=$tO*>C=I=CQm3%`g}B=g&ocz%}Vk!d4;%c@n7y(E_KzDS#8R0K1hnM~g?Tpv<_h2&gv!|ux#g~0S>C-wZ8UPp*#N1a zEOA}ghbdsY$d0mWI1iy>>3e{a?0U`Zm)+SF!z)uNj8EA^R#;Cpn)&MStwB?5|=~@`SNO^8SiD3de}+PVx;m zbeEfPCQC>An^@K42xD1)u=X+IOuGOXXNk2Y6FnNfNBtL2f1?y(N9eSSgzW%PKW`Md zrPiXpJI)dvO>x?~-%(uF-y;ce_cNhpx5=vS%a}wi{Qd&ao&8gSL*;>B8>>S&h;VMM?2S+zh~7g zko{LI@x7_3wrn)sJh{m*v@uGpGUc?U+q9L;s>HiFW6-rPK<{nLW2lV)7+u93jCKY8 zhAWsPIaH0iu3)YJ&lPM0_^u%Nfj7Lx6_kOHb6r6fiNa;%a0LTJ)^i0F0z6kR5g-ukN@3y zOLx>VO7i9{&Cn$+ps$PD(Y9)g$i>54hPJqqsGS^aM!GhhBib!DX=Jvrn~>&elSX?d zNpoD#J4hPsHp`^K*|_UAy9n^y=0Je&Hb(+XOUf4nL_1w}^Z0&A`5g>lXt&uszLVQ* z9(Ud5ILW&?4exn8ZP_-IEFN#V#CjfYo+(*-ywy^&>+!-Kw{^U_?*g?ht>Tp~P&2eK z*BHZ;h+#S)a;q_nE?*3DrZJ4MF2?lS=1-EQ6CFw1<`z-WbDOCTUALJx;W;LK0etaT z`_O>`JRdqzK&1~I2lRdDbOD|ZT`j=#q3WZ64{Zww_|OqR--nI{_&#(JAmBr1iJ<30 z*9vfbs9(9SrE;B3<&ql!Ugg>XWKKv*<)me0W#CtEn8bP&tPoIH!HJTMH%ZJA;8k#~ z0I!0{je!bw0R$>I66jZO9Kf&O6hNSYb4Adr;6?#vlCV$dnpQ7C_TJoVE#D`tI&=d} zj9GeZ-rJo%>}lUKbsYZ()5oo`L}Sy3ixv6Y$=bZSVd&AWr;qwIn0`MddRnZ8Qx#Ay z;QE-OchD;Y9LB;=cF-pY@OIE=0sI~GB>=aw|AifN=6TuIW@-Nk{n~2~N^9Y-)3n}$ zV}<@YO?T$qb+PQbsN(MB9X zHganqsr1V2@K~XLd!QLIUXyw*}p$ z^h)2O{4OnYe5_Er%e68FJddJ2aXpH5mrVtD?y_8f=S_wQsPrZkK;N5865x50B?3He zvJIdIm@GNVKJ^BeUUCiu`rc$D!1pHO00D0@MFc%>vRr_1m!awE43^L`U2PWuZ@Nl- z=C+cau9^b87V>ToboW1AJ+)3|5#R_vOgrz>yjiCT!96-#SdmXoP(%aH)_ z&f1of1bDWbCBU=g5&@OATnqGVxm|!~%ch$Eo-Ky~d|OTg1U&ORSI~Vvv>M>satk0} zOU3PmZ_BmWQU#I zvU^LgElL8}Z`p`H@4f?{zIQBnijmblw_mKW_S2&!YtK(l5#aghxd7i!F9-b3^V8S- zub-}+^d9d1yZ!X-|Nr#U8)Xc5emc21;9J@X@O(>O0iJIeA)wN?j0XC?Wr_gLw=5Un z`IhYf-?uc~;teqEr-uQ3KV1Rveal2Zz_&~nLC;UG7Vxk9wE6-8&rg>EWH!})x-H<} z;ivVS=lSWrQk-YY3V`pYrwH(DIah#Z%jE(pZMhNX+fscA@NC&ufM?4Q0N<9A00BR} z#1(Y?^jd&#%WZ&wEt6l7qi4%50*s&be(5*9hg>gAbU38*u&E5HOL;b6TrW-S^gPh$Js{D>ylOnLK;jU@UjOUVeP(6*6+Wt zvtNDRv^pBn;BEpN4d6QxO?e6-$FTGwUtS1Je9f%D@35?TJFAX-C#$SqV@`h36=E^G$S3>8vyO|;*SKRI>l`&qWG{|no$gG|qXk?VY3-!g zqnZTJZ8L{#W&w2D+zwa*aNCBA^4pPctt6b0ahQYEb_th6oPtYD@v;t1)T)s`ng6Bp z2-mKakYC7?#cOYPk!q0=r$3A?L`JT%YUGun*g$|S5Bn3XjM@!F_G+tHBJW%`acvkp zZz)RNXqMnf819J$l{m?iFhx?8Mv4;hJpn0Fgd(p-ijz`(k6|Ah=cJ|BKsZ%I6} znKFiRM52g1xo?3wbeEa2!qH z9td!|nRmQPcQc&7f4oZ=da!uMyM*EO>qOabx43FBt&Xu+Vz6PzyXU5(; zGaBsg=HVqtj_K|)q*jHWS&b7L4s{vgB?>oLCCR-8RWjN|EUB#gId%5MHBcw(n`qj3 znbw^M=y8Homj5c0@n7YI&cD@3X3Ha2?=ATI!<$!iS zIr&Eu9wFiR{R%%g1&<@)6Um>y_!{Hrq5ykvVf?6}u5udpZb4lWOqxXp>k@{rmIEvbgQaU1lS_7QM;Mb6p(xg zaDTLpBUNlF;0e2yu47*Trj8>C`*oZsz^mgdfLF)m5;k?*BH_PLM@K$jqh3aZr|gV# zI<+bjaEIO5>Bg8T2k6P`C(JVf;P$D+1`H$ClD0;;YT^gu05xMbH=3N$6gN(an?iB@ zC~mq}Tx2BUzp}Wkrno#QZVJUIvjHWIYwzZRLg(nkJWG?}?zT&ur!Ho`1@t_{a`Ni} zQm@e9wVk|f7tufxUTI10j{Me9IoO_Rr=3E|9VWnggiryNg zlPOD-ukJGHs$?r;OWpr2m$i>q!Rtll-e?0|pHk6c_v_O|#QpjVbgSUjXQT`ML-nC` z$?^hr$Rg9h_N8jaq9CWMa7slT-P35`O z;*oBmfLnD=MZxK0%2$y~oM|-WJOSczhTsF%0<_DiMbhm6<8sb4_0%0sTuu`+T121S zeemc!LUE-lNFXlf1d8hd(8V>QxM2WOoP7CDYRf;@<#aT~Il|aomvh=;ZVkv(yPPF> znMnZO<;((jE@z2^jmx<$4>N$Z%h``|w+ZlEPV%+?gUcyHAcxDDLC#VuJ@~}s9BgW( z8UId~GtrbJ{ZG3b=R#~zE~>4k*;itVVE}E5mVgR?*y04-??ee3TgWEqbV;=i&*p8A z(&>y3ebp4xQaBrV=DRS+_|8c@7R0S1nS`8P5EE396g-^r4;^b0aC_|^yhl*4$ozx% z!qAI(@8G>K!Yeb~?}IBdVT4v@!Z0hdgq&^=U38!3);lRD9E73!w7&gLOquPnN=YZX z35lx$jQs}LmCxm*0{i_Ot(7vxw%-rYG&~eI&J?5#w}uJ8xf0#iie10KyL%6k z63E&sjPKtju`8mkXHTsZQ62!~oCtJ7SmJhN#k@~;`+U+#iE@s)Yv>W6uS?>rIk zQhL5?9X%>nQr>>(Q6cgxsn&o%+xW>4~UK;>pn8PMPCDHq^v_EZS) zHhZQ6w8xUQ{%U~RoAgbDTBQZu&7M+#e-qIb;NExYGc|oh(A(@8Ex>H{d~14&HpnY7 zkxEaIK3RqT_QqVjWtQaO^_JxV{tLZjqsV)`WxES@o%VHKNWEdQ-u-oiw?yH1T@gJ~ zG6;5#0%^uz=ZL$ET{}mfbdG_p0+k(u9%vQ`(ium(+1K!U$q&I^GEQQ>UNQ^d_mb5D zyk4?JfY(dZ>QFB!1^T_DivX{ej1=JYk|_Ycmn;VaddYTI(CsCuHv_$-DIm~G%7K0_ zsSx1y5`;Q)6E|HrRqd+DVJuIii^v%1QDL>pI|;@-Vga3d9iir(#>!Vk@2enN099fC=&Ef8>a|+%* z(@mv^(q}c}-dvTI9U6`XO^Mb`A}gzMfPFvb`D9f!On@vmATp$TUa_~>d3d7AMZzDFEF2&7^G|c-NFi*h!k%s;}t=ISu1}d)^!OCaI z&h40qe$-1kqW13(kZ8DB-)II~|B1V(k|&{+%9yqm33I0DH`8$1G8Ld!%^!dNelP2G9rePBR9tiKu&4cPNQdYqV@lXA(s<6|li_oRKJ4 z4zM|l>pX~Z!vH8&r?4)HRRCP2$jUzS^0ayovd-r>sQ&mPqXzBBDC=5|;6L9qt7lJnP4kLJV-Z;@3mLOmXqEamOyNbkWUKZJ|UvXvZ| zSCP6`nxpW=K>cX8yHiCy2U%^Mybax0i~N9D+c|Ze%WuMxE^zX;{R1!dBj2DoFIr9V zneZ4TK!sz; zsqHDe9|9FtSXNOReDY_gsg1KKQbo0oR#Anmti*lYmFiFA%|sTqwn`I^Kj1RNu!YxJ zWyzTVM$6YNRw%`b_=qiOWMmZHXt9&Iu#(aJ1v{DCz97J;!O?R(1Bog~B-3BvO(d#D zB9GxG@)>TTBc5040x!|cR*huu0Hf>U7O#rSMq%8E%sd-SnsH5)4Yiy^q-O{F%_>AWX}lNg0BK!q<`$!;@< zBVHDZg>SIA-EM!Seutq);hR>>`Q=bJ!ZKCo=RxJ4hCCJi>Wst6+vLD1Ztr!2q8-7E zov#@pgr|y5I~p(btaz$guBW<@$f=S;J*$@XRKn1M-Sbo)qta8&MkFI?JWu5@e5d0x zDm~RA5`{dK$M6&Rj7m@Sf|tniR34+!Qo~i^!*i*HKqdiqUtB^XVNEev| zyK%A0xm*Gjy~CuO8`L<+oluIdW?WFCXxKOm*Pgo+MjzArc=rFua{R?@PM zCon_6Ph{P5dP-di6_t@D6qCEqt+>r5&(NBpTW;|Ed_EiU9AZ-FNd#sHNCPI~Q(u5| z1}*TT;!BGP$?bLm>jm@&ykVSa(KJ>IArR6nRJjls{Tn_WDw>=gbWhOU{BJ7vJPbs0--`fF(C~?VxgFjsd5*3QfWrbfr_5qxl@GF zgt89Bgp3%9d46z4&Hocy&%|l(W)(uYZ(JCUcXnlT-MD5-#Lv|;N_RDLP{Io}a@t%BuCQ+5U2FdY2H<6R*V;G%b6fAKZ zCo_)C{%^RI7#%5ze*_S5$x_Y>JT)YMIWO?d;7aVB7eF*}=|paBE}<#6N^@RLbA~|2 zd1>_kq+@#il2%Va{~GW+4mh;P-tDd&l8KbqI*UdDBYb1u4rqYa?oEC{2d$|%aGwY^m!t!2{XohYoslwE0XgY(-+feZ< zc!9g_=OYJD@jZ<7bMrImDX4e=U>)u)uR7pFZt8M_=LTlfw@~qD#6r2XyCSRB4kGK9 zaAcRtJ>8<>prkl4zJ_Gw(+5LOba&A6BEgH21jVAzbbS_J8sAaIATUC0(Wm5ir}A)3NI~5_k4MBCwtI2=at?&m64_JTOq)m+ zSS}F{Ftn;=h9MnX7|G~iZW4KBr6pP!iL}SK+Em78Y~a2`>LQGGBP_>11r$8 z$-Pb1z9r}FY{@A*Tk`W=EcwjNmb`EeEor|rA+7SSrps1ksreOwrnvr+KX4(xUdwEL z9iS62y%{r?LM0#L#Og6#bT{7xOexN)*P)U#WmO@wNMr&R`(`d%C1WM~WRV$t8LOw? zMZ{PxpF$gul=+MR&U3QKCB=RCVLS&foxi)FJi z9%F0o+X-29;?=NLk(c>gqf{!|@hHAA1hxCqidLa=7eMWPwCqmDrPVD^y98Sb!H9m# z)9N9pUF~oL%8|{RlGSixIv$-;BcOJpEqf&YZ<8<)_UgO&bPuGZ?t3bwfwYwm>dYbtNgZRcjDB3p)BfE4mwD6`kZIIMdplu-mWfC8R2RonoG% zzU>HHB7jYxe{YQG{}agkBPrkt?mOqcnO4cS0Hd@`Si##D)5E`jj_%AlpzW<$H3K@j z2k%+wjdA-fZVvK=)k0pqiu{bIyORBl(6P+Jr>)ku93!6yy@HE9fy*OM^ddaLLpJj& zq`~tJAHaeHL@v+6__D6EZ{;HFxO{}Nv?kw>gyQn8%0KI-)W9+W#x|g*LOSMJ&(; zv-sJxO0i(pVBb|dbAaLz9BZg@xnpvRjc%Ax6YBBRKC$R4duP<9;(rE08HB{v&d8`0 zEVFe6A+eA;AtMIGxV4#42Qxy^L--NNhiSLSlU(ctrWI?wLhm1AT2X@sO8mKsZ${h<`LNM2m@vl zh#zS{R{|3}Fq=T{;U;DYfuf@fcN&!I$pl&+XTWI$7JA@w0&RI3q6T{n&G{e;4{1z6a3o=@5Kb4;k}sPGrSiQJjNd1+$m?nkv!2i$~tcWws_zrfa3Y6 z)_NX5s?pD@#;=Ca%42NZiQzQoPNmeOcjOkSEgx-m2R!5k1aReiFbPi{*2=iNU<`Cc217=W3DK@wJaurs-0>YT~s3ZatM} z=7r{NQ&O~kox9SMsjx8g5e@$HXTN-EN^OPo!tJ9`DRtMG#+JcVoc-#}DYe&RH%1$_ z8X0+py$+-H`PwyX?PjiKCB#ch7VduxdlxjmwXj-28xt9$WNTqjyoS;87lxR%&`BJE ztkhGm-ds4`BoKz==Ijq+gyc4xFH4<3HlqbRA8#BV3XrsC@jvoP)p#E#fIsP&w>Nka z!uo|dK18qP3Xm7(YM;qreSkhn_B$J)8v*(#*-_}T9bk^H@&@CRBup(P;qr{Ljgp#5 zco-+U-T;&XIL+leh|n;JID+#7vL#8Ofr(w zhhmKifUodGK&8UUS%*H;;aQKyOA;$Fx)cge*%R$*iDNLl$B=VS1)b>19z&mna+=cs z^T+`C4vx$rs{zTioQ?M8k2tw$$LY-7>h{TF+ID)D|$^=nZ5w4GJo ze`nPbdzrpdU#feJ-63(R=_*pZu7Wow`uhBL)(Iu#FD3TI$M`PoQ`}kIZ?sEGow$lt z55#qVf36#6PrQ>S){xlVu5(vP-3|%RtApl&R1;4n_Zx9pQdAicy16djnQ{7noh0ry zbB1*HlD>(ue&u6qIa0!1KxWNra^{R1i^0gcRpUXV|jD0O<&7sSETX z;ygsfHT!QjUI9az#qSj!!`~s^#c)?)n73TxXcGi=5_Pl+rKVIzRA?JiL5vepK^P$w zJcg%&y$*{vnVQ4u_lp_C7LrUXrmgM`5})A>5^qhF@CJ#;*yBZ(eGsZWZPY8e4ub|e z#V=TD#JBFuDXL0*Q%_4#`(7BnmZEluA!^S+!qZZ#9b{;=g%Jxj>l_#%n|ch-rU={H z(D_WZ0>xmvET!&4=lpH1-osCJt=r1z?F?iw*Vk)daV{eOIoEzVZ`J{R&mBO%%T3<1 z&ARe1lXpT^tkRVIJcg`VLkwBDh8TOedL13C!K8mxgTJ$Soyw!PWsts;3az+~WwZ4r z*>(Mkd#ua?cP~PVO*b1?ddYS_n^v-MrNM5B6<15EPLNJh)9fDTtS1BJLmGs#URp1$ z?pb6M4aJ1ixw#$RVgILMyO}{K>$f;nyWipRGe3CO$pj*732RVy7#rP?2DkG3EW$Rh z2Ky7Z-UHRxls*;GF`EeN&o;6KcOIQqe?S_{<_X7JkgoQ-+^Wm%x(4@}+jR{>x4qZh zl2-L^H5vRiJ*|4PS*3Gp_C#780%`LG??~)nPo>pDNQ;GHYX6Z|7eYGbtR3tR{As|w z92Ki+W!#wO5*!y~4_%A3td&vcKpLFfiKoV$4Y-KF3J-+JS$uLvU3ZERt35KK&VqJT zCsflqr)SgxNQ)hRaYp?KX>igdJl=qI&7j9s8Fdn*ZBTM`M(qn}BQCrqqdtXp1)(%| zP2w5v%_i$mOsGDg-0~-9)Lclb)8N*OdIZwoiQh76Eu__1$RYAiA+5p2KiTm7%fuW= z;A{c1ud%)m|5gME_^3%%oywVWom;4n=I;KX9v>Rpp;6yrWL6ytY28AGzwp$ox(CuR ze-ZdX#6+EEPUGh>PB-d=(zHDzt1gAKqAwFzGRlD5xz)HJt1gFhn&ib<)dte#vkuP%9cPnO-P;16M3X?jmbI`Gw9l^8V%_ThFq6bV<4SD{YhE%G^Euz`1Y(i zAJQ=)aQ+=xH5Jks959WiYLFJ&`=PA51KKr%m2kh87v|Ll;w1NQ?Del2vCwyNbQLG^_rAwAj>FvuYWn z#Y*4Is^=l8oQiBzY;kXvM=U?eBNmmPQbVESQ#=IK zO$*s0!+$5Y;Bf~L5TCEX-Y=xo&5+LeFdmmY3~8_@X`c9%2aS-+s_wkd8ULby{5pX%LDj zVjk@X=``(*;Wtbm4RV(gDl|99ox!`z5`RHjo%fg})IP z9gxl~gDc+$(%>=zGX;o28sOItf_Ak*$U4^!;qVls#X?n>cWPFB4C$B)PS2{lp+#2G3oPRU09lCIounmPbLl(A=OHPuvC4VnYdx5g_G+ zs_?)yS@jyUtJZJgmVbkE22*a&s-@7bVECO`H6GeErtQO7bp)hiLX8#5?e!St)z z3|8PFe}Hz4S@c3yeGW;Ciky(e^PR@UKAX$KP>k23?3WtxL8iulnN+%46P`jq8oYib zj~B)pu@7$LAjoYd=9&*#i9jcboR?OyXYrO-<)_tBNM}&@Abyz#(qeNar`4BG zYzShtSP&io#pDV6(;O@N4vLLMgTzdJ;Sh@5N6g6tW(s%@MPDTlc>o|<_nebfV<9c} zIDsz(NX%o8rPbF^>L7J*6<}x20$8Yi!vlQ zQ5s8etj#_tqsk$zbqJJ?&8SNuUFfXqGwNeVXVCcx7Lkw!GoH+-4Ujg-y-#J-I!LGa z;Mt6-GS7$&eJ-OWLA$02WstuxqxwQRw-X3V7a-=%9W&{jjCvK)Sr2(Hqi%(?-TH9| z`wB?M4CgfVosf z(mwMDd?!F!E|li;A2X`%PbTI(0#68#G_U1l`K3~RBu#oqo6@Yh5Q=T3@7z&6tKNom zlZ3$P+F6yZL(C$|nNXJ{0;I)4Ak>w6bmApKC{{$8tIJunL0ZvF&#dYXX)vQ-R(%D< zMsiB>hC{OIRY;G8wnJG5Lt1PWfzJfUD7ot>6oqum)U&hdJxC9k`#7Ju0n#;{e12BF z3B?vrxscey;~3eHPBZ#)ybh!_=rfh|DHOX7bz0w-Ri{B(>@J+lJCKg~hP7PtM@-B) zPiNI5kd8U;xvZKC=`=l`$0I^I=D8)fAV|kN{1WwnbjG<0!Tjd$bkvDeQI|npoS*0( zn3LbtiB#kt_#{VT^--y4IiaT@=Tj?s zdl_#k)^o$H8gj@65`IwTaSlo}yB_`zR`hDtj(984Pw2lEM(>mF>fFIvGm>@{jMjiv58ubZk~1$gF7Q&$03f6bZSZ;aTY z4yINTbK)~;wHH6TCIXKs2j_utG5GgB_^B7sM(MsX`ZT@QN4-)Qs~CI88y1h z#8lshH(MZ`L2j^M7#SRa*s)}=`pAqLIoxCr)WGzb!BkII@il}$q!PL!0v`4>d>L>M z`RP38?i>>m`@6s#zuSaTr>w-FwXA3`eCD_Om@*{%(U|BrG1E@ro+TOe5+wXOSZ_Kc z;RQ#r!*KL2^6sxq+Xp?wZ^S{)R_fQ76Ii;{HUhT)!uwUyP!hAzYeI>6ywEh%Pk_x{ z6Mhajs}4uwq+E%)o95F^C^47O6uLPC)Ig;CwI)@9n}X*m*~g+YR^gwhN>+$gNJuZb2~>DeuU<-kVEwAeR+TjVrC_-o2RPAqg*@&AUC1 zxZ#)aJLR*}nt#}QW-&-)Ce=cR+8G_byIw|>)F=G275$-cMvZFXh7ahOQA;3^?=vc+ zmO{wb-#yCG|1rYVG2HdfWK=$j{2FZltCn)oco|@Sz_b@Ks?LihX62U|)&DC4*8PxC z!&nqc1}gG9r$nQQbMJki8i!fYMZFnb2e{$SIVjrdQ8&Euk+jNkZzM98(US7k=1E6b z(Y!_(btokK=GgWmA^1U=Kv+cz`X5|b)9JUHsbxRpSwzav1g3-yDe^Md&eT-^GZ^G5F}SpjwZ?X=?o^ z!tR11TD@UbT>X=xHFFV{Eia+TvH4uS)>QP&eQC`5`4}(Y&1amucnXLDJruj z%eQHClsr$A4KG{h8HU0R0>jUBfjM7) zHmo@k{}&5S{%hH~yreM}xdkFi#2WtVbVN`ec>yo7j7w%`%}T~|-_dm+_r=D7-{pOY z9nHyrt2)lu@1TN7}1|Fy?F7@^l5H6!@iqdZm)z4oXX-fNHg zhDQ#+d8N*w#Gl+!^<&>_iPLvU#qVX+P)OAIZmFxzu|$eG@e}&G49O|=L(jxi^UkHb zgsBVf(A^c#3|)A9!D^S)Rnly83hK{raUF1aZpZjHzq+_c@C&iz{O>Apm38@YPRM=t zF?hc=8V$c2$y#lFGWpYuZUTAqE?T&dOAt-2bt_b7fGc{u5zXt=-cqCIbDX1N zo|9~6Vrf@l)G+0i0X?(zAfv0@%#yzhbTgBt(B;~{@}{KRdxG2t^>P+UE3ut44R^xbuX)H-ndT0H_EYnziPw8PAE7VgE)*ZrE{W#Qq$W=Xg=7p{nJ&~$3brj?o zXa$m)b-JR-i+Wd{m2?gCHMi`Ym>zutT|-iBpnXVlrJF9%=xVnV&MW9r63Lr(Vze@h zeMLgvu#S)8b0Qc^zhV6rKrA7r^yCfee+&s=-mw1IoSBpOz#G=O+MKI$6}ky!-ZKil z(!s5WoPCgr6x?OXr^Be)wdtaI^vh{J&kn7wH%FO*%pK&{`vYy9T?XXI@E>*K?5=yI z)a8(GrZYUPRwGfm-t9*RP2||tbFM~?be%E-bl2$u&|Sy0=M`QSok@O~n?8+rTgFABcTxL@zN-Umg;bj^I_f=7(8z0z^i6OEJ(uqYg(WyYf5NkYAs(NT!?p z4CH0&h8U+7ouR_3Pt)Ic`rrYn+;l*dC-dELF%MuWx2tb>iah^t^+;aQ$E{%4Hv~ON zy^q*NgU}$^;=rAx^|>kE95QhAfL$F_Y>VjP4Oq3nDE8kuV8b2vW-9Z(TcN~-54b%a zPbC%XUT~6O$dIj{sZk*9Btu0ya{WwI(^rZ?UaRgPtKJ)2`^c0g(n*t@Yx{m6-I#|U zc83vdz-%v~Wg$_{C%K}}BbM0c=6d#TZmxPT`~ExFMoo}B%Sg}or!6`hpRIM6jMzF? zH1SJQH{-TMO6?PQ&0NN5s9~LIHA*~4K(v(kz-k|_7XQNZ@^&yHH?&A{z)uU*yCU4Y2I|xC8Y7B7fA79?p+&l*M5=Q#IsAci{<@- zdb2|6b@PfDh}aZ}Y?E&r^=f#Qv+EUP)Tt1$R>+H+Pe7EkGRxan-9a5$csKk^|Ldoz~?++)@}m;3Mc_G2%f0inSnI^(a91}AfuJOk2T=4@`t zAPvUO=O7d$fYtjI-0hWeISi_KCiiiCa*;dN$Z9UpbzEebUT2Y|r)jCXH`Zjt@bg5> zK+&7I7%_g&hi+HQ_iXvJ72L?<~4LnsJ5#HUbJ8TIpnefaE0$ z)WT6#&E&O#=?g|<_{sGqKUvKc-Igd#d|?=ps_6Da&*a&GY>KwCy_9S^)Xi9?K|}^7 z-!fH~n-Cb{Zu!$~X%q0e%Q7taleT8qyKcS}TP-!V(q0lTQ;Bayw}KSeP8Cas+$80IrNlh{iK^lBs62O zDO?z>m-5r(j|Ul|jjE_jqF;v^AIQ|#hU9KXzT4}_J-1}l1rQy1|3Jsx&5oSEipG%- zk4h&F9%XL)5I^4i-*=Qb<-OG>hq0RiavsM18%LSlyOFaop`J<&rhl&dBx1uXKKD7fXc%IG3`#9PGN%&3vM`pO;L-;?=gzw}3 zTP9rhe%}0sL_Q$Hi$aGoKlHhWuWdjDr!$HC%6-1R*9W-YDY55z@jZ#Z$BPH>V5_y+ zW5Ip-zPwYV_7AEwbsbg;9irJMrsz{asjn-9#BZuX_xCUiTQ@ye_zm z6#l$EYbn5+*OvhNd0j-MqW--82@Fv>IIsU~g#3B^PZ*(j-DmjodUUm^yf?4MVMxvX z#k?N>k=XLPry&y{i3F)^&cX3dEht2$gkH!5fY{aruHr zBB(v%ssiz#xdrDUsNLqO0&&?P!76X^eyvw@{O7FeQ&$yKL-1tc{&~?yA*dbhsseH6 zp&SMHIX;1)_QtCUWG2`}@HMyS=(OZ77z!$QSf6 z$c(DnUbg?dZZQiZ{HYD$uaRY_h%vl1GGjHoMixeBjVug*EQ!&D;f*E1bwt2hBR8dT z{#Ysp_+v>#V~F}=NfT5uybJa=9Th)>nd%OrrE5v=e2$sQ!^J)Fi?pZr8TWF} zA$M>d!|$CQ!|R=bL%nlYuyv<}6DKyI;6%>P>eM+V082z==Ey!11I%aVsP>Ynjdt}sI`vaSU;LmzXo zw{U6Ek|)LT3*`30Y|@@R`)`>oZ0WE)fOnTg$$xK zGirY*Qv+~1f!P9j1KM%=qyo}0HxqbMz`u^ko!iUp*?s9i292msZm}hYaj$piy#8=4j)6nk2BCiN=gs^C&SVo4>J-8Hm@nr(du&==%;zFA|KLQ_0y^1c zCm8VB+i7*<*y58Ef?8;t)I3K zpUeYz``LpzGYqwS9m7SOwCWGF+=M&(liKz>5wMZocLagy0#)lj@*yi%*uLOI4zhU)JrD2{${k}q4BzL5KvgCI z{FKj?;GC+VN>7gHX9)}wkY*_7j>(kcVzDqbBB%i@-(wCz1SG(thn%oK)2Dl$; zvJS9@lSA@>%qDV@zl>feM~RwT0vH9D2Q~Qv@WtW06k*!Ye7^OIyE3ZP)QoCbO4D{B zFj_!Az;4E5@8*yi)bjeB(*$GaR{DJ3=5l)BH*(SEN`EGF1Wzs+%89#!KTfO1Aq~oS zNO2{kfyG0L6CnZQv}y^{$9r6&8@V*XQxD&0*>`T_E2+@%2MhScEAr{^31A$@9tVBO zCsm>0Cj;ty#pf%b;q4tOve)ePm6whXA~NKQz1w47iCm-G2k*<;-=>_ z>TPKFFFX_aWeM-~Ed`vHZ$&n8%rNo=7yDZ-Lpf_W{4%~?uI$HN%%~qAon-AR8C7pN zfLhp7U(2Wuq2ZrV%w;PxY7sR2*kXZJq%J6M7CBetWTHe@iikzfJ}KGHAAf=Uk8^;d98Jk*0`C zv_6;7(D9qZX6e3^UyVz&9+wNDv)WmaJRje z#tx$PP{m+LwO}DN)o;5zPiO$me_5Pvz7Kt11$0>x&jNKj6wZ3dNq!wEx*mAuAXpr>QIS!@u;A2F>7?fn z+5z3lYZj&|+clb631r3 zI)mjysd3Td$gc3OP_X|ddC z{)1wn`h-B5^XEMvty?H&Pr#LF&SgWo+J9Bas7_S@QGV26PjbthX45HIRdXayf5}=! z1`MLl4dP-C<#IjLT0Yg%kb4YyN4@n5z|jOI3%KiF#_SmBzP+x~bUrnuPKR`wW><2| z7t&epW;vlWp{zq7cR7DsY&R7RiRCWz+zIYm^4dBfFy^|9dJ<}VGGjIrbMnm@H5JlE z%$;?}RJlQ@O+#Sng;}*4((N<;V)q?&t>_}a_mI{gcg${P5HeLrgHRXSO|j2!ci(H* ziq^e@k9R=3_P4(+7BYOuynj3E-OEiy?vMdGlZ*T+OzT&e6mkL;Suet$acO!O!d1DO z8AM>RfbDqr_BW-~1(1$;i9l=;Kw_$$%481dn7IVD36PjQ0ii;76NJc-H>iWTtwYd_E4a~|U*MT9qA?YX^ZnxeATOO>zRHgccKVVff{uv4Y!Yp7 z6U8U9*(sarJb05#5({|VoNcdaZq1S$&xW?dPme z?Vq@m?|^DCrPStz_gtuanJcD$Ug^%05u48CU8v)L0xR-`aDL*__7pg)xl5Zrg+p~v z$1l0%`WN8twE7k5xN>K)P;Mcx*VAcr1M7v3Ur|o(m^~2-DSGom8MPYfIDl1V?%Z-~ zFh5ke5C~c)X9mjt3v+gss&>c7eF)ftxai8~(>ft=?leBvBj*2>l~xGsrr1%;;zstq%$lY&DtBFv@S?q4uYuNUxCFlvU3QhVC z>AYv|Y@$}Q#R-t)X>Was*IMbb(uiS84xo39lOFcd&bb|f&2AIBNt*2hT8rI|29(f3 z2T3al$f*G%x)XgND{k^K?4i#OG~x)+aA@y!QKdIKTo<8#3GOT29+dr$?#I$Ly9eB3 zNOmi3fG0!U4~yYk^h?p14QX{H)O{A2o%Jz?XrWy}K3?onNXLZ0=0@xxHqN>+pAk5` zi2>Da$f}8uPV;XCd_?Uj_L2VNGU{oR;!AtxPStulqeej8S5uvTD^QWqk&Cl$J5pE&oT+bq7b{1QG86Ss$wAd)m zJiCa6GWgpdq-Zd=$c`uJ8cDii7pQwTv<(6ksz{`wK0ALGbD0Ho{{&aH2NhtYyplD; zMI}r$9}qg8@1pcPndu}1-rvT)%y({#c_Vq?=ln(q)RPaJM^4$yPM&@(xq{FRXdJJ@ z=-sF2{4Wegev?srMRd@Y{O~R`?iRfc8Q7N%Nqvxh7@_F#T;yjVdv~;gVceVkdGjS7 zvJUzvqsFdeHr!`JMqLjHFb@QNLZ<;JF!l#n?1J)pW|5ERCR!O?S$h+(KF@`^@dx&Zw48Ez{TFcrRx1@HFzp&1p(iWpGf@v#62MK zOBs|wz;0g(+rQX9tLh)bP3fIlr(rE=6#biLhdn^*VO(y24(}+HQjzhj&mxoLayJ+I zAue*OH(H)iyw3B9BAz#l9zaf!aUlB!E;@cR@k5EbTjJLN9w4BF=eUbK{WDJvVen3XK4?*HrZdvWij*syUIjVeS`?T?$!Id zHGx+^V?IV5IprH&F(;!$Xw1`Ez9tW@A}3a3zjzcEd1`fCoro1xrS5O2UiS*m#tF-V zuIoP0ZSe!c%ihkVVS}u?zM)vPA>KLCf=hHCE|)>K90yzUj)>0D=h><)8w&e)UFabb z=qIzTBGHpvqKmi`OyC=WytsZ3|38&*SCLeaggnX5my6V=N*ylp-OBY8q4dfAt8|N9%1l20E!xG1g8zKUNwyAQB#aaz^66EMSk9pC64ohJ9P z{tfI2)M!s{U{zIF?JT#AP0G{mZ`GzQw-RfYyQ{~#lKoXygT&gs+#}L*o+!1@a^j;7 zav8FCJZMt2g6faCDdd1q|5jBBnjY!KOS|-MB{%QRxd(FHLHg^hV(0O`N|gbMuE?vF z*o%`-qKk;>chrCH5n$+d)Sc%p;Rl-C1WtZqz%YQ5ahwi>M@#rStGYAhB3|4U@QKwj z`S{^(F0!-WjI-nw4oo)=HKedKAa$)(oLG!19z(0s%c!HzDakKNC(2z3&2Zn>Prh@4 zTfw%H%@nI@UgvSV!9~%jyR4GLF(wOHo~Nc-b&`h$7)6<6kxG7UGN>macUx)4I*(V& zC4>8{*3L9qc`ZPG!o(TIK-lKSbWT>xaFr3u5A9>MaWi=u`dST~3PhU%VrR!n zlVgmiYk~IxO%uj!7mS}1iO4`py>5mhWuwgty%?RuVmG z#S-3ri!eg_Ewwy`x8LG3y!{q`1IF8L@fqHJi_h@(TRcYY{gwiX4ehrGBe37%zr(_Q zh^w&oIewqveU9H}?BU)^1+C+sxSa_2Pwc(;EpjFG3AKnY{);Ulw$e$w7V#Ngi}(z$ zMSO;AFi95_#{ZB8m>z6^dHxt?j@h)*9W;XU)``6uH@$4UD6)slCZ5iPD(e5ms%UU@o^0H;vg^*jLX8vpa= zG`G20BReD!DWw|nR9fqN1w5^D`(mT>>+!)ix$^rHmwLm|?q@Z*>GzgB_apO8(EVr} za6f`8KO~`-+j3i?IuTW(mBBDle z`_6j(X!MYFNPW_>@E!yzr07ozb$FtLHy0*j(_Q@=AZOZO1IJ~fUvR1S1YL>G=u~?$ ztqz7#eJo2a73BODjblyw3CpxfRZ*$Nmeb%h8d`E~Vih`HKEo6yz_zO8$?vyq1nA#x zOZ);7i%G>(Dc&6Y$NWl$`}1y28}d@W5#QW$oLAVRFB8z$s+xa(XG`@3q|`4!B-gyo&ZyxUGi6+qitqb1210IzWK0;98#EZ0gl85G~j zp^$9?c38FYqx(cu@^^k;u3=;6+>(eYBP_pJ=g4o?bpgol)j9Hebpr+PTXnjw6#(yd z>Zpfu9;4JrFjFU6F{dxZ%>rn*EI*gG1n}STQ+YDW27f9~u=%OHGccvtMJ8wcQ+efP z87B<+sk{yWtbZ!+3T*79(C>yWG^Ujl!FNM-kNFg)?lGO{E$2y(>1yd#UMptV+qCjF z0bVO7|EO%`GQxfN|i&uR49yHdcZ`~^LxN_fZqe=0sg1-0O=H=9w3Zh4-g#c0h%H2DtkRZ z7{MM;O|0m^^qvu3K?hhMonSvp$B8TO;$DRRyTpxhea!^o^h6NhwxlbRy4Z4L_F66G zyu|9Lr>`vn_H6n}%rsM$G#VLpNHjN#P*F?Yg?!ti(rXl%&vfZSOr=t@<^k=WyUxs3 z=exT>THpY$3bn2`vG=G*o2A?j@5N;llzLqzY&jAZk@?#`AD+G)TnL|O@lx-0HhMLo z6;OJH72Sw`z8y*z^Vzd{Sv3zzH+CPQe(1XB=(NW!uA=^&hfvjgaio1uu~fRA>qkdO z*!a=Wg#8gV3E+*eS%m!&wgm8h9AVYbI5fgEBRIl@5gcKHLnBNW|Fsbof1AolYq0sO z()FGA3#YondlOlu+r$#hXS(q+AvS(GUN2cYz{ngBDOTZk%@@XF{yM!MY4n=ZTc`UB zZ=LQl_HdoP5yNVCAWPWofd9lgUBzW05+ijLqcn&mWG?csuAukxt*sFF|E@=hKF>(m zA)}?e6_HU>xmISHbKT8m#*J*vq+7(TcU-GoDpqS*lDu`gi<^Llw2G9*(~Dh(jMa2` z)q+|lxn>pI{nKKVylAPYC26A2` zauk>72rl9q25_LV%6XI1O1J}>xu+B(pB=!?*cV&|^nt2c5fP0pKhQ9$iAs^}eG!WG z%c_3RfE2E07MrHgXSwK{>s#)7vBx5f?^V+lj;*3ZWI(Gw z^*1v9B3AmSX2@45Mw*p}X2`sArs>tf@aLW6>1KSFx#iYX`9m+@K1H;u*1-7=b*B)H zjf&UEuf=Z^&y$GiY_SYvzlHE#58E}J{(x_GvB`hVE_ z68I>J?Emhb$#i!n3CYY5Lc)=Ngm5N+5R}89qR63$R}|4GBA|i+k3~g{;(-^&1I05z z1tWOG8*em+XRTk_)V^^fL zvD`@t!@A{mNQ-%U8kNl*n#NAcU)UF8Q>0OTd$@;R`5;_01ojG-r0)Ts3c!w!V|R=@ zdx^|Hj7a69!ri>%4MfkEY@8!92@zPyb|l#++}S(9K!{WU1DaK`B`HMaw4tO2u#48+Pmu>Prfg|KAh&h zt++vg{cnWpr~Uy+5eFjoukAKMMG?ja60At!^28W{%7Ise`j-nCX zljeB$@kl3EpO(TJrJR-`5awwq0ztjhr=<`P=q1AVw4b%EK|qX&pNB3+*FlCgkkpv& zY0(!EUWo8M-}wHcc-hD>+tnFpI;%+3qesxLD5;coB@nt@tq1jQ+pZ=;VOjh_nQuoc za*>*AvYumlcJ$6L;Iz5uSu^T!<{RTsLB{m-19^xTy_1L45KfUtfcQ<>Z^@HyXE`zJ zPCS$Q;OKlKyh@#jJGnh9V~2hilpX#(HjW>IpWE=v-P;a5;^2(X9kZ>u6L4NM7Btd# zz>$~-*}`?fUHOn}THPD76T&#p9UATR9mbYZY-{c=aeudep_L#U|IkkOJ$ALN3IcAZ zAo}fo@TUUEd%ej27~yJ!C)C?n{sjQ$5qQw{qXz@1CvdzU-LNMdDh%J))_-jn2E_@}C(3b_AjR@tfgvMo8ZrU@ydgs? zn|xrhF;2Lpoi|EZ?l@A3xG)RqFS7R=l8{}(+zLPPkB1~ozunx*4(=1+7S)CD&|A|o z-8T$^c)8=dcQmJ{Fc9&R!@hggS;;iw)5EzL)dpfnzOTv>{VO6`7%R>l*4-Zq$>bp% z&rHh_k|`sgB{KqmmP{4Gfn;V8(2}Vopd{14u#(IQgagT}1@K2mCJS{nB||txGEFb{CDy!vS7%hs(xQh;Y!j1`^OB91B2;a0KxlOe z5L%rAgjOdaQq+kEQ=OubAu!3uLTg53`ri$PNk-W29rnG>7$#EH*!S2Y!=1b=46=xz z%>bgOe>*}IBp(%S6}1D0V}X-E%qy#iB*qegAgu?$eW1 zL(%qfOBGvLSMNcmz2sjXVpg_?40Ms{r-3{g~0hvd3p(e zg#f|_*?AT|@5Go)zUnQw(ZpAp8)K&#+-LwGxZ$&S)^tI)m(QY=0bsGxS*$7msz~lW z$c((~82|d?KwEgcpiNJoi`N4I2-;dj+cu!B1z*RKc3L>!fAg>WKHnImh!p-%YdaFM$N8p%2mLHdl2l}Ut% zgLd$usuHUS(L-0KqTMs49O!v{_WfZ;+AM5mYPXu$BC=o)Jma5VdAqD51Y>H`` zljUm5#C|PY?PPl8YIc~?(YZq)OQy{!4$M)Z`w3bK5j6CafvdY=B0$m0)!i@=!m?_+ z86dRX3=rCGYDBP@?IMlL_wC}8;-(nVl;VQg3aorCfVm?&yBsvI#Dr5UJ)>^_fkQ+y zjM>i}ofhybD30b=fYAI35Sm{B!j$HJWRGwy2{$k|4rpJGgQ>x;(-YR*)^g2L5J0Ut zwsGoCz+3vB<`&5POJd{$doJHjz{rQ&qvp=c7^#$H6l-=uz8oTTH1c^1v=89R^|>cy zyk8=v!WK67WC&h-&mfYf&~?eG=3rda7PFk$89yn_W2NVw9+#<8#Wn56p#2<|_RKva z(gwX9WzMAL*2FV1hDw-mFJ3^aEOtAIdhQKK)bsCmsCpiQ*Dqk(wJ1$@yw*9K0>{(c zc;=@?&&5=KHJapnx0P6B+kmiGV~Jd@oB%Lq*8FTgSWqOaR$-j{G4S$r#80Rjep)Sw zS(oI)CgFy1%7Vm zgO8=Yk`uu}pc3``015U#Ghx;KGh!a(Tl-n-&Cl_T=u>(}Ao1GIlZW&Y4vu(Y8HmtF zJP|G=fj)q&Y$nF4`Y^u{08$Phqm;JK0c4bXaG0N1Z5J}8Y0xr04cw{g4z^ttJ!k{) zC~WP*tmx#uFhXGX>t1dv)Rk3axy6dicf$;XT9L7wO%OmhgsaPjGkhhAv9Jf_o1% zU<}zl+dm1bA)Chp7>Alud$*I9PDDLZyxZv#yv^p@$DN$?PmuX?zP%S+ypBr+uD#RA z@pDgy?(^-fPF}R)G>oeNU=xKq24Uucv5MID=3W3J5+Jzu?E^LL5fn9Q@0;HV30fy0 z!B$R>=v9c52LK6r8K=tl=)EleS{ue9om&UWNSlMcus0$yeNN456V6@{mPRAY5|MyA z@q!WwgjpgAGuVwMFXwUbaaFi2e&~j-O@jc%w=FM#@j_g;LtLb(4LRf{kX%HNt)e|1yae4^fnNe?&$mN0FOZJ zFMZqI!8__?N!tJIg&BLn&RkVbxB|d*Ik4 zLU|jbGf>_Jl;ZLu3(^}c>;;f+c(Ccir9@Z`2Xg!2g z>j~0eoCST_Y)u*&jVqE2SKF8eWr$t~IgG{I>dE>3;QKKHL73w6Z}FM#Jr{sZvCC!lK(AIIXqCHMZkKu2n}{pzKER7Vq4ukg&ZY0!g@M}B zh6HNAo^Q34`zY1E3;MrUfjwumc01qqI zJy3_UR4HT*lne&->L z+9Ic)F#KgQ!NBl~1cl*u_fWQ;+EUxqsR(R65oRF-Y}$H(*rKhs@~M=sAQ2e#aNQhm z|4}@(r-ejcGlIoCJw)T^9oeL6He7BI0 z@PUSe`vT7cuHp+qegrP}%AepSxiZwvPe<2X4It05bNyTQ!^9H6gt<JtvSs)Pk?3~y5k98+`dk!)KEfMsPg>%@&Fg-4 zmc+hAsON15;8bKvFzoEWRw{#~`Uyh#$WVl4=7< ztp|{o21z{y5i|jqFddS*A3!!X$_Po#1W-bNk{Sk}f&e5{2T4^j3`y-<0jVP#cys3g z*q+|pwap}T=g&&&ds9-!D@oO(sE6&fb&?tmf#CEZ>#&hAe;~qZ5$-x0k{SoV!*Hu> zABTrSuG6SuWF$|l zYQ$`b7p=$n>Gf6s>U6o?uyKkrh`5c<#QKz;e!IZnZkM zQ^<~kpU0PPYWW~a{Zbyaa0Yv5`?4-z69;mKFEXSTm?bYCrrcV#-&DB0CfpF|x%d1y$ z1ZGEU8SrktQRc(38dI^ny?2us_9e)O|KRw!6;*s2Py9(cC4AXyF>56r;N@q0f)Aq* zMe|`Ucrf5*$akLOp8Ty$dnDe+&v&vS2Pnn}#8ZASehoriBi`PpdvO@4?d4!r1#m(M_M*s*`Vygh?mDpJb zi@uxN9BK*ZmDmOXY9)3B!)hgVEy6+Hy%E6n?7Q_g2M%)0l~}^TC<|Iu+goY_$2wqw zZwVgKN^1UI3I07t9-b$8_&VMR^;$#qx(PqjreTc#j@Q<`R3Suy6VnU5_i?l?DX8#? z5p>qL9Z!;xV1XevFUvc)r=%$df?t!U%|~?rMOI&ImQ`opZ%J0^J0UCYAPBg#-&OWq zZ#W{+w7S<&sb%j$6UX>LH8=uH?CmF7l6DYjf{fI)MUie$4CmAiIr;9DIB}HxVPzAY z?DlTr_r*UH19q|F%Ssc3fU1gTJn&jp*Rye*gY(F55?0niP^``@{UtH?Z8<4 z5>i&*k<|~^r5}>8hT=&a->mx8TT}gNzeUyeS^YxFquQwY)hx4Fb=EYc>U~*>EmYmx zPgR{-i*$ExR?$(YzfIUM-UI>|3RTDp;tC{0i^jrAfs2r5V2E zF9Rt|6)Z#zz#`6B8QpsVio$c%ZL02gdoxFRRYmQfC zvhN~)PszS2=%;9V^T4`eH=>y=^If(>>S`5JyA7pIY5py2lOEe7QxVF`cIi(8W-K{z zo1gE0e;?*O0I0Ol<>1jg06Yh6g(|wJ%NW~p7d<8uB7$46BAp(W2-=#OKHa?w6anEg zzQ!F%k$V(|gQJ>$xf#zG6gA>*aQ_`Np?VhPKz!!>B7o%p@^81>`40kE4PeqpY`eW2 zzy<=3;EId8Yh=dM(@7uMt-Kn%WgR&*%I}YxVHYceO+>k!=RL0s0TGCT@vi^jY=kS3 z4{*i z{l{w{B&LJ6VrgO_fc%bj7w=<(dHIFd;o!ccl!Jmz9APL25kfgyAo@)xQX?~*X2+w8 zPQ{)H0Di1hI#(aoGrW=$1vgzeozR(CiRpGMC^`{ZU}A=Vg9RktzXi{`jtAdAO!ECm zM*qjQ@|}Yr$@fLzdlQTQ57mtF4mO%m8G!BFj7A{Kpczd85HzEC0D@-JK)`H9y-}rY zYeuV>B$|<2hyq}`0$obUbOj2;mR*79aPLs<3M(*HV!TaV_Z~Le+CTihR>9P7aNr7_ z#B@)781^SA{37gY!!YR{mBFt$xcMNbE?(wc!8Zm*uQnvMLZi}VW4(=LaD%3+x zq&K^R7I>)aeAK6c6&{|Jh|;A{1pxJkayh;RVbsCrZA$R5MeE{%&5O95EBYUd7vpiZCl7`%oH0fIvxfx14}#f2$c*?Qa9ZLHo1N1#idp7i@Ho zfd%Fakg(AXgBf5h@S-hx-=i&(ouXrDm#+NZ%QY*Pf{pKzl>;Oz^H8xwxngA*0nN%0 z00LH40nn_Rg>b;iS^}Dt4FvRLnqfVeMmS*QMgaeRu+mlIGcg_?2v!O=#Bi`uPp@gw zf(b<)Wnfw}n+RdeHk+4!0TFaQ6k@nKD&BE+q7&^6{6xN66b;{XMcn!TPht-rZm4_U zt_eSiAG*d8??!>*1-Id^)+^Ne^r?x{t+>HTY=z>yN~e72ehKReJc*|)=_+7@*Dvev z;$^-}vz^>!xPXURbiP5bF2lA8zJDlYmEx$|L^t}ycubrq|5VVSsXBFUA_d`xI@OUI zE?64Tn!!v-(rI`9wv zx%oIuEPOS7c&b?9KsfGA0NYjfz;}x?)v05Ni)}M(Ic0Ys_Rjbbv1eoTzyvJkQog?y zKSCCKzZHPxJa{LPc^W@%BMP|@g=~kwegr%$f=oc58>E}SR-)RPdy%W(T89(LUGm6HOaee}*w z2e0S}$x$)O8}FpKp;;0!h!pf|+^V8<142yhy?!bVl`1h2Br6q(KuiJRuO?!$lV*AU zP#Dov9>unlL0Qs#eab{0b29zjK-BC7yObU(^yk!IxsSk?PG`So!nPU#a0-z=0%WV? zn>{Qs-B{08m~L3<2jE>3-+k*~x|)w^LiR{NS)mSMfLR6r15BSgoyIcE)4jOMX$k=h zEYrEesfK{w-Q<0(%FWi5Sm9*&vysO_kR+Z!nU4q1NT7A7$UhQ*H44BDPL_W@fD!^% zI^F%bCt{FA;6kT^``&$$!TTab_KO+&p?YkBL}28PUn~8KM^P%qxZcT6e;+_Cf$OmL znO=*;mJ@0dYV8-Jj!gveQOEsGMJG9$b(B+~c?^rGkh=GqjZa&F$FkAL4~O$tIDl6+ zQ#7$x3h4&q-$IG{9{{8ASI1*i7FdY;HOTS>g~0gHO00FddNyiL3NdNC5)@KEr<}qg$te5E_p-*{-yGXh!j2%q4?zYMg3Q!n#eUz%*8i|`eRlas{z>v3p>wQPx( zIJV$$Z@BriK!$_6;~&7w9~_}qc`W=UaE9V1XUdQbRluF36oy`lp+mwk_kf2b1rdqa za33A~P!ch8Y#Mx#mPeIhGGgitwQ{MiM8KvBoehL^0}-Z>L=*@~C~_IgWh(N25|HH& zg@i^h%1=&b(F&&kFsFGOXr@f_1j3x=3505q?u9k78s#h`(hPh!)HUJ5*+sEO2%A2f z!kDZm5r{Gt`He)W=CM?EsJ+medRZ#Vr41ohI6O^+vGuQ)iY+X_`%Y_bDJo0~fv9yl zfH3?bdP?UJ2=68|B-575W3?R`{qR-z;ci42HFT+zb@(Lw2-HtNSuGwN|xw*gYNlaXp`uk`-Z$(iXoz_9TX~; z2StkEgNQU2S&N?H9UW;v$Zf=khqV+Pc6q2YwFf^FCoFPeM~eT@gIn(OOC(V{aR6tuc)R_t~HO4}iC;DVJkI1@33cQnmw!g$3ZiggFwSEC525v+zv}mp*$i zCib!?jv+_5E-or}D8!_j*pvh1ZtTPyI0M0y4b16`PPK~U3DG}($T=rw6KwhFR^VpYZ z1Ss~f0;9w3SoCS0)<<@~vR^w8y1N|tCh9|-M2lJrK=*4+4C{U^dmjL1OQNOHeVg~R z(qk4Uu_)BuKN1O-AWGu0P_amOEaR&Va~8uo;o9a2GYy?^U`Mb7XC=-K^$cvgK$xb3 zh!opSgyg3`9i?etY0eH6MypQ63|W*$c5Q1JmR>&HwTQ&e+1lJrMQ$6J+c}DO16P?4?w|gK&0$(0Gs*;M>)B@4O-pgim}&qq`cX35HI`0rWg09&-q_qv6jQvj#-M-f**_kk%mw zB`ju?XccxpQB5s_GHDx5cyAjBajt=zc9OIfVnEb3+}mqXBt!@juRxg#(apCF4|3m9 zwp8@b1>th{+oduQBF4{k{Ky&uF{h31{$vaS=6H78ed&>8jG=SFp4ZKw7}^_~wfN_L zqjK62K%yYLr~8qC7(X}ayZ$nn&<>y&zsYMKd0%Bs#GL(ocVUerpbeVS+8*TXct{eF zKgJ$x1thE>NZJG>L5JPhM;9p|(jYI{u7k0(k#^=t2cV4tZuquYfL8 z8oE#&=z_brMkYpg8EJ#j1WPGK6Dy6>#fnhEu;Pfa2XcE7xy@s4UBdaoa5jkClHXLI z1*eX21i~~T0-?q@{>w;j71Qe)E)eN$XqKL^<1k3U7ZCzsrY8`3%(RiFwgMcsBLVhC14&Qlt22`L~4_YOrN5IbXSV;T_N z{MK5lEue!p4vx^j1B z^Rged6=er+l7He>P$wI^s=~SW5xq+Y%SgEJ0HAOx{teW6ILZZ-bUM<SAB|n+aiy;%XJtIDaD#6)?$KTyFg$)CK$F0gz0#LaZp~&+D^ySeA;?!9q_l{{0#z z(4CaR1a_rcUe}RIN}n9YFm_!wG}O)SDf?G35}c6M%6(qxm_Rf|e0P15ETcgD=(chH z_OB!&UX+IIQzpW3(%mB}l8MGQ+QpH!O7)pW-qoGlYxa~$2r2Tw{4v7}g#Jzw#4dNZ zQEm$XBv?K=>xmdbgt^=8Kg?8v-EM;!$=vPM9|*bI&FhKQ$b=o4Q+w|gRY=iw9iE2G zmf<&IRv$cxL(}Yn{s_<-By4P+Jqo~Oe1ki=#7HrMWWeQ6-6a?)uELWzKh5oGGW&wG z4EO!!%>J}Fvp+U@OJ?6>BFOA%&6!=?jM?`#XZFEcV)hrRI0umhEME$<&Amncf!V>{ zA~y8|H>0@JG_rOHF&C!g2U5LA@;WJ1lq^-Mt%)!V84PaoJ&fG(lOoj~KuD>kQ>rzz zu@lmg5@j<4m?-NN>J)`ai4fl|ZA&RngwBbjNys zxh(~;h1K@|S#78#{)9!j6Phn9${JXc>`GXa=hECAl|{(_RpR-yj_xMagav};`+H?k z1cK)KTV+6q5azqlM9`v~qAZG_p!x2nED8}c-%luuBKjYi?@7v{2!v_A-@s&tf)}lJ zbz1x2(?B9jN3np-NsmC7lOBOklOFGRqvK4xn${^W)}ohsHO=>5Mj0E~Zr7$|`d1CZ zoC`qK(ooF50Kj?xnPcoc|8xLN1hCW4n*o5O4Wn>k-^Ci0jV}?!mV2`zsUhY-%xAt( zB;-xzO_LslH6kV@b*-x&{qgV+`B^! zpg6k7Y~U8S;PaUxqQ;0_ao=Ec!Wsw%_c~0bLc=9Ow7jlvJ8ywXMm}g+&y0>X z+m#axm(rNgm2Pqyj6kGpgW)LaXNOC`Tj2(58sq0h?83vZ1IYRoz&YsL2Ouz=z%v-` zI}g2%8Nk!{;g@8IZ*kpo%K%(|xCZM8{O}^Y2|r>2@vesyxdT4@AbtdDA0H_0_6?te zAA!0JD9ia2SFZ_6a2$%Orx_h#2>2mRVp_y+1wG3?04hH{($mlX4jwoFXT0S2e#c#H zs{%m$tx!qS0a+!0ymxx|_4~r3si`goFb_bRchG(wg`(FJcqT0#y$ir{0GWsS;>5_+ z3~#>^BfX(me5AUuHMChN4zs1q;LOuJfyzqH+@oNKSR45);`8g94Jc~j^N8>BD;x`- zfba{Pbbf)82S9#(;|^11R18@@kL0`2f6EL7f@ahOJ6QsOpcxIT2__N3j6SN&s6fz+ zo}{GzQN4d(ghO~91)13NL3b}NQw%5OE6hsr;6y-T8TTh-qKh#L$%shb z+3wd5NjB_2Ho%ePkAaFzxxf}Xo&EW6H`D;&k)oMAQgk5zd7P;KSt&La0HmMFe+xkN zg#cFJ$PD{oBh3Ya{X>vsHC}S_w0{j!nFk<9vL1j;GMa^m%bCgz<^E(uTCF23L8J|4 zB$nAARECUeaHX<3Zz%1q+gZ&c`u}Vk08xd!j5o?2p z(Go;#00^Ize1lS%KiC>=s{|tn9n0(A%LKm0|6wDZFSCo z7=^yQjY^ydueRw| zp8&2PT)xujY(=iyQBF+?5V7^hc9A@ss!nS`c-{+Xk*ERVL}+)uLBCI?T^PwaGMT{4 zeyyW#AAvh;ko?R^@yt~xq3@`&trL28w;~_o1ye>9t(lYCMh4E1YDxHnQEk0Lk4?hH zfz{Eg$3kb2Nb5Zk{#bM-BM{D=VYiLmHVz5`pv^kWun=bAGyr|}wqwB|!UAEOhAv>^ z5Md4!)M@AlS>jBt)N{fHFO;%tjef!zk3}6plbDJSCDOi~{I2s<#1^WsvLB4rHEI!i z46yCnW6YC0iH#!>-Sl6Bh}e;5$w6WqRT~^~GlAEGg|kQ96VBQX@nevEC!| z3|%eD*g4H|oDE+n*B4=md#IRicl;9`S8$XlIidi#DkaFnyOz06X^HxHQ z#jUb5Vj{I8bZTp^l6fs+YL7velV__1H1&#SH=cr6P9E;?6hxsygs#KWYoQ%ldP2-9 zJ~6gcVKbc;ge|A(NNkgEC&sM3@${;)LwDeR#(Eow$2XSOR7^v7W7;_55UD$^YHZR zY=@3?NnDsm!0bCu4Td(2S>+M%Oych0qV7(T6g%z75@MsG?D&(Drq&*K^WEH2H7#jS_&Fgzm> zw{FLSux#F<41qd)tO_u?6<&W2TOZyRi412#JCVb;;3Nw%vLw67+Z+WKw( zJjcCkhi>c@vp&Uh+!8x{>0vSJ9Xuk!w8L>qJ|0HsTNSg;#KQ>R9TBs3N1H|jF`iOA ztyNctihqRXxDK}aL%FPHH}_$Y_3d%NuK9PslHmcn)F$wM-V6aY;pd3OKrgjJ%U_CHMK6mmRB#D&tPnr* z@PKu8_{m4&R`*90@H*&*{#gR3zH>I(yK^x<@!zcJw3{mR@a*d`@QGj|EGW!D_-UZv zApGpbpm--!rO^S&>Q3_SI*r>v!TG94qtKujevC@v0Z_ET-fcl)cC?M4;3VhlXF+ky zv5KOXkw*Eks-%Ag#kgsTqN_o1Jt#y;-v9-Veb}tFdta&2XaJk*=PQaXMjFdB#a*D_ zF%KdQlOn3R*R!977CPsXv)m^y`ryDIWE>|mI%g<$n}bBWZDZtf3{^aL*DGA_=Zc)4M4-Q5mAn3r)8PPvS$2#A!+xLB%`>+Xoq*WE>$ z`pcX-+3nXQC$j5uS#|;UY3*I}U=rT(OPixXFHM!!0f5567-Vc(EXimH&bhFEq-qzL z>;S^&=0#SFO2X$oo|&;}ATec(aY>pxNM%A;oIx1zNii4#s?2@xqQ$s_{zKYG0Dl6)s3V9D1HNF)VhUcg9LUBI}%st!@&`n|Px zB;)YL&1&rCMzCYBX`71I=!g?~=ISYp2*LlQ8LwOoMp$w$EE1vTnK@;Qf zRWz}n=?uY;o1OW2-5j|iOSGL}gnhhfe&@A9q7$Yd(WCGaUW%WO@LY@2y;6YC;pfJ! z>!;!kyTvpF!nydFKujC#&=s5V!o|k`{~ooj4Ll8{L2>ufa~CG3i?n794Mf;%H%v zsZUrJ;K`eq(P^|4C1-|tN9D=mlAi(~q;n;R)?EfmbaQ4Y2x~B5&Rgt9W-0kkVx+~s zS2bKp4&1e3gF{G5>~Yu&pw5!tKL+P0jbOZ6ljkTAPH_zrVY-GplK`$^pPL01q7=c0 zkc|LR7R)*PN%;_xx~mqg=Ce@Paz2> zKZO)Z4V?_Qax^${Gr6)ZQog@b>I%Hhdn4hFG~fvpA>Zo;1*558!{w^RI$;Jr9pJ8f40^z(A+ozG`HbLq_alSa7T!+imwWqatpq`rIf-Zf(1WR~(e+)_e?J-GrxYH}NWLyt)PG_xY;FX0iSW^w)jxs*mN2 zM5dtw@N+qHp9VfGB&I=Q76QZL65D+O%(-FETn5a+@QEa@0K^e=+oizdV+a}Qgr7t4 zw0+PHO~!wYE89M5hnC>~`wTw;%HWK9v$S1rlB4mq2V|61N&VpKwg*B7lgG60ExBmb z-J{9JXUte6wS#6}478jJQ7%zua}2T5%?aydJZ)hdom+N7r^=6E6H5`IoC|tOgm1#nj<4rfh0occA^3kH!>Iop{J)RkFYM6c z`2Qor|FT0<*5p{%;3<5`4%OlRn+(5Vhd#ppj%yKKXNMZ`|0|?h_%}QBcY#CrT{~2| zF2_0oPvNIT*p@o2yHi z4az-8J=FHTR@6Bx$u2)fy&ouRNWH7=S%=DU3+mlKEvCtW4W?EVFOdeb5V<-Ta1x5s z4-czWzm>*G@hbNyL~%MH}}F*G|>+2 zjsK@JJXzW?vyE4xlQ7!WQ;pfFy9l@^h%d-Es99rfYYFM;S|R&7+qQOyV~ z=Oj2arDK%t&Cr?nc^uEcJUes<+?>3adSKj6!J9NK2@h#Rzbi< zsOVh$M`OPRbt}RIVltjKQC1H&k z9LhN0E@_Z6P=--M3M0oWnAUjI?(N(o4Oq+^t7pmxBoH&l&yPzY)XXtj5C7LZ3?@hI zlN0&yWcfY|5k{}>?w+m^Ae?q_#P@zs32=xZToV2?8H0vKrkME^5~)XmqgVHd-nuhB z9~9vd|3ZXUBYa#54u%T-3pKn1z|y|{MIpy3L%4LRGc;NQpbEf@gZ=2@AMgzy!_(SF zcf;Ui1;P_gDDnp&yb072uESZui0XHdobBaC+ZN_kHC8Buo!OWQ4)` zQSB4%AOjYnnAltt?`aeP=?Ie$e{`)q#|5t3!(ODIawO)j~MROqYCWJ?x=({IE8K~%Vu$0bp+D4`rh~t*Fiu6KLBLTu|;VjGm%Y?ma72jBCaiQ>i3c)rnF6wSD5xfxj zR^_1*6uc0*@)((mFcY$pm{nbd5h6v}o(X*y!X?x*6f=r|LGd!(qYMNamaA{zksfP`%BYqA8}7o1z86yeV2B%$uT#NV@L)J}AKkmS7I{dOZSJdzZ@^M$T3WM^5%y zTojpqXOgq@7M^LqqN!ikTo$8#Mi!9{rl#Lq6lh$a>B!Eod(3^5VfP4A0D;{T1cu!s zoMQI`f*jCxkBEQ+84DN5YN@$K#^O}i>PWr$8=?q1cp+@y+ecgY zr~!)--KCnS&~KJ#&gLyLdK+wE31q-dG5=4pY`Rl?OeGL>iWjN`M3rb07b=9&DRxC7 z6-W@BV&r~h>N=u6qgR)BYmS#05Z>M$&fP!9=tZ`gQy;!8VO@@gqmMO;k+dA_biPn9 zD@jJbZ@_}lFDO2dK-j{?o3X`;z79rLDn{>UGI~J|cWrY<-`$+ik8hS@<}f5uO-3*1 z8(p*-=0SwJ`R5~Ck8t)1+@!M-z;Xg>?AFnfuw1YjKu%7&Se)5_Fc)W{T%574z_*Zz zLZ1sWc?h#2=?kXPm^WLLp*|^vb{|nI5N&`7(tv$~D8hi*x8b}VJZx8+RJ+jzEbnevJL(hLRn&k* z^*>O}A~0Yts#aiVV01a!)mW$~4cOj)k|}Bf_GR;SwXS))`f&4hH6DpfL4q`3PbmY| z2StPdbFWe`3&7ERMrVxlC?SDZ+Sl^lKVBAr3b(yY+`49>Q2UGepDj;o8!Gdf z!~@St2hgE0=~1F-*9tHLTsJlw1WxQO*GT8op;2S&AqSi~;#nZzDI)KhJQ!9a@9`yv+5qPIf4P|NAjK4!l1MfzUDdsYM#6)!3oi5&oEO z&$dHf;D6~Y2w!A}%JKhHhOe+g=i>h=hOd)t<1B;2=fIt~0?%o)Gcr`$V5fK5>3-xj zHD}+C@SHUF9n2NjcJ=}+`qjTQM?BLUvAj9rJB8?_)A(mIgx?)4a4Z%JgBCaiz!qDe zyBo+^C^kz`C^lM+*kUvgLk`gfFtas&#^E{bF*{U+|4SJD9=n$Ce-p!->~Qw2F>3@K zh(op@8ZoV-&wzW@_2A%>VmpBO$^&{gzAA?3xXp7jicxq=r|M~gK*6;nvDwb_RX+`i zec-S>ZItch8P@Bx(cDjBIZN^VfpaH*Ld)?(*WOuBps`Icc>NKEsrdonUB8Q2XF-`d zejl^GsX#avcVk`|xAwqu7D{J11-aOfP>7#U34RX4b3uk3THFQ=AI}BZb|~ByoAB^l zfP>1WQFap6(EfG1wHZ^v}-Bho<`jzoA7o(oWhdpoFfitUiq zQKi!zvFJ8-NEJGvyE1NsRT%LgErkyP3#=n4>ci~5*0EbqfEmxy=cnijgZ(Bb9F%H+&}Idia@uXC~b2lR^Io z9)yt<$ZjY{y`w!;DBB$TgwMwh`_F@LjgK_c z4#DvLjX7dH^q>*I|J;t4s`I6NKM3!`9bS!FN8>qYGBzd$`${+JTw{%jcE0W3fD$yK z<2~pyyR{d3LN;g?>Y$VC0)O1;aJcd9$#xHMBF%aL=Es>FTc(`iClKbxnH;IE64*~Nv zeuh1qV^uDJl3$3;x);T*%I9&;EdKwKVeIutqXq1RT0)?1-Aag|=z@e*d0*tqiLyI< z1NO4=sm%1(>ham#`L=bSi!&>~ScGpN091a|E&V;bs8TPy&jB#S&ft}x{1KEjr2MQ~ z`VV-yP*JA)c(FnOnY>|nJ*mF!<>lgqnM7ohD#@N`9hI9h)BPLqWh;p@?Jnt^L7k0H zj+mKO)-0;HO>-dLRwghzWhP?@Tu_Y7c*{p>b$&)L)#bEJCs@Pzd$9xz9+1EUi;+IxcR=yQxz>|tcbl1Llx zhaDw?{c-6taQ#lYTWTQP0zf3(N`;640SB$`_An824qtGGj6xr)a1P(B5VRk{Iee9g z-~{?BHT4q|oIw9c$%%+y0_~MT+gZUKWZrNN-=OG3d7llXxpd8vga|RR=?(X63gR)9 zIVn;+vI1dxWCenyIon7yC=H?uj*dk@k818EQ{S8_c{m&|$kbqq5)nNX*~u+RM5OGV zBf{K0$8Fca?ztN1Ot5=yA%K+Kb7>&`19s0rn~ui>paDT!%L|m&B}fc*L9K-D1`kcto6(H=Xf)!Z1=+N#02g<8Rui;5ph15 z6SMNqP;Wk&4*;K%kPIJF?F}=*T{Gc!2wjDz2d_yLmLoK1=a_Xfo*r$1;ddsX`Gaw5 z9)>SHKEXU?*O=J)(c?!HeoRbk3F(1Pf?$Tk_-8E!K?U#OXE$^%rB8?Kf_G1o!^hGG z09-R$jvq@O0xn#ac|>nX;T&s+<{VGY!ObezHMklHx(5K@ySDAT`3< z;+n~}w@}eQ!Ai;MQDpU4lhqG{)&IczJk+rC;XjzwZ-Lci0jqaVtlo``L^&f}@;+HVcIBEjc+zE_JV;7Az=@dO!)Lai9`LED}nJB0js#j7E z4mI`QN$A1X(1Qk4s`SY}SPwpe9;`q?WRojXdcekjqWKvcPL@qhAeJ^~^;7>%tPa<4 zfDsHTgmuH9!sno3Em{2s4=B<(px79&da%iAlrxppcQj|UIo#03%+C23lQ+f=I2_<2JIX^tnG;XRT0q9G~doDSb%p%o81l z=~I0QtuC-~qUjx>E}5B*D(Law1E7i?nC@8FaG;h>YVYrka2dkIyF(Tq{0r+X1UA^Q z=sEyX01W!EAo~8Pm>4qrR#x-lKctNS$!-e5gadD?iVT*4yTJxwcC2% zRmeE3XVxQLzPm|LkdIjpd%0d3rbJ9tAjAPfUm2_hNoUKgR>c?GI?rz9Qre6p5RkY_ zi3bQseRIhmzocGK&ZRSbIfec!0CZQOx>rhZ57b|CtkRRBry~O|6RLG`dw(&)We68L zP_2ak-~+IVAG5REzmAe+7fjpF?&L-HOd?uMihv^zsFI3_-~K4N7KK1OW|#cNoG(OW zwwd!nTE8jh{cA>|<&kd(;Fz$F(cBgS$T}e)rxAZ)uvK|1($?16zS`*)t+quXWvpWv5va=|CAJ=;C zB&RB+N7;!zhRP`nHt#2#VbWJ!I>SyJG*(VwN~a*rwpfc9jfW;K_zED;QDfu&WeGV! zximTq1I-dQEG-Y6O~7YIG}U5`|^cI-O~IW#do#=dn)a_4_M`;>f+`3X z31-5ZjU+jtOC42V61N!@=OU?8n12Y@dSJ4D(kA<^=t*c>)hI^k-O^;&vPjxwHxT$0 zCVLg>wK-Z3K%49)hPBDgjsY;uP^!s3tGUV6?ux)vTWhi@qzcAYLaIbK z5K=V(EhJ&G=MnQOOm+k5waH#VK=WuVfZy0;Z)Ez~WM{_#Xp>zAK%4AJgtf`8VOX2& zg#>=lWH*AU^zP;+dn&$76ejz==p_*1DiYnF>;7a|XkoIyG!TEd$zG3A1}3`+!0%?V zvlHaUA8E2nP=cVY6##yZx>|{$aAtGWzVupr_zqt-H%64!*@>sMU;9=&Q3$uTaE0Hl z?#|)%WNp!(gCg-m*V0{afR6eyBSynM+-@833GK>ZRM;1Vqp|> zcDt+C;9Cv8rkuW#1A6oH6~ba;DL48uBO3fIp1|@P(kBsDu2MGp3WT}Ymk4vSFX5Ek zwM9Ur?5_QfC$NCnDwvN-^Ao(%BW-zb{i%9<_C4fta34$x=Gs0PF^}4PHoll5L+S}= zhAeN+5N2yKgm4N&DC=Kj2*2}4VTeGO3?af~2;mfl5Rt+ViY8^dF%f#ZF@lzV;d$83 zt*d%B`i%_){$(fpdH`N)*xSdvnES4pNQ<#MC(>OoC!-jN5EJS2r#UhpJtooqEtpMK z5a4X`1AKs12>`RnHf~=dqWG*nXIL_&Eb&>r@65)obQwWTKWhP)(@%b*k}~}ih%K6V zw=G<5EG?S^id5od7zk;yixp-^k{k%<$p@$p>_MNbEDjOegMNqsi%r;cs%q&50l*{NH= z6WyK69Dtn+cuF_e-oC0g5Z%c~U`?arSZlk1H6Ni3|H*c&jR2<2vi;~>0A6?7nm#Kh zdN{V2lrY?VsQ&_{(-jD(U+v_3ZPn@*bzIGCqn}~$Q%T~PnNj+6XCd4p-xu!Pg$Qf+ z?s9|!_wHH(+P&KZK)ZMIus=q-cLyTO@uGI`ij7vLdsiS#_pT_{mfgE3HUESf^+G_i z>@Bcs@eo+|f7;$*ie*f@^iym?coZySt1Xm>gu9!8m^K?{wl05E>MzaA^pOd7$s5ow@j0r)irdLikxfo>$A4fJXNDF#~jdwEQ^HqZi*G|(Gl1ZkkXp8p37wBS4q zv^?Y>^>nVIVTZWg5d%ND->=}}a^-7WW!nW;R48ZTI$LgQ=z@WTmV4=iSda>tYWEyk z>UztuR$)6?DFB=&E_IM)nC4@j;IRr3mWZzYkx1FuF{H}G17g9hG6KsWH!0CWT2$goqC_GPGz({|j43plg_$a2!YLUGgt~yze|*Gld;B3^of||&qk%DP-KO6JE6a|1a!x=9Dwea)-tR*ri}=v=q+u3}i}?FNK@hmOh5fZlo?Q12pi$VK4lKma{9bJ3R*2twsui9f%+&x3Z5}l}df2+}}y62m%vNKxc-<6^Tt?~w=G;Ea@nT0WvO=*?+ zN`XZa%SW60T%{`zXmdV?J{wTwX$5vdjD4(*NfpCsMoAT`AfQ#O5`b2*YKE1H)go+) zjipHun?RUi6RNMpw)q08SlVusS<9vERm@H;ZLgQvwQOly*_ZK7(!Px7pAee>OIO=o zdu3l(!qQiupDuXSgbWC{e{PVnUXQoa`r8BCPj5{k#$S=?M;0wjB932RN1ildRL}O) zkFLQ+v_f2|+6V?c4&s3X?($n_ZbDLH0aWkL0X{18ZzUxbW!eB3Ggs+{Fhm33!?==m z2T`UCQvK#U0^0600NAE}a|IJn{pNavwf(V*4CO#Lus;<9v~pAd(8^K6u-^B8u&EsE zxl)uvAWY?G(ZJZxgZ){7w5JWWGtZWif{PM2^>-zN|)>~y1-!}Jt(LKdIq`sX4%5aINZZX2(kF)vA9 z>JCCKmV1+F3x>iL#7zWy=w;1p!PPCY1>DFH^w0yF_t4nX;TD_Lq8!$uqsm!Z3$-Qs zWft>OBCWc?90hh)O@}6}^bNEYd@&>PdPX7qZ;;YhRD0T9xJlv`sP_~COJmVfz>gY) z*)^`kux=rF!#P{A;*HTYT0ZZvYGlljXrDX@axDOEv5r28Hx@pO!uD#PTSiI{4z^ZT z5WrRupEsCR0Z7?eO(jd&TCEVpz;DwrkSu!2T~!>1@oG=}^SNWD21S`R28NeAXBGm$ zt{IfcNNl{2@LkoczT13 zieqe$;cTzi+#n+m<^~yofO!b)I}u{*68=M(98>c~+gTa+H0!7I*buf`OdM~6;TD@_ z{$_jSO8Z!_(zl^~2^F~p)B^GEQL--V>ZcuIXS<&nh*qaWvb|3Au1ElN>l zfiRU>AWUT@;@2s&TX9pebqU{XKLa6sw__BBz82xT{Zjc-h!DP8vAd{>+||2_W&xmQ zRqQURm=>DdLl+{T#}QiT0HG{(1CrFbyaM4A zU8bg`=<-@n1iIV=AkgJJd|hjP2*Ys?^*Ok6S|Fg)p1yOMJf>d5SbPNYt~;`n+X6|G zm2z9)7L|50yUw!HBo9Q%0xcd3Kx^?7g#V|-;5+;MX`HU79|8@nA-|^LKFoDDOR2DP zBf|f3Gd)V!-$YGe#Xw@7dmna z^o^_VB?R<}Uj={`t@wF*TLNYJi>rR^LA3o>;kiIisjJGSRZXDf>jLvY9yGps0@}Z^ z9KhBpvS_`lnSkf(0a!b(5<%`fNs6D46D}Li12UTdR4<)jkLG9 z;k960fP>4Fbpe6c9_s=etEH?92!vP{NZnh|@V~tU($@@z$t9DI5D=Co(NC?H+$t^2 z253#`Qe|nZJj2rD0Z6el95a~veF&%Q_uWAWE?`0%7j=A;R46LpWu>PZ1C) z`+YbUNZId0gt^}*P>(XaC|zc#2N7aqq_>^~2)*^B1Qh?*x1I#*F&*l`YY<9rlj>1M zjksN@#|TqBs{YTa#~uGuk7m~6VmVI15h_p*o`Y3-k5rFY)QEePdeoZg(a>By*d$Hs zK{&;F{P&JiT)MD1JbngcW_1JKh(N%dE&O{cQ02hCx0ZnNiEKnz`$Rk(JCWiOVIP*_ z6Db5m;1d}EAei@71JLu{g?ypsy^RF)ymvK#?KAIX(NpHV&ArzfQIx<{;&IQ1@?IAr z{Qr-ugwy#Hho3;04nKh~9ezaoN{3&{?#TNL8`KABrF2mNLU&Q!K#|f#@f1n(gkHia zT__PLT_|T*DP1TLx(ki8;L5_^dw1kNP#)pf?};5B!m)q9v_S)@R}Ux~G?sv#D@_6L ze{%%0+)$5T!1BKl45!i;Lp_8a>OrXQ)uZwMta?2BKlMnCVB{%Jsk<7N zVK=JS)%b7tnAx*;gmuvi)^~k{GrWfHB)fc$N^s>&R%9mwvHh+dv7FJ9)b}bcNdsut zU3wp!2&eXkV+gxXORvS1B;g07r->bMucMMzk`NX)JX$r%wkkm0YjRG@t`p|LiCdb> zMRHVr>?3+jNnS+~^cmtRl4|BRsijwu%p*0gBC!hgLzTtXDpxt!bjo8=Q>Et)RMK07 z8)JFSmv}u8QNblzz8w_3TmpchB z#OF=-IsQEl;)56zvh;pjzd;!+C$Jg-WwDw-%Vn{FwQZ>^tX|tJi##OJa#@s-TFAm3 zdW=-9&frz)D^40t3``=#sDw9>unCcZh~PF7`aR9tNC=y^kq{Q2N$A^11cF;N^=%|X z=+7jA+eqlo?`7OZLRb$}l(!?0-(MgYjX=dpA5`+IBJiq`-z)+xmtQS8 z)Kd91fOs3*(hBC+;;1)%AGZzD&3C7rl_hx65iNEj_)_|mlDOCVS4q4OwhqSkOtrI(rlxv-Q zB3_Q!C${VV7^l%F!idW?Fh9wq{ zy-4ZXP*r`DClSKbY|pc`QZ3)p|Me|LbX+%S&A$?wFS@#Cq~^w(&938|&#&xht$02CEn0%flxu--}d)cjchpn3n{ zGBZxvQ?y=mNT${YU6$7Rpv%%)Z+2OhccRkzLZ-|EH2sm#`dV46qUcgAc{Ku<@vI-6 zS%X`|5I%ZYe#Wi{vn4Pw9)|ER=m@ibINTsIO6~I@eDt!uUbWh@N?4t75UEr&Vba{z z&6}-g2rC+Kr`ZM;=3OUE+-YW&sV~df(()7#oM0y^Yu;(bhM97Lu0WV4=n4d_f<8f) zh`=hq^TqK+88Rwei6U@pF+vxC2Vulxhia%*Io zMbQ&~w5^2zW<2S;Z+#~R!0bgQ;%>gk-=`)!vWfSnxeqG>>b@8uzdGC?xS_ST-hi`S z6uW;d_e@oSkW4n;Jr{Y>3J}5FeeR^wk_cp6l6qXs1?+$^tJU2qYg@X(=vIkH=~e@T zJ|SB$=!r;c_pUpV21yLrE!FD_3bTC^VYF{KyH3~L66a82B-Thq>bcV@0xfSf>p|Y) zR?`IHUu-oLjM-`kCtFQ+-(S;eN=W@PWAFd|xsz~&1ft?}Nr}NYs%kQ$ zrPHK&Al^n%)ib{q8@T19{uxpI_fL~Vm((O%RjBTeLF&Ms*JPKp8ucoDU3Ezt2((;c zR=-~%u{;oOqr}RXUyCI+g49xC*G-ki?-{gJR@QA$_A(s^aX!(t1|s!*qWws+eUFr@ zLdivk$%~d|0r)-6>`9%otog5>vslh-TtZhc>=<>>&|8?zuRks(XD;sm7*efHjr-7% zpO>Em$q6SPXStrITuyWmJlN6kTlSZ>z?aUzV4S{VPAffL;2 zOv+0r?s8UvS(NW{O4UH_>M7MK04YsFQ zxA&B4Ao2{RRAT{%hR-S06a{Q~N+tNSO+zjr$BbA}gm!48*a`2xo8&~GkXZ?b#*vs7Stu)tRTNzXM+KE_ z#>;+Y{0+;hK=|mUR*?tQ)MaNxJNn0*%-aE1@?Eb)=B_8=)GHA#&KRyX^$Vv(uZ|Ht zwaR9^-tB^!6=8E`ML1< znD`LBNNhhWi4Y%DTK+;rsz(A7^PODx1Qmf!(~0-k?YwR(0ul0SqkOd$oXiACH?NPH zP;tl1MC>R^KN^WFXNvdPFrw-FAb2%PXxm-9XB77YS3>wWljY}35TA`$M`zfrx2h5@ zE5TH__Q{HPEi2`QWGQ!EjHm-pN|r&(itfOpGws&Djj&Sdnr$Zq#_4T}zy!h+7!iiR z@=(&23aq(&Jj#d6;s?x9M&5@vOO(qBg9FA~TQu5FjJY-uDRXU&2zmk*wzuhA6D`r~ z2?WA)t_g%W`6j~X(}i)_2T0MUw;Qb1!v5)a10h4!MwIhY7?+n|T*|g4qU>L#y=>GZ($f^Mx{zrM%JSndq2DdK zM|P|4w{v+MJ@dmy{i$d7Zduggxb=;!y*|6w8wfzly$}FD$34PqUK$!Ap zUG?`oKYQHzK&G$H?yV%C&+eTCK%d=P&y3Y^>#G>nXZNlru*E|ik$KXmC))34f3%&k zoP%e@n(fgz57tKPu=&c7Z)iC64x9J!GJ6OPgc}!fW}ni0f6I)usQ+cKP)%S&>B*t? zksdAD-;%x4uW((IfOw0pi-EtmzvTuLuY&o(b#dqt*#@AJRRTwE=4c?`DTAXW^S_`%AFDr5dlr{+79+ z)cq~b;e}ZAJ6FEgQ771Qs9LkQxLJ&I@InkYYn#1z4==>ViOWN&EAoBUVMRV$ugG7? z3fwqC-M>5>91va2Uc0CgULW!)&1%%Wl%Mias`Ci6T&nftTT5Mt%R&5$Qr+?z38lK4 z`L$T88%Qmr>Ysr%5^HDFtuB=2&jgSMKp5FoNVZG?k>N_WIBGDru@DwM=SVH~YH6Fw z{WEXfnY6LoKl5h;7IXajtCIv`j(-ty*C`m|0W7wmi(wHdi#O2aR}uJcxM6S>3L?6D zSKlxg13!2ZVsK2HK$tfSa)aJR^2m^~QMZcxpzgh0!iVFk!r z+zcy0yp7GUn)$W38O|ehvcstdSbD2!hRXp2&2Y5>{?KN~i#9i~h?E8I*R+NJ_;0vh zGY!4 z0s>JK0fm48j0yq@a(EF@1P{bx7X&o%LcH+?R|PLbywLSPMHgKUbUjc}@j(BdPjy$P zCxMl9*YEE0`_J=KPrYxw_10T&y>)g~*FjtQToC`8mcESX9kivdC3UT(Zvxo)4$soJ z1Mn?dTxZ`u=r?8nlBmzUBg|7c79&AU}SOD|DFtLI?p zatd;%Yw2ZF=v|(rR}wgQOJ4x;gSPY)ApT8D=gfQmTShpESjY4Z+S0d>+O>4v;kpx` z%qXvJ-Amwq;p*1Zes#@AEde>qWjl)KjsvGq$iGfblz!XN8ZPZN*MroO^fq&H+(vlLGKx%=!XCn02uL|;~f7F zY}uqgMazroC!&!CaQY#M@aBoGIZ_FyPtJ&)jMX}tC*dU@GFo1Fk4R6FNMMBfWQF4bJ)#bst?eZ0>@aMy(@5_~hN z)umA0Ks==KG*i>*F@LX3V0p$Se=RR9Kh_QwS(6N~INm8VXCH!b;%({mQ!SGfdaPfy%Osb*}zf zQPz-&4^MgvUPN>{NpE1i;}w8Jz>XuEptJ>uPleepcpBuwJynW7=S+yW0tDcf={$ne z)&U3|Vm5Uy$Ge^_3<;Y#^5UpgvGLYP}BLRN8;z>sro}Xk}9e$c$xM z?QU{)3L|k_*rowQatnJ5N&as)$8~|2ehXUy;E!lwZN401X;23!?QH*s*`Y4t82{E) zB4m@xcV&#?Blx~738CJZ`4m5R6de_h&*~!n&39&eks^gtuiA)6QkX>O8V#R6=Pgu- z39cm^yXzg2aDG*7P>?4#V`v_&pKH@hm*`X!xhQ^qJLvyqT{xNmeoQ5|} ztKd3+WoS8%z_W|M6z{-irBc!|C}@524AFUz>D=^(9IWw-;2lXXp)$J~)2j=Ba%oMz~nPLDb51uy(` zgbTgFb*VzXB$6uPnecJQ*QcGkKX*CwE8k%r`Yo<6o{0zZ76G4F|JX%SPj=_k7jJ|kGI%|!~difOfAVDNGupP@KMjJ zky$mKjdpflg!bvE$(wCfMDZ=iPG~xA@ifCmvQJYjGj@)L;GQwwEF|x~Sx0hp_stdp z-rYAl;SYXCk_}$cJsA=ayeC5<)FmqZ-8WID);w_c4G~Fq-w+YF`(`hN`2Ba^xLW~W z*1m>LgNAsVt`CkW=&g%WMHUTaA}FL8ty|_!Df(Ok<7xVRn$Yw4pzY~h=2W*-p8 z&T+*7gnJd-W_nV~on_Exq=0VZr_R}OC*4G=xLB8J7+r~vDT*YF|%J?aux24cqCy%qt5O-!? z=7}eBG}}lQcAsG4_4Ri7e@t(A5N-kWb`$hgQde)+)YIGZb@leTr#IGBskdW2CQ`G% zp*Q2*aJuM*lbscR(GINL1BV#L-k2e7gR3|l?PO6CZ|Q{xhE=<9B}ySbfs(-NR!_9| z_T-!b3fYpz+PN)h#W$K9VyvJp_V~9x%Av*ciufEw{G&^}j>JD>aDSqgXYK?AqOUdG zL&zfjSsQNOTwJGWpkCh66-yPDpt1M`uENwcb0rS;q|9W!#1Mn+zxgYmOki=46+@6U zvtb)>6>&g9e+bo9-;9Ux8XlctI8$0{#z_1>N`D6}h_>{wA z)?2QCxyZtl0nPor=|zM~+`Z}BkYBYoeV6nfcyD@`@dA6(2?zJ46Hcn$k|0pM39ITY zq9^U6%t*d8%NqK#TcJ3itFW*){p>-t)mt`1_Y~J6ysggXB2pF@;Kra#Yh5q`_olxV zj366`H|rYu?m7)bqOYJsEn&XLWJY_<$AlGr zC%s{0`8=GLqyHJ&YIHJkw~S;9v!bKnUk`u9U&W(sY<@YOcEkdZUyl#Z^om5bxR2yoe-5V0Chpl_x@_Vg^t;I0b_zYGL9`hD z-OP`-_0tZ)uf_^_1cGA)CZoO%DvbW8rHd_aQ*iSNcO4lsr@NJA%I)YrFPi1nnJM41 z%6!uURff%gxevb6aB1tbkfxd6_5*+~xK1kpP|-hK+|(OD0zm5_>7oX1T6X|@%hJWH zqW~POX*$2QXkH7b=xAUjYN(&Nqp^h%ZdwO~^K*OVd^}`$M}!OgVC-T+`d75?> zfd8Wqq5pyu4I70&9&XyZnsE{SU#0(6EeT%B zbRpc#<6uNWAB!GS4)*0JnKvt_-tOe~Zg*B$3OPV!PQhahT;(C&qQI~K_3IttBHR%p zl~%en5bG4I)41qORJPU&!gpX5gNOnk8olXQO+7dpaM$6uP4BcI;#(&?E(mWZjlF%6 z%YX~cT_599|$(2ESZp;pH)v3TTNFKnpzJcVFcq^qw|EW$KLr!WBbjoJ3Vt34IU< z%rZO{!Bs9r4VQ*32Mz54apocpmjf!F)9eDANAPp>yav{KD+k5d4G*ITkJ)f1w`OC( zZ}`QxMAO~4S7~y~@kH>IBbST7$h{w4rk4*$;-e@~nb=B09)4H>MO3ab8anq4!EKKO zYK&IVza5FT7eMm{O`PZ9-wl7m4iU$xz(Thj25@R58f^z455Ore_jTUEDq2tY#}ye3 zoNWNg2-M)Zk#hl562P}bqr(6!ATZsDZbdJ!g8mz_o%f1yP7nSDHF`YS3&36gDd#)U zf57kx@M*e~^&O)$sWSMxe(OYOPIKwsP?|zhs-a(*QS?_#p0)rp?v^HzedxhCg^-v1f+5w#Ux*l$RyeGAFyZ9N;RiH?sYEfr#*pD9iRNibmAM0}gCN>;jYS10uq| z56F6Lshj3uO!Ee#warpv@e>jI2<%aY-$&BC>j(hKGF+_6@NTyZOF&q;&MU(i1nxC* zWf?98pvtfYe!mRY6HsNi4S*`cUGV#5C>#K)46_KRGVDUYE5j1{y)v8&zh8!H0jM(E zPQO=%B2rt11@wDmSVn(R8O{Ypm0=D1|GW(45Pb{CD(^GWk_+^HBW3>ux(np8bXlMR z3pE6OZ-GhyvcRPBL8BnTy4=MDdfW581~iLB{eaOG1-rVfH{I9(oGjS)QLvniRBrSN zma#V(4K1EoqFr!trSfs3x6N})K7wbL{FbAcN8;KHmg-&BM|6sd>)|T5xU4J5`dLJj z&4W*N3rI|?E>*tlk}V+FDI-x&bfX4T3v}XLssB8iKR%g%UUh6X7J>DWi zgKgb0-qKX%-H@vZmKKM><$r+j&>DEm+ws^=%m70(BUxBggv);&bDyM;SmSh2441E= zmoRT?gh+7tl^7c|$W9mi;POWRsDbAV0_%{#G(<2jz~fEEe2mR8SHyB&%W;=O@(VS0 zIhJ!()!A&tt)X_-V7Hob&g$O$r#Ej3W^M790GD4F(#+dhyKAEPDQGKY<7{T+riTz}!{A74KGqq7 zKsf3_pVithrjO|gOa&hI!sS1PN^ho)$LAs8^3MdM|Md_Me1OLx-GLef zj{3-SaTFW@ch%8sF(O?ohRffIvAH=81Kp)?QuTw!Vg(*9|7E1V3QO^F{w?hxxH$I} zmf|O3P(JJMdO?E*#KjG8vj(|Ca!D{y+4G$UVLvwOD0ikThY8aIC1(zF?`)ZMVYK6S znEnjZ#H@>2MB``Ss$2NgqVP8O|BXfAloP7ZyGY)NlyykoJ_6}1PLK9NntAkJo)&)E zn-H

GNH-bzkse;RD@x?sneEnI4Zk$xPq7zc2hgs6x@y23i+P3*9Clc7z){|2@-Q zJkFgYb4eoqeKXHWT<+TV5EtQCgFQqKAYz*w$4Os+9v(T$nX6}p-vyxBpT>O(!}pI0 zz+=1FUtnmU!kfILbpsRr{=EhMwQzA@gSTl(xLsfCIn2$e8p85Yi|l~z{AsJz%v*7(09pQO zDkHJi7xbmBnkE$(fZT{{|~z@e)Xd;Ds3BCju0~i$e1d!@n4# z25Rvy##j&FpI?k&ATDmg&BtH8>p%TVMdi}!pRED*Ow1rCl0+n3DoQ>{7h`aR!MhOB zX>c}H;~`4^bykPy1?S+(LzZ27LuV%ZVle!t>W*FUpv#=BoWu17avda#p@-|7VfY%t z$djyUHAF;`hKM+zhPr^Iub~nE|9uTvZ=eEEv6;-;Ex7Y_L;%67{=%;Wnju{GXKe~L zL%8zKU$|jArLO%$Kkj&EDenbZ4pTC&@EVe{VEKCCNqDW)4-a!F9+$xtF4DA|H*ZZB zxwoZ@!g&CknHgdbT;X}>4gNkSLzti8!Od8OxMNqyEp6k$UUj=hLKoJZ54ok;3IT=3 zYn^TV;aWuZ7xCKPI_?lR)165&L36@G0toD1vx?Je3Aj%xa^X6>f?BAF!iic3ry9UA z0+Vqu<&^-|0+4$gzL<$U4g|QzVdPZIh5*#=ju3k2EMy`Z51ENmRVGpbnMh?OW_SXz zDJeV^5>^BdlrWUxN=O2^lWPOyU_r_l)3k=x9RY;g!toP?QxtLw#{>wd5J4gTel|6Y zhZOP*C1g=R$nWC1a2|%HcT*3iYfT~zp=J95>z_;24-((1Lz5WI|FZn z+-3AbtM+D3L{_rGSz4a66NpMin+?tW6~F=jQnU8ynDr5$W~V{$bpQfFOIu*oSGLdz zMQHU!%FH26vv7gt#JUC$5C?X+_dH}avcSviYGhUpZK+1Z>gx;Qf@FoOH0uVB0h21k z#+2}%0tj%lmqRm55}m2cB>r+v1A8j9a3+j;>V*Jc#)V@6L@v${w28t~VBs8B%2UQ% zE?0@)dbe9^3h}XDVXk65q07Wt{y7(7t*{D@```+{z+mfwtJB1Ta1wa#&uL;GoCMZh zlP2DRBOo(4A8E*H+4I7<+<{QIL$g?{6uuCFg}gtOMZARtqKbGYfZ8J7%OF+6sTbB3 zaRL1YEaGB>`b9h%fM3Kj2&f`n3?NX%koOB@G;0xZaT7AT2N})%lLyROo+fUDlOdlW zqnRr`AgHn={mHQ(%-2=Jj|;Io90gr?VYFo*+@L!LA}+F>1(~{73qLnxIdRz376vrZ z!_MXCHFgoeMyv=oV%c+{nszZ3yof%4y~_na6kd|;v^o;6!{A@lPD_cN3ahRGu(EBY zGZi&*J^ZpZK6R>F8(A6Twy2jq1jh-k8e%oayW=nRR4d!123h_2# z9)K*pNz_0lCIG?;OfVnwAmVlsT-q@5E(FRu%iXjU z`3Ha!0@wyB!i&7Nr6=MPUKXacS z;Tn&wJJ5y8LRPv*Mp&w$nTO~Igj_$^a5Op=s8Isk*0mTw(hkEgNd2{+*j+WQ^eurs z>ahGeEyDciSmQkpkK!$`{t=pxHhzq2<63n$*!PLF@q40OU>-F{s_qlxZ?(`yoc6H_B=H( z#hL873{CE!UT{A6nE33}|Mm{*6%f;}uIm6Cu)6;4Z||V{SKCa7!a|{xqx@~AM93EO z|A`IL)~jAUs$@PRD14Q1ti`)+Ccmh}*7*<3xZGd6C0MdM52|FjGA~QxV0VZM>%Cx( zQ~tX--W$wuDh5NpZOgwS$0OFeCCEu;VXBsAe~Yzi7AXoJ*u(FVp{a z{V#@?e*GVPPDo@6DmQ^(BHE<*oLO(ga5p!TbQtp9QBqxwIo2LJ9y#{PBVaEBM@ass1~Zb zB|^B*;S5Z!31o*Hdkp|GGZ^=66N`_|CZM*s#F^H^youi{= z2k#9cEZP6*WUR1|J-FF70AS)QT~B8J99?tZlJ1U|h~VAvLM9)N6kId|L+;Q!rYRIDGnnfF{Q z!mt9^Rj3>41a2{a+7q~Q8Kh3&t_1*tmnU$y)1RWbCvbNI_?HZwEmzRc2?q_GurhRc z0@ub^f<`V+;1&SzPvDjS@Qu3?K$3AwM!s?TC%syOKeAuopY+NDLUy9+q?eCSC%rO2 zk#y3F2zAoS8syErxw=-^0!t8!Pj=0c2+4S9MIA&{UBszg^Xo@h?U}Zp^f(k2Z9SMY z_%~kqlMsCAfSHe0eG1mx%qsM9P4&n|w2d`f5F4R4i#!itJ%KVkSLh_sv+yum<8cNf z6yT+HGprzTw@_g#-Fq9YGt8WLzBkkA2)vNnpb{xR3(*vioN%3uWPgAw?4esd+v=hX z0+FC7?5*cpZ^G9Oh%<=jsHa%tK+zkBQ9y*Ig&W(6Bk|EaATmkONpEWR`I8W1fk3w) z3Ohq$v`sCrP`iye=&d(#5&(8{6_2y&`OtsrBDd*@Tm+yC0WKd2=Y*rMM+abGA3Z0^ zO=2?uV1t;$4PwjS=jJfElV=?PZzs<-`n_EsyXp6Kf!OzfU2Gp}4F&6?r-(!cKz9I= zde9fe#k1HfSlHLq!yp98Z1+R9sfSV^&@k8PVGIx>f$;S}M3Nrn0m071(*yL+o#Tl& zfgTOCTF#x1q-7Bd(w$03XGqZy>^5F}{Zc@`di7EUz<>3!fPi}SvI2nr>SY}P_3C8{0M$Mr7xw1I zg}4(Uw`Z0fz<1qW>WA;Ykk^BHB6=v60QUk|^-4pI});&Ue377+r zm6?sK9}%u#`DUdv%-lyHefw%yw?goL|w_P=crQ^vGryKW421!?gOl|mG% zH&hBCrQsVYA39Q!XwhzOdu92#x$5a~q7HcGyki3J$$07Kb|d<4sFG0#)8O77St zs0?50Hka%#M3^k}Jvzqi`g3@JW4_|O$th}vgQ0_YHOp{3*sK@bXu3O!K15n!GLH@*gx=iWRZ9xABmS;hwqU9) zQQ7y}5@*y6$T^c}5^7~{^^#zfNWVJN2%kmvFw9qGZYbRz?DeJ+(Kp0q$+>w9UJ_8| zJIpqbV?ZzgK*3+IqtaP{5&B#P-D$RWMq|Lgj6kVb5E%quEr9MDv5U+)dyShH6a0#X znr-dr0fhYIuQeGFC_PKFXoT6)J|lpTT!eM+7?(!QOYSsV+Y>!;iI5Vxuajv2stD&o zL~FxFHzFtKMW33EbxiuS73XHwngBuyGTIY_6jG2&Jwb?& zg6#4HkqA!^IpN#RRQ}0?Z?`K&?Szk|oHXGh!kh5Pcd@KEDl?p4`tno5N%9ksB)>#Z zkxG6dlH`{NPkxINRu;dMVE=i@*>y8^!>)m@KQXnOEO`D5L{U71@l%7#@D{ZZ9@9-G`Ssd*LM2i8C_9 zjc}wIG&e(B0w)97&&v=~;TUipUMD{VCj$!c*7;008RHzpfRh1V!PD(rH{fdgzeztc zG6XNWFM&f0cL!HbaQVXD8 zIqDb{iHlp|$~uOhe9$e(1j5R?w6+&`)tImxF@%3Wr^BL7BSp8A@HQ`ognPHPFY{s$ zcE|m(+p1lrErH?-GijW;095IcXIS$_?X;n?o~`^P2EuZtg!ccwxMN1wGP(lUiBnGn)i!d^^^!{-qt%_4%wC<(hz?&OG?JK z%~k_Xc6Rz@M{0xo?+tN{NG_q^U%#{3+mFM#uk!vW3QL-O3wKk%>4C89Slq28{WR;w z$*vMxBfO{>XX@3qcNUEtityY7OU6g=?1U;RNzoE(K|#cUcS|#`N!#Cv@Lz%A;0W3D z22N$86rwJGD;ni(3Thh&9A1RIxYu}X1lPcdp3z&1oFi+}#2~n$le}*|3`dZ($Vx;FGpU1i@IucQ7gklfXu`dj^D4xenuO^3sh~>`K7?T~H%Gf4| z!86xIGYmP9P~k;0Icv&!2J(N+JZ$#P;S34H%|okI0$22+;ZO&oze5&YF`Ni>F@pg0 z;7@|{n8R0$u9lhv6Cn#uO@e)dngsg@H3??n%lWsO1k0N1e`zJB^7=G!4O~&0>DpUR z-eHinit>JBIKM#N#T4;l?7E=vH3Sl-EByNX3!g9#{R4$}i!~@Pg_Oc=3ktXEzagBQ zYwE1Yc{CBv_(b&;(C2g1X+JaeR6Rr0*Ptw9WeVC{L-ch0*xM~cZ^t8bI{Qj<6&`$z zi#}dMbHZcBa)^z_$8G8cAr70mqGlnBBPR;N;c`*)P>w%}lEbgyD2j-rQItdkM^Qv1 zjiMw%jiUU;>?|hLBGgn4n(Vza7jH2;kHG%N1#&UFr%QZrV;k?wslgfbYGnK?jxAP( zt)&?4GvgVQW>q*8yCZ-&x+PlV!6p9KJA33@O+2DE^IRc<{~skgM=D zm=)Njg$-FluEy$ZJ9zk&n;|pYVZd5&K~6%|EznUi>X37ymlR`VVh@D5DirO9olC{= z4`15AIT};Y3Gf$g(=wcov43R&fjwG5^mT4#kuloEGDo`NvIK@y7DhRD+QhKROgV+x z3BNyu+6&+hoPYiSWgR-}{A^qoz~>eY_00+D6gKj<*2hi~szT0EOk@b*kLg6VMBf?}f&tpVb zit_pcE+dJcC~S-<8xh@p4EgO6;b6POxnHndq9promk@wvkIjuyh0koU_ZosvdI){Q zBA|}N<3hOMmubdmY$II^M}H35tD$i8x56gUW8mO#N!h4qH8$IMbX=s3jEmv7%Lxr9 z^(v?t&?6Z1Qn-1#n=1}Hhi?m6n27l7_&(i#iQb%Xf-ljD_)oq>&nd(H{)^y-x55r+|D#kb0|L#u((UAizXsJ* z?rSLYQ5!L>d=O&|z1c#qOB{#@vP--!&7~f*G$!<)F3oTUIDVHn=Ta|t1ji;q{}in1 zm7kLy$GgwC7~3;EY>3-Caz;6}S17jL>(2={Pe*?)?SeL_isNuZJc*GnsuwgB=&KoY zqa3isCv8d-<#1yk(c&eKr-_H)#%^?rg!4PavcUjd#KwD)FktMXj@y+76K+hZE^A%; zl2n^uCUP-U<}k={HKdR!-xelw+O~{wyHhV6S3SXm%nVGBDC(VIrs+q%%c-CI{?-s? zB0fioWAESJ5xpl==w|nnXfWkOJT7{}jr~}TJ%d60fIf*qj%J@4R8>R^x#QU6;p%kI zN+DWkc6yDgw3blqC`-?h2XeRl0zKzzC}=s@mE+_#fkN2~20V2;wll_Fmp_3a@(MiI z$c!DMd8Y`rfF4$9R(As-X~vG$tc$(wW;p^unrFQ;&{g7vKyYzYCclfxkL7n*gg*aC za9@On~i!BV6uS(5~ff|0+Y9k~=G%)J@Pp z7K5cUkoz?I?4UaF6)VK)-L38islP)6sn18D4*&3ZIucM;JS@|ri0k&!V6{r{l$AW! zER`H=+ipV~spKZQD`T+8Qyay_dru+T!*zRAP{t8hW|uh{j^v?#t-2RTbDjq28M<|g zN7@5{V`u51ShJei;^z{P(4T;H*0Zn^!9%K~m0=go3RJV!MvhC}D3IH&pq7=SjbY^t zc8h@B$Jhew>zH|h+p0*!QJl-WSG(o(#SmY{!nfG!2{1F;6JVHOpW|_mwRSi;$ot*v z&E|@-@LmpQna6f=Z=DOy^lnAim-zV1*sl17xIeiV3t?nSnup|MiS|SAHz#=wtsnfh z3a&)(m{iXmPExTy@EY2&X|RXO-tl641)^8?y3Av~nH};iz0j8P(>F5D!LIcFoVaK) z1z;mY|L#oCp|U~&(D0Sm1BZQUMO63D|2S;71%doWI@X&4lJI6RtO-VCioFixI~fYav|jJPpWG{ zE!EoANLFjR{ZW4dYFT6*jpQQhv_I+*d0rtD8Oepv(>TaNsQo@gFo(B-FY9XgpgMXV zygw=Sfm-T)NFBWo-5>Sw&E3zMmX9>-{y~i&18Vogd%aS+8*yYQjj2;gV`ZFb6rgNM zb(odvzqA(aVtM(r`b}w9gq;jm9x-KF!RBZd@M{>>*R=2PdS}@j^)o5o>bJZmEU2$L zK+k5o{3+9(63o-nh|^fr1SQ#aP^Yv+3foQl^dR+{W}?1@W`i;tH=UOE4%z1hsr!T+ z(P|1pPGIPXSd5arg3M5R)-PU|T8h}Rk?9|@ZW!j)N@}TmK&XX%vByp#D)6N$UZihLY%=zePZT*Tp+pnO``emEHCv@qlB z0K0mfN9hQ39?u7fuLN;Daoz{(QRp|zzY5#igVbMxI%fhx*5LSl`4wFHWB)1{6sTf~ z=X=GpH*7IM7Jw|3AHwbY#3h1>L)7J}iw>%|5?r{dTz-`!3y3eKl+i6m*z<7ZYaDa! z-_pe2;mS8V?yzMidUZMQeH|1|8&EyrSf6^iVC5)((kZr|@+MP6}c_ip1N#a!PW6(Jh{N!$h1a|&L`>}Egy(xPo`D=Eex9(d z_reJu-`iW@KF=$93#4-r#rEj| zxI>x7!jW=GetiP`rj&U68mIICzq#a>W1wHo)U)k!NA^SeXaQ zG!AJRej&hf&LOSrO#xV?!Iw(%vvY?A(r9*!F5(}pP8UL8Hd;s%$)42FQ*B zS&X#I7^kmuo_0k1%Imy%Paz%$elp(G2$puT81yNOw1V1w0TIqdA~K=p5rJRSikphX zC+_;o92I#b;)Th9DV8(Ee>jraZjTwX#*v`Z+CqdYtvxyK0JEL!J;j@$Q zKO8?p5{7*E$vL#-$y_R)r9(ZQJEPRZI*RbVE6z6hp$tUj7q(-FFLKHz zY=%TjjPGOSIoxWSN5Ie;$-TBE0Q_yIl?1$Pr;F+L_S&wcf07i_`gDkEWJpPJvD;vV z$h;EKU_+#lu;(B}Vz}ZqC*-BN2|VUlS|k4xka2`2eF9P<0-Mz&9QXtzo3s5&0j~Rz z;+vaXDL8wa6Vaem`ME9GZI%EhEv4*8PrqrJ({w0~zEjF{E$Vy?lHC9rUhcHF77TV- zu@cCS)))25=L}M&4$<+j@n|2Uhnco{qJq4Qe@Odr+4kG5X#WBXlRkaBDE&5@jY7y?Y z=mP`FcU_(6)l-LgD(|UT?VxhsQhI4o>sP29{^;Pds&3RO4FTO*|IydXJmY%k;)WR#w`#QuK#VN~_^m)w?5BB|kok8yE^TnG&>eIOz-0a> zv3tkW&idznx}QPisi56T+Uc78Sde%IMql-Yptpd!;Tlk1r`cPB)Ybc=ehbtiN&S#! zzaFGsFPB~X52>@=Q2C6HaOZCGFV@{f4LQsVQcPDA>p(Fc?CVMSA}FF|&{djY?+T`y zj=5aD(RaV&Q3dw|$@+p!CL0_sWP)KCnNBe3B{&B7&bJ_=R~oh$AJF(!;8c(LN^&9f z?S>r-Qs1#Z>TRIjLh7dtJ1a=N8Pqv{MaZXAac=`vl+Ap-JogK>g*eJdrXk}CQu^>{)?+%YuW5dcUWB085FtL=^>Zxq#hO_lI(CUALr6k zed#jE`Re<0xl&Sv6G}N(?M;^pAyxSRj`<;791d624!|aO_$~jcPTniLpw^J_+h%d9%NV6!opMDnN*UyAZKiEK|l)FtxRgPwt2IDu8d1fV%wR@mac_kun z1)~bxdF>D&sJ|yc!KKKmS(@E4n1k7prN30}vur)VW4RP8>tEJcrGmF1xJY2P4>QTJ zBy2#deh0xB6S4a(&#-#D<#u?52&`&uIN{GQNG5eRAQqN6R@zJ#=IBSeOwX_jP=iPi z1wtNODD)7_k=!+4obv8^><%#j%;rrP9i!)WKe=DTE$D!EZC{fj7Bg zu$!vFCFyP+gG>3xf^spbpE2x|!04lDi&5ZG`>n&}AX}$rh^lW4>-!^IJLc<}sy(>k zrdN%dQcED@>l#_S9EPY~WecM3V@i&@8ix_79~M3_F8UZ?-NCesK`v_yf<;wF(+MB$ zX`hJfVkhNqP<|Pzz(Uxlx9>D)dVRoaE?iZAY?br3Uzvf_79&*J+A*Nu3R1oPZ6_$W zf>bpd6#hESXW${*hmjQ?gX>LeSgD)w2m-5aFxy$*dV`@55ON&)o;Mhh2ssY5#(I(X zs;O!%BI(|ciW!lSKKCL?gg1EA2SP>lI>p-{%v*3(yUluGJAqH1gs`koy|Bi>molu_ z4PypWSq%sN0)~}g74L5;US$pH@N$H5#$Cm=!q5MPd&6k%1HnUTD0i}_p>YTv0@Uu(i1Qg-)rPQrRWQ!OGS2r9quw&?51?OUBAv}) z`{rPrXTmTa{SpMph0x$Gl5?lT#Rj;lftJw2Ay0bNWu>6a2<3M6YANuJ84f$K!YHQ2;G0g4k4P<5$gKO2Rnb$lwPyau*4M^0caqiwSU5G23ElEMi$kd3I*~lyUly1VKBR ziO8j4a35mZ8v`$ctB$lo?kF&5Q}ZSxL+Wd445(TLGMOQ-5fara!I5W1s&25Y=K}AH zt8TPIu|YL;8X>tnB?}^$t;fmZWMu0(Tj(`Qy`u8lxp%MjYColLL znD+hkg8!s~=Y?@$TdCK$__4oL!G~8gt}SHIT0~$gj+Ji8+>4|0xP3g-S8yrMcNGI&IOkxU2%AQBs|Lq z48-HU=2(AT<7$v?)g{gJ_V$thqC>jgOgQU+*#`1UTIgLPHv-rNzzrG$ zPGTa0+Un`ytzJx4i%YgNvmXt>9bV9yiP*H7I>m*Ptgp?+89K0ln4LsUbykKL&pc&l zu66o_)OU7VOov-CU$dwoTAozSSvUys+u9O26SFf!&7?H3<8qe<`)2w*ry^&BX8%yH>r$#t5;T+d}5tF<(l`(*@F?$;4ex!(pLn0vMe zNx3H?Irq}ug1IN+kIg-rY2FSbE881xjziVYo{X~9k=5PI&{~x3sVH0fL;#m~RV5F= z#o3vDRbdaER8@$mttvf1?pKvE0JT-6l0m<_s@Pu!%X2Nu^Cy($Oj_7 zz|Eae{S(Ubyfaa0?$R9QbO8idayQD8IbK0P<#-(dmE$b{f;s+;#$hMO{T%NFAaiUb zS@C}`*CK7Ok`8`Chc^KdZIF=irVYWLFmkFME>R$jahxmX=p@lfh6mg^dZpJWVGO0C}Nvz zzfU-bR`Cz-6J+DJOUZpd<-QMc@1)#)R4Gq}-0idd_U<=oe;&yFQtk<$wv@{l^gBx# z2kVY(=JnX!bS-C0p4Vgd*3r~)1CPv$-$`FLon?RwRU*+PCAuREWB~zHAS(a_3*>*I zlXlJwbkZdlZ{_Snwq++hm^t+?n(;g7+hM!1lOC=+%=J3vafF^GbH62+`(44@+f$Nr ze-P&Q$9K~8a*w8uYemVO^l39uwlvlPARl$_(=sHRyU_jB9@fXwlKs*|plYm}qEeb?{8HXx_63!ALl@1O+zE^G={w)E-E zy_s1i8YngKPMa4ON5U;xfj19h=6dT6!S%0W5z5`kOKL#DRY9rV(QYHBS3inindmLL zeNjzq=f^GPNOWGNH)Bf;B-&)YJ9A%hCs5K{0<9~0OexLDTug+k&kpQvz>6JCYB$Ih1>-jv401Yd}RtmKcQcL zVur|H2~;znl+HIY?p)3J7G*S-anI3GQuHvt%dulyD$`idlyD*@?AI{^^=?P6*r~Drh{h+U@ok# zxH&U=`BGi%MS3f$Q>@p{(Z#1ok2_pSAJ7uf56{Mc5+9i_y`_E1SMV3m|9pekKKS`D z7#3{l3-OqPh%vw@5K;PKT*STrA{PjzQhG;rxCbOH_F>0r^++x3ORfmKTRg1FDqW03 zq$Xst9<#v(K#T^0Ixc;uQEZk6%T%s`R;<;?%{)+a$0|ta!&=-qb{tI0)=)ZqPLk6nGVEgl9!n2_Spc&A{4eRN(Y#zH1@~fKMklbQ3kH* zy%h+3uMk{d zdp*m_MH#;g1Z}Lei=Jb>1yw18R8<*t=_9y}R#@#3>2npSo1SZZj7SR6S6$ZRBN{W3 zuwQ~?u^+t5Y}0b>w}E&-A^xG|3i}&iwjsY#9Mmsn0B(_tgKiJ@K{7(&0cYKZtQdAw_VeUWzo(G`dZD5TPNabM*19)bo^`Vnpf-F7Y#1BFDaGjgr1 zb88Wi$MoFT&&Y+MaDK`|#K>R3Wd#%c#7MVa1u#i*_!NjOK$HO?Gxed7g&1ZR6hRe> zVLb|K{pt9&)ENNo1JDwlGYE8mNvwwFV**`JT3^48@2i1{Dy=tAQUw-D>s!M*{wx&Z z8$xtsKE5+D?8k1#vO5qm(TzqCE{zAt1Yl^Pr9VTi^MSY?2-z*|Gt#X}Ac}#It=0GV zSk^mGhL3o_XllI9<1;SH$b)}d7EaftIU5LrazhqA+O0&f~G>NL>aHQ4s1 z5I3X7E2}*ky80TU$i-rNuxev=Dss1t=>q*t z1WL9stIT%x7L2Wq*x{*TgPCo;2gC>x;*vF2J9Q7kcGbP zZLiQbdxcI!QlY;BL{g!TW(um%e^BIZq4$D(?;sWS;iWHQq{?Yy~cUHt;Kw#sg*%a0`h)ye_9;9sU&*CFg+ZWl$xJ6ixy5afUpFkfc$^SHKpZ zi;#zsqZq+}B*wwME2#;o1e?3bYBIi47nJMD^U}l)xY8fcf&>(Fz!o|f`By|7x&V=1 z#HW>K!1E9Rd{HYj2bv$4A!oK)_0?!(ew~O$X1A=}w<2sjZKJ)GBWw3!7NR#xs|lFy zMi2%~_c_2xv$S`B2-fUheb}wp3ifNZk8o?YeK;mzsXK-I5O8T{?BgB|#CnR*6(0v> zH{K1QvKv3i>&A}+LfRC&aqD={p9+kWqSDB*zCTygBG^xUF}D^WE%`9Ci7JX~$#&Z{ zLY(`7S7R+++x|QZz!idQbLZ6}B-@!_t0+9SUBRX4hu$3NCJd)I z9P1CnnF2Yy)ku*;G9qMERYS64fjE&AYDh*zQdRX4s;Vl4UsV+%P*t}DtLkFKQdQMi zK-5-M5$62)5-2vGf_&>vpO*oat)Mr3CM-3?>9ex}F?KPHmRd7A4I2Fl!7^h5jmFl^ z2;HOTkAOx^Xw*kgqd%gc6hh`>2sEk?o<{Elm$TmUG&;t}b{+%5-i<`djdX|YTmgaC zy|L^OfA9cw#ceTa;;5g^vJH2Xs!wD;W)IhSrV(uMssFd4we#0)Lp zZVDX_1|q~bsan4C3nArC@uR4rDcWiwX6^UEtim`(sEi|E$>4bwOY2L z5aD?o7@5Md&O z(bzs0rLhhOn+P5C;4DyV0YcU^!^nwE4S z1t{JJLaHoew30)V1=L5H(L|2oLZ5hr<_)9L6zmOCngW(H9}J@$j)_(VrLM{a2M8;7q zBoV1ZC=>J%$^;d{H$jC6nBY!|sZ8)e#Zp!D8+WR^ei zRtkuaT2eEG`+?|63bi=7mJHRP@ohz3yHc=;;a^~_lPd+z=XI3c28an{r<6`alG1&I zQo2I;N>_-0(zi2FrS!3irBeDJC55YWy9P>s7P$2WVqt+@8uo6oI9F@#&JDf+;Mv-8 z6pw6~Jfpr5aD-VvRQsvd&j9>xDf8`F=!U`eAjo;iE`mCGw(XlB}aL8!sXt zDH}dQWn*qI8_NROXaavQ8&r>hOnFH_q58~1#`3- zu zR5((yvyr9f9xsna=xy!RK#T@Ll8n?3wYviGzM`0_H@6Q1f}c{9Oy}wiggJXshS*kt zLH+&sAos%nB9j4Z0dNRB=MYH8lp?VBVAcTn2?L4{5ST|C&>x+WAx6QKexN0lpfUBN z4DkqD>1TL3dp6dU%nR_?!j-Mh!dMmw09gN(tG-WR0>Vkiis_oM0V^I{^}r1n#?{CJ z^RZ&NW*mqnh@TI69)Mecn|*OK2+kB&qH8v_(f7phy5|Z!|M8|NUc*0syKjStp?l-P z;L3UniyfAjG3l*fb=BO(ZuLMo;gG~Kg z5H%4G;W_dxQxx3irf%Pk)TaWF595AtW|OHzIPJl>xE@X$U_OnYhJm2lfPR-jC82Xs z8D2s#+B~6^HW9{a0N9QxHoHLA90baP6u&)`F9=`WW!vGVJ28(*$8bl|8ScPIaim>}L>n+kgmHhQqxP z77b*gC-5^E_UCZqsQcq$DV(+;tXYFV$f3AW@LUkxOTv}m=yS;CScKC6wAJCb{U9>r zBOXSE@Qnt9=LX_Gg1Gv_h+pHzpQqyA;Klb5GJg0ngtOUF={G{$QyG6vIJOc({*{8> zAJ$S$Q-|ym$kpaAknPd1{Upd3E~y_Q^@nw+yMyvnQa>KHw}I?a zgi9-af_8}mPDyp;bWq+!>Zilj*L65;0RC%+JsY;)0jKX3r>$X_w!Rv=4F3pRlR%b! z0)4+n5a*?ExDocE2J7W;;1@G&dpO(#VL??a1zy&@9pNxOJ((2t48mkh+lh_!YnW;W zPz39ucr-2!h0}J0!$oz%1_6IQ!*+)wcOmizG=aS^fx|(V9}xXg5Isf0J>lpM$bB5b z*?Vc2RTL##RJDIewnb2m0>}>H!;>j7-T~ z2YZOm5z1U!SdZ6dvm=?$$GLdKF2dslIO8T0s@8Wh-~&EB!z1=B9)nP)&Fz}@p9PQs z{Tr6kK0Zu{-5`p`Ft{+TH{|b&E7;9^j5#zeEqRE!52Zi18Q3S_pYQX`T?q9y}Jd0A>`* zQ*UwvPz88M5%VCm&|iHTIe7<!GKhGsP0j`Krs#uyCC z4h;18BreW|lVnN23%jAkaLI{-sVrd=K|eXoP;%Gsw}MC{f7``xlIxko(S`g7wt^hNUFL zb~pmAzRg|;yPx4{nmMyULVN}XKkgy?46Hs-5jG%-4@jh!aP` zU#yv{#wJ9YkxY^Y~V%Y-oR$0MT^Fs(H6no$X{7mofx;}ha$IQWs) z6borl!TNOg%vpH63)f~l17Eg*dJB(y7)hJgQMqgVO2TMDyb9Nb+=TuW=5taV#`o~e zdI^hGQ&F3qMlqJW1z-h$2RbH1w@wK+q{Sf#Q4L2j0k4~mMFy0`4DtG*yyNL&z_VJ`{1;J;WP|#%kDr=eS~A3 ziRncp{GmQtO86823jj1Y$+3Gw!DLX3f4~-Mlvsf<{U|HfV$ZVZhwp9)Y$3;|4#UAT(=y_McR7-H0-KzWDx!W&(u4aWMgX(`~~on&}t9D zVgMwx4g)Y6K&TLxYUW|4!}K^Z33b=nI^SYCpaigv)Y?RJ^rbUEZjIDRoQ41xN{a!a zvxxkJbQY6acWtncylY(EEf13S`hU)Qo8pZWg=J$*yo;DVxVL*QGGgE5>Ec)b1pq?B zwLDo6B?OMrn#qD#3;>G9^aZ!exqev)Tj2K#LEP;YLWG6TlYmIsMHAne1$F`0EI@V(Dg3hDRa9U$y27dNAhba`4tdQ{7L}$ z{3;13el;%O@!RA^8ch8O>pl$Ob`eviHIB^Vcrc2SW@N zH0OGuFuP@TO4Nu5a}J# zV`qD?Me1(pDOUsT0vV#cGE!>bFQLDGYkMQY$%ym!XmK+ei}OAl>r-gA##B#*$HsPZ z&hca+ea1^#H~hsGduee2D2m%sMD$4yGYJ@o*TEN$2#TkYWtO7(4WvjDT#;fFRV4{= z{j5k4yP@+$#*uEqDZ zX1x4OT%@8XS{xnG^vB@QpTNV|f=ByrfgTgljB#2*Y=VAFZHWBSH9MgnKBTd1(5gulH zJgVRdKBTVku~7^k^)-CR;pIB|Fi0}5LJx9aARhzcv*FB?e@a%0vGFRn-{5xObPg^A z**F6uc>QcVj0@;P4lfbM2b00QV}Xr007-+faO;)s(HBJ(S)Uf4?D-#S3pXTT4r zl<|zew?gOK8vc10=l%*$em;N^Aq_zJe*<5f6UZLEA2r!=;DKWRV?H?)lne0K0M~F0S>OPcEGdyO)wS0nU3jI7t zrZ2+7xD1cYaCRr?asg!A04IU_pO1^(aQ00wxPBOp&4rU8H5fJTfRiD;e!{dEPKHd^ z6XH%ddnyV;$7pXToLw14^~4ZxA)K9xdDG$PsH<@H3t*j;&hZJDFPz;DWM?%>hzH?p zOpKF(n^EY0gR?II>*|7p*a2sc!g%dhcn*aH*yjWIJt6sB6QUeW=I8e?IB=Yq{h%E< zskZ}@op5+Utb~(FOwwo)gFg*Ph!^3cppOnqi0|Me@ZfQnGQdd&SC3AJm*AullYna~ z65@3@>J2s#e-1X0g@@4`kCWh1Ux41n!31uGOU(ih48f3}v)#FPY=#RDLikM>&+ft~ zH}ylKcR`3C~po zipc<;PYLXVf&B1q7C`DLqZf`UT9%GFBu5N5ym6nD|uf7!`chr5T^P7fM5ugFVTjXyYc9V zM!D5S&FqK&)9Fvq4uluxSsqdAIk;Q5*6-GXfe>%&D_D~}Qa1bfn4#(&@i4mMF&i$@ z3mNJC9(sAWNNd>l_}y`F9bANMa|F^1f{Rc`Pou*NwEmWH>2xlAz&9kPVJf3;jOWtnnxw z3$lT_1?~Mo0@E5NM3)>d&b#nj-()`kmQTNfcBl78PXQNMg#_*?Pl)Ciuhj!!*ekI_ z=Gydi@a=$0v#^u&PpE}|gG>7>EE8pM6kJ+cEYSV(Ra^|f7&)y!ieMH7!W-ZukQ5SR zW;{m{NR?KMqAvSBE-r&hTM7nW{TLUW(2GjozzjxZB*YDHY27jWeLIf9Ci=>>y?9$Z z1O;;mT-pOke&bgZ%VB+i?*W4f#z+SC9GMVZ(SOMFlX7!lAbeCp41`M?gWM#MC1v2i zAwk^;{e7t1`~r`Ts3lRXG`)oXGz=}HSO;u{{|fq}$@l<`x2(oy$sCKQtZeC65Ilfi zE~aqBLA{(i`qYFtX&2&jvDf4MG6$}FcbDF^z@CYJA3i}SmH!fxx7 z{u!33YW+s{<_U2tTzYFXtlwbXbmFl9QUI*OB&gXq7Z7?WOw2eA53aDMk42l%6a$?K zxb&f1nOn*5n^ZWqHzWb5esTsXyF7uF=W4h{qcts+T0b88RE4wy8~m*^@YsYoZKL^G zLwv{!FChqw(PH8D=x}xeNZZjY@&o+#eON#lhuackEdq;1X}fa3(wP1M4(c$Wxg4x; z)NZDJh!*0gnD4KIlIfnjrnb_^1DjJEh=$Pr5l6E?fr3xIzEH$ayd{ z2P6LhXuPrIVd%_d>1MzN-U1*?pzH4gguW4NrtvHulFhv=$VHgvn3v-rlet+l+x_AN zf2^5p&}O~>*J#tfjt|5|!mlBfXTZ4~Rx=tk)&2-Ss>KeBto08#&i)3EzE}s(o)^;6 zSS>z-eXDA5I>uM);IbEnEUxI}!S1t{hB`z-n0ptiO5j`!yJu7`>}IbDWm=oC_%?yG zYXER1ZY}_>#5pCcT~e&93TK)giw;91#^utIGaW|;M|d?#A~wnw;w#}_Mt1jxGQ-Ug zVJ(2178%weu--)0y^LDcY2LvZ1&(woN)4^&p?X|fj1Blu(bsO}>B=@2w> z2P*2PaL6>;rht0zS^^_cV+I}{!)31w!z`M7jNXI{CP5aZx4)m_Hhb9}P3udvD%NYHoz}5*F*`f&vM24|5T68Gzsl zA2-2Zh0kBb3ob~m1+7|;+(du>*7X+?turvR-p(ZYnq4EG0N4${>W-CFYc=#|KZu}V zW+UqesJeszZ6pmgQVBpx?%e9>8D-+y$P3WdV$v!bsR8i&ZDb8>WIfr@MmiytZ2**w z>>}%+jZh^AZ6iW<1_Hfq_AzFj>$Gl>!O-|(R~nQI z@B3TFp!Hh5#cej*0OXy3k3t*+U^jrQbgUOg%fW&|vchFQqz!P$Mj?=Uf8sn~-*s}pdv&LX+tpO%=J(9mcYmss9y zjPni>_ztT(f5(_M`;LQ;bC9fqWZo;k86-~WuoDL6Tu)b!DPb`L^jbT853=SK|~8MV7TKD zN7BIoCLD-tvIz$wn{2X(_kZ7-?%5t&GKRb3?)N>Po~Kt`)z#J2)z#H;X7IBi74sP~ zSPmzg@dNR5B|@(%qON`pF8@0G#BRpVTL=YXIIhY5%y$6eag05rD#baX~JMa!Na~SpHwj!FcV%oiy5Zy<~&+@#wK7oFJPP=c6h*eW5qag zHcruK)xrY}}?+MGpqB-cydtPtagSnT^A4_}sI;OaTUDGLvL=$Fj{AAyYn zAHwRu2QhqP0rJGx!Oy`61y|eg&)>pUEM}ht*jeZ%9{7{^aiDw#q2M7~7A#w##YKbX zqYA?A(d6d+0)5pWt>7^~xer=^`nw-x7c8twziPnV(asS6DTTloXL+|L;A4}!t47#b z^7x4+oWm_gy>lOAy+e^!h_Ns=2p)Ss_=P$Exet1!c1FA&@j|{T6)Ksf1fkQ;eT)Gv zII*6Ah{*gQWR_|_nb}^EQiOu1{D5!=0NN}kVPw7tq2QqeWotw+urQIUNs15TnumBO z*CI&>moIRu za%1iN4RF-BVa^)rQbMGUV8-?M!;2-(=J<*2il24_cOvSP!kY1L1a}00{y5}02f>B6 zb{L60kBw1D9!vktTn@pKAF!Q%#S@^MWCt$uT$H8_pLYnX*d0igtZR!bQiswZ@T2tm z?yf<$22e`JqQ}IpEOtZVGx75nf_t;<;dP8dD%S6hE&bxW};}c=<@i zocI%H9Vzp3JN^)s@lqKKT=IUd8!%IovKAbW3xxPAaWjf-T8y*h&;7*Rh|gjCxT3@c zm@zJ5{POC=I=C#+j`*OZzBdB+Wr!yaOjIS7VUHzw9}|Wq?uo&vAYS~jUqFvL8S#N5 z{mf>_Oi$(kH*h3<1umEziHy@g;4UndS@bMs99AqDTM+MV2ECYR>PUYn<6X_5lh2_Z zED|MK?llF;^PwZcv=xNd%1su0ZabmG$@WGaP8yXvqthuwLe98(4am^>QARbhvAh0 z-ZC)tNCz0`G5NGAgcC#ei4y-o0}jOcP+{cq?UN<`YX%%ptcgK_#d3}4K3kN;yZ%CW zzzjE2YQX(_V2><8?I!PsB3>#;P_s3RpHP&dRwp7JXf&}E>f6AifAkRpnvS?Opjn8A z2GlGGfdRE5t_`RiakJvQJE0B8N^Fh^cLylkxjAnZO729Q^XC<7{$uYElxg$|E#k@!_6P}wlY_+e$X<_9 z+|E?06D2evo_rQ(2k4m%+}kCKJE1A`z1V^u(f2kw5Ir|%dvih4#GGY#-hN_DP*^GQ z6^&0;`|H;Rh&70qknH1K2J$%|FIqcU?k&MpkQM?z*kze}lwj0R`O{o%dnduZ+Q=Ip z?vg&X6oBqyorrhW#|j_J_pv(0yXs@nJ6XN$UR~e!sz-jW>-%1NLTimkc6-~StXT0z zIg7s8#U3Tj)1kH4jrie(ME5E<=C=XR{ku1*4aJerr*^kbj6?jvVbCS{wb>=!9RQjM zwAw|fCX}?8z}0vmb_?>cJ>Uw7=;aTFjc7z*x|Vkn9voT59QQ(ZuR_rkf9Ezrk3<{d zlNo=%M}nJ{O^jbxD9hA2i0fr)3*y3Tr9Df@*2Zj$3X|OG)MX>9&+SePcbz@C3=)up zCRl!B-^^o%Nd_&Ck>?g{AHI*^UJKQ|ffL7`IHGZJ!YX^Q95Q4WxMT$M_W5uuRw0kO z)Xt=-H*z0C?ObPPJgRFMQ=zI9Rh4{5)lAe{2Z(CL%9ebX6>Wh&Zx@EVYE54CL56@= zV}w^zp4ZuMqvQn_V!3bPyLotIF+_;pN*#|zox>b&;sW14QFaS~*YL7KT?h7f_X%_? zwm-QEA`tdE#SbZ#`?_7?Ut%D{U#IU=82Wg(10=T^2$8{`hOSD+VoM!(EBS#Y;&mX7 zQ3&{U5zdM|i-WQp4!>NSuE+W#vIl_|RnyGXO>+y>m_8frL;m{#>wb)<=c(g1*7IFl zzhpg^5D43efNm%2VY8j!098AAZ1jl)-$!rIjW&StnFau_pJ&_<iUA5I}8bdQBfid_r25M~zOQAvhTN>L+zoOb-jPiXv zX#S*u2n^y3Woew{K)*x%(^UJjw^HG7^$?$n&Jd5M%m}~ zMM~NUn{X1#&p6d#UxLl#&7q=Qj46;|B7nRMjX@G*NXJJ9by@=R|7zVgFLQkE$Q-wPPN~u=0ZdS zUA~VZk^Wo+l41iPEgWj7j+H3G3&*v$fm_aNXrd`ZgBC)BogO4nLu)GTVl9Sw1V9f&OBh!J(Q?MsK$LtmKM>U*E*j{1Aex9|3`8=1H5l2Z zcbhF7fT*@^1|a{>%KkD`N+q5P=R3V<*jo@$>kLotk2$MG;DFapFH_TBQuJM%_LCc_ zfsKfP$NHIn;6HN|;D6mmy^`Ol3@{?A?&DnYM8%Qt!2V_aJMf^SC*1e0G$i7m_b@ez z+PVFlUWrqo(PpY(-5%+!5hwjnP?e8Shmx&KEVVP?NX?FHj?{#^)-MuL&!Vt)7S`XX z@vk(Mf(~KDhT!(cUI^|F7z++SnBkCQI&Z zoG9_Y(_!z8U4$Q5_|-b7v0UqNb{U9->G+X^U9dhc8m5+nhsKcm(xFJd4nHo??w@gm zVGeGcyo=zT1>kc;WSKl0z^%BaSWJl)0QhN=;>r7B`#~aEX6_XSPfj~x-;Gu2$3Yn9 zVSnXjS2%J`UurmwSpf1LtvN_Sf5o3i zky?rQ8(zT4(%T83WRE3x0AQ&yPIm?=`4V|v9hO-5l2KwEfP9JdK~hj+`qg!U8ezN7 zavzK3{MmgC#3HA_3Q1&~eaaw_ah4?heYqghByxE+HrU$|9kP)HJr^734F}K!p!gNX z_SOP0hrqs0&U+I1S_o|ItnXQ$!n zLRrg5|9q@gq_AENq)1Z=He@{n4kf8zs+MFVfNms7zoM$kl8X0q`lmDM(3A+t^v=rS zhXRXfynr`aX;sVWIihOt$E3|53F{Pc5t5gUYKN^6k_ZMb(g_R7lf?H3>VGKvO4WBo$Y z%D2nn!-96X>#*$*VdOR(R;Y#MSdxMp@@24@D zEI$aN#7R#2BDiUGVUE1+Y^OH8E4FMjB6)Vg_vfS65P`mE4Za{&=3k`{G_t|-`F3;v zr*Q#|EW=K7{M1G02pt?#Pjm1B>)Rm0Cmc1e#hcp5YYVJVMU=fD#bVHAK5ol$LC_3~RTFlB; zCMQT#`OQjH;c$VI^A{S3yEo%EQS1 z=f!y2mmVyoqnmQ&Em@3YN?;_;g5<&2c0yQvBU#EScWWfenX3I~@^RBhY5=XURkCU$ znW!>|ku(NCu;yygjQ>v<$sCGqHpVK95?jN}p6MGMLh zBY9yZBk8TCgh;U5Uu7g0z(8L3MMl!bDtBunOPH#SWEp_GC$XORg+@}LGKi5(41mB$ z8UP66{}VsVf@ETWJ1SC_{{7`ASBT{uM?dpLiOL0R+R1 zv!G8C9%VpqTb-EyVt-@MYQvY1J~a_{JC*)*@JMvr;=1m0`g)sVSZk&d?sICqJ0N~5 zfB{?C6O!*?!-=Gvs14bpG=07S%N4G-uzN=Wh!R}$+YPI!5W#DHBQUWH5xC};K2Pa~ z&e(5qiv1szN{9$XUMulA)Y=XyhU`(DdJ-8r5a+|n%=5jfkjQ^OD)g3#_&bN@VK{)^ z8-YV}tO=3p6(BD7M{p6vwL)n>QE^W==?vBnloLyP%Y6#npC>aK5wxs!@iJ9@7MC3L zBt1WO)+93Vc-|=uNdzI&%&*i=3lxQUyffNgW+3FsK{%EO-?t!3_XP>b>s^ufM{N{T z0PL}g43bk60yVYVR~5GGc2j8}y66dCI|X4uqT7|1tKS+18VF~eW1K8lW zl;)y6z;XcpNe_@dRW(;LtB+0Tu(0AwpzMm7Z72w{4T*@fp`ysQ zVWff`W(7MV6)b#Ons@cvaN>#;lExSFApeKA6fi0>~R@ z(=V;qxdnmmkl8w0PAYbXQ8Df}%O3Nb|9Hh(%!;)|Dz@a8R!r|PhZTz*h%>5dc}|5@ zhuG&gdTKrKu$*-)g7m)6(T26_Ie>vFdd~b5MF#VQ5%n9r!u+=<0k&y516&yK^ijU2hoyv+GF@F_-9(9%4NQay{v&0FbZF$RJ5~y~zYu zzw1pi8PA9?o)rp;enGvg z5vvN5SMFPKN(Pd21~wbczbC|M{C}cZH6pbM&o8tMmQ(zRMyV_J2r<*OW7T2FVUG~O z7E>@Yxf{ViBJ@j1zfP=Y$gUfDl3Wktrrg{vbhnAsg<^}DZfl(X2_n*wrC&@k&b`Cl z6>e;mk?qE@z9Czw>W296P50eRNH*$<#J|myc2h%I$urrIHZO{HgChTCv0hP8e%Gb= zdZSKU=N7TbFpsd^vdcWW9BJ?EjB>=^navSx-Q{epTBGs1X)TaQ>n5KEeczvNU6N>- zFyq6uBdo2oQHo3^lTfCRL{vJ>IF}Dq8j^?s>}iXO&!prkA74GjKUZdsIQtQHQfM^a#s6+nA+E89;=2R_?e$a&A{$ zPE2+N#W*ikDkeLRfHv7h078>p9Hit;R=TOVT_)0+b9y2~L7`RW=k!Pl>n#GdbR}R& zBDGq$O8+EWZuogFc%S1clqChVu9AxsbjvD9#PQs26twb8K?-VHB^N2^!>&lA;g+&R zK0_h;{-iX3c6ZComQ0#A7;9F%!MM`uOvWvrk!F&s+$BSQXL0l{;`3kC^jpqkWxgn)3sfMZACrkto`hJfTa0fq^SW3a0p45ESH*DMI)7EHo~hjrt4!4uY66h2(3~I%g@?oH#;984uv9jI zA*x&zYf%|wcV)53c&TO#UOzvqhN~|%^5&nD*^%Y{`-awV2;!-r%d2AHK7}j|s8c=6{02y#zAU7IP zn`1X6`42P=ZUN;7l^kO1hkW13?Q_#r9n!*8-G+Z5P(j65{DhKSdGG`WfP8rk|mRTYrYQ zo$2Q*;*Rc#!zD<6)_6YN21aY?WCm?5g>L}R)vp7Px0d=K$+Q;ng5a}?W)*8ONkVIh zw)_q8{C--fxF|_;JpXXT$|QohWR)ahKbNnPL~68Xl_bLD%&weERNQmAGSn!^yr1WC z>d%v$))k5Lh({H|~}wF601?YqUh*ujXB>=MuK4u_>i zNp}5tk{wprzQXs`t{i7{9dk!l>zH6%+$fltI14&3E)F;nK-)?kdql*JGYXc#|104)#RLY zIRb7)2ao4$te2MK(X=PAd7lZIcNUcCJ{#}Rb@MheRX1-d0o}aqx)Efx)Da}<=Itb? zo44?7Y2GB?;lawU&9+cYT*oxk#Px{lCT>K$>n6_V7jbaOf+ogqe(ojC1C{BbMHgb6 zX6f63p7l*Fg|JO1#@!!Z(YhSxvP>mAAgcU%2BPl;DLi*`Bc|u`NI%rB^p=Be5oNp_ zQ?xsg!pvNFIsLuC{^yWQBlIVz!e$dAd%mmgEUsuVi!iH@x42`Q0=5UCJoh>H3~xYy zkYjgTclS<0D=#I3zv8j=OJO*j0Qk+TZQ)ES-U+Uedp7|X34q_cDi{N+nM~kX_7Tg! zRe4d+Shy44H_Z$3tjxXvq9)Bt@8rB!)OO%e};GGxd`oVXE!yM=?6z68%sKaJoX ziZ{l;-iSw2eh*-P?eKqm8@$b1p3qy*j_$?LLrBUhl@&qQzgff(q1LpR8`qTeSz*$m@_A5!bInYC@c^ zL(*UNqSwQhy~3CHva$77#paM!y@ITT@ks;1cXgq*{HjMA$30{qR*vv{QbW4bp#)owg;+e`wFdu5e(>5XV~!JifKS`YYmiV?mm4 zB%&IK`}J=vNO*8x72sLhRGHvAlqZtEdWUi&wC_*JUeeK)0pJ_5yZS_*byvPKRWOduq&p!u?$`RAvsD)(qIRFLVHYFZWfzmLQ;viLUB9gi+3=TyHJ*y@q~{EK`_a#t{B)d^~-AVdz8nT^kYpnm!>dP znZn!TdduK+L2ba5KDcNuCXwIO}jDe`cV;spE6Y)Vw`UTax_aH~*MNXgO z{t9so5XEOzhRrRo@!d`3JG%5i$-m{BzlQOynjie(TrWbKOaw{ot$hJ+nG-4b;4dqO9xt55ujJlD@6{c021mh{Sd#-fq{fxUNg;*^tP6U18WA zY~<$GW8_VY9n7s>fYph(Zll6`R?$XQVkRW414-?fLq&1*h?|YH4JFi#)W}3Mk{Ci0 z0A0u&#Jg>rWN*wHSz8VawdYkPj~I}L%X|CjFVuu!6(dOkdni^5N~yhUkoQCll*Q69 z0r7?cSPp>R-s7lMaW4Q&JUmW3>H*Npdz^Gk2S5*Bz|RiM0}y)m0&nT>FMj#!fGH7}?&0<@?a5Bcc&9nk-bK2`PfnB)JQ;L7GQ}$wui01LmwW%~>f4t^omOroU>W zs6$QlM4_JXu11RVAXPS(bA2&8^>0+OQ$b*M3Vh}awVUBm;Hw8FM!-uof@ST(f#Hrb z6cgQXCc@ltCT#9F6IMIUnM>3Rm`mB(>xNKJ1{suyNYGmt0)!XnHY*jC)30s;fV>#)UU z=H0zYY_Sz_)7{pAGPK8bCTe%vL8j_MVx5S0?{4o<&Gs31<@OkyzQKUQg-zkR#=@o! zfZjo(0iYGJ4Ds$2;i+;v;3RSfRwutg!%+@ctW`U%EWL3}9*!(}NDx^p zumK~B1tKE;h6p{JBpmKfzlT0Bp~%~&2163!GFWkZ8VMjApC$tc$ERrk!trSa0L?Jj z0}LrSx6*3YE=unPrW%e&PJ)Q!oHIluCn6#_5xStnH)xi5D7kjsl-TDY#I>(n%((WI zO9`0sHRzbl62AGFaJNm9h@r`svz+lkImu;GPPiAlt;MR@{&DJ z9u+ncRJCiR!ZiqCv;T3q8!4BrndPoD=>k64Q#A{TYB$WLABGStg>cbMu|DZ55zz?o z_)O9Wf@yhJJS z3err;E0J(_i}qQD(wYOMtz6;E{c0#-tJO~Fovbkx(6I7L>#al9r#s z*-|E}U`si9t&)2_xlhf@O_*})MwABV=9_RGMm;*at;bVlJ*M_fKB!72=i1$ehaWd3 zTx@*Yl(6}6Q^LW=O|9fBhXoD$4@}Z?hgKyAt8NLy$DOLm^Z_+NI^l@7BqHK1iHLYh zA|l?Bh|pVB!>bg&&l9X-@s@RncjZldy@C_>0&fB)iSdxKo|%W$crVvr(uBAS5=R4Q z0uZif<`B>;nic@zh|vZh95I#v(4tw1L6B`3Fz$#zHVY>ht1DY_L#06&ndOeGNzaBz z>^g)a8YCj3K_Vg=BqE|gBD9!^F_5wXlDVS;DM$XCl-eJINwP|L&LIHY^~%yk%DEC2 z&-ntJ2*oBsJZIdXfamnJU6ZSL&*Bxm=T~TOve4f1BV}t*@0sWXdNS*=ZML8u^WtfY z|1N7~o&>=B^g~EY;DIS?1{1emGc}IOP{d`}5*CY?vO}@3Sgcv#yh~U>G$tn3S7X`s zgm>y4j%9@PSiKaP!?Aif0X>gQewd#=)ga#Om}w;&lofF1ojbWC{a#HV2w|~;^9@8~ zx0MtTvmhd37DPnMf(UIER&pcdeSZgaws97!5Ugl@0lR0!;c~ZYQ1A{0!``-4eHIXZa5dgel?k3&cz?wjIS3^ znzCO8s<#75Z-Ck{!Ym=6PLeMa7)tRGD93&+e5K5pNE02c3*@OmfpNvYx9zRE2M;>9?U{fSDL%}MiW+V>k2Vm#U6(}JnZ;9WXUu>?LX zm_7^u3nd44?Q!XYFs%yVokn}-!JBC~`IJ2xWc+iVwr$JQ+^wj@TgL^O+Z_a*T64)9 zE&#xKLtXp;%8kCs>jM2C(8bi0?b1z|4I7 zNXha+##4@mRh*5V%tiQl79kOQkTHD%zPk5&$ii0A)^Wx6IqPc#`_b&qSRYJ5GCHnh zKjvEnOJcS)L(5k2L(V$vR1iLyeJO@69mn^XNQf^87HkHf!C-n2XdgtdA4=~BrrRQU zW70nC`^On@cKvkL?~TQdCdgiaC*7Wat!qSV8{bbC85G46%Kf;4p&+~k!Shqi5M;(D z@a|{Dic@C-ms3TW*_AjBnK=)n%<&shg5i*0}((cQha8Mhqo zLNrqmel|g{2itZO*b~_KOu={UqA6$GnzJ53up3~7mh&Mj!1;_nU*jicqtTB=a8Jfd z`$4t+Z9)8Z@8qn%BLHtX_re@v58@{cui$Qr@5{F5tV0mS>}bcfeFoovL~!?v;;Y{V zHw4lw$NvfBhP+cg%~{O|?qoZ59sa+EFy;i5Qt$|BSb?AG5Zvt{t#khuDEJBdZ1W{h zhg1HWuK}tJKaA84wqx(}|FsBX?FinWv7Ar;jtcK^GO}hK&RItwtbwQEEQf}kIUe8x z2%~p&?99=q)?$Rw@5NRCc0(nuMPLfD{s^r(Hu48dN)g)!!8;%M<}b)u-y?XAy8>{? z;+!=V!FxGwXCiqnei|>jM)2?zr_8sA{0>U>J^{A~Sp-=87QWd4k)+TF5Fv|*^Tj7Q zYcuHFD*)>VV3MJN2eEEP;U_aw)h+ojL~BKPERz7%8krOEi3^0(XGmL!$X6Oz0~^1` zA~3}r0B_NcUFc)>Cu_mW@Li8}N@8ju+-L>*Aqi6#0T`))GXPB1z%|(Oo~8i#-1lhk zl0|XSFd6fROq< zQmSsr;mh;@;L|cC_vWlM5d;{b3_0})Qr=viv)1`cF&O(f9;8MfH_N#dI&<#CkG!ji zO3@~;HWao$Lct74G8KO|(DyLueo5l;Q0ICJ=u(VA1-q@3v?kE|OA@SCW;~~y4(mM! zKQADZJON3koSCy)5K1~wyH-TLA;2#8?@fsm8UcPyIURTBa2g3g7orLgZtZUZ3olS| zZNkpus(+agbg$As;5AE_Yh=(IGgTQ0}&%hVfzy7n>f`rH7=W2vfek}J@Vmk2SpA8H?mKy=AOexTkgfHht0L!`j7+Ck3NS8st zsYfic34TsS$lWRf?&-wM!_ULS;p>L005(HApM#K#gX~H~ULtS|fJn+Xn8M)*xjL2r zTL))nDa&~iKiiyx@8@3Xp;sD!Ys>W??WhCV+Fu+CLW6dTIS`fJ6dNErEF5Nc*3WfxfA5hI1f7-?2_``_-J^9*@(64us6)xHkbVhYpzP&1@DQ z7(BXAX!xP!pxn9;)H}s3=k(Jsvsj2y(&$-zTcuGByBeh*4&Qk>LVtWaIrAJM-x1gX zz!W&r6A&cjazq{=fE4FU^h2i^KbeL2p(`G;ENEw$w(X7?nlqh0hu|l341VrJ7_`D757~ z+lHi<@DqCrKWl>5Ae<&1eJ2pd1vA-bH&46P$@-A?liJ#{Y>b661PVz}m zK8M*vEQ8qD2xB)Q{-mcghqDo@S(39x4Y8eJ4*<&w#;j*^)*T3=M%b~ZUd>sv{~>WK z2l~B|vu;NKJ@`EJj^_UYV!OVJ8VzDKE$7cyAZ4Tb!K(p3a}kF2w_~j+;d6wcMRv@6 z5Q{W~q3I~zq`3`q+8+>x{vNYl2(}DiXhk%>I(!VCY8uZeZ0v6kiIN26rm?#$01Do6KC?4GaJqAoXH=l-+73Y!l8^4%lO0l$Z;5cu0@z|al#Jf`!{LK z7`U*FKgd}ZAWS$4<6?w3^Bw5MG3mC1lqDm^)u>8PpH{>wj)koC7|;H5fbz~8prk8V z+AC>1i-InH45}}CE8I_!J(NDc@+2tSLm3E!tatSuN{Gnsp$rF2WDjKm5RpBUh5{$Q zhk|K=u+)1fA*}XLG;HjlI76{o&5Xd${s^(>F#0?*J7={b#Lk52W#NIhr58RAl+$g=<~-90e>s+{#2$zFpo zM#v&5k#f2x>prFLbr?miMLE}_+D`*WVT6d)pxTkj?F8)QOesK3|BguddH}xzF#C^~ zTqDH(fINrYh~WbvmIb$nY%S<1FC)a>16lXttR`9a41P^Yav8h;LTn7AehZPi2|Nj) zKf2o~)Xuj6TF~!aMTl*K$$rERqBS+iA}JBsA~lVWMOa4){qj@nG%SY%e_cU|mUBF; zHSl=nA-3KejGG)-omR|?GG|?#vwlQ~od~yJ0+zGZB}n(K$yui(#I8u=8_wMUmLm(G z6EI(X10l9GnAsnp3n9d&p%Xd>LAJnG9*)?@n47J6lkGfkvUY_he5SCs(s>0Vu(RKn zSYmK?bS6;ZJ?_Jae^IY8D|UpND8eS`l8j@;j&w1Ja*kMuxDN=0_=YV{!YZ? zJ;_ZV(CbU9cbPQ~Dvq6=Nlm~Z>~!)tBjcyG!e0F>0?AA|H3>j7fT|Wdn|fnQoG26c ztL>LA1kg_4V80a8GOL5}t146HWA~yH@mPyfTKXQYlN4fyK7Nv)zFVEPP{Hw=YP`z~ zICryMXr&KSy8+xJkGBm^-)z9?ul)2qCj8gUvXgLT#O9$JPw&MgHzQN9nV_*%*Y)&< zt8z%?d9L1ugsSev2;n@;Vd6>r6u{rcU$bLz7{~7s;-A{F3r@{hOA+Gl+L`b1e`C1e zIL6(~fr!v2$II{~QzLgKb{6KJ2=SSqy6PNkbs@x?urss-;kxG!P|E*nMzp&q{%WwTYjDZ+dTIAW9#IC%t+T zQ6*oXI|isCtQ}fP?4e!- z4uf_AJ=G0FiFXfD_Xh$y$X0wlURB}U0uz}HOl?qM--`VOJG$Q?#24AI8jLL*hTG{lZU{!M_+C+}ZY43L>Mq``v`47XBR(3X8B`Jdb*GPR@M@KNB6)lR=eu=psA{#kob`8O+@!%I?h(C_*2;a zU4~ngmjfZr;%VFUr@>1;1jPEJSZWve*BFR&7V}~H)ki@w02Jw`ip8(K2pApJN-Mug zm<=F)HTx)Xd?{8-*8lk;+2&+;EhoxAF zjlpy&HTjzDde;J&igfCSHML4+0osbt$Jkh32MRfYN=ZA}Z?Mw-VH})i0?t>XWHe5s%F)-J`L^I0Qa9h!FKpxCS75b?nSEgPo&PYvvITw zn@6{F`E3|SXd#-F55mn!%=5gB$)%GX>lAi*&lASSQ zU5b?~LK?2z6kFzxE4A3cs>S%>J!4Ofy9}9W_@Uus?&db~S_`oeNZ~Ol3gvwgty$_} zd+pBB4pei_H_-51snn0yuxmj)c2cU`zZ1TL`NGxdZdC?CR;N~AYrJ8tHPH)PEB=JS zpHtJ>tx$eu8~j|#2qrGF6(SSE$KgH1G4F#+FH)RQwy&RRyBvv`(RPtP4UU;|(A8wB z?K*E;10jw%@eVp|8|zSQPe?rnxt9>=WA{!y3}6{+^t$b*_<*w22|!O0D**h4lSIp> zpJH7&*UZ$|rEsWwe~Ze?m4;WPavW}Ash`Qz!I2@e?$aRZz8z+kEt~ZkhwQewM1=6R4R!+PzN5FsW_3Hs@7B( zQE@rSEAVqjWd;sNu|Zx>?*Ua4LCDRIw8|s?X^=PAN{v9K$z-{+U7qR-U>blJUb~fg z6}e{+D8`GPo>HuaQJB54@;McA1{OAmh&Ie!^ocP_u+l@JS$$$G2%dI(C)Nac1Tz+k zBX1j}2TDjT`C7}YX>ZmVD>G*m#M!QN*ZateQ`a3qA=dSh zop^C1F4nM`FXLSo`g6Wy4n(!Lj?$bUzOXASe>WxAUIB^kt=m74ofC_)b@(Z?VoC*U z=*G!*WmX~+b7^mXA;fxx!Y3U6ku3wR5EMHoj-TC3NkT-`bdGUr{~7x#2$|#60nq^l zuTQ~eofLS@aQsFz1x4C`ypF;5RoS#5;smGMXY*C(^1PQX~jaO7kZ~!u9Vm0S^?-Qa%^m*%N04FSL8wjuE}}4CPxGtn^)y{ZxReN zD!ldS@K>NdEIcIYzmeXMtC z5r7T={kM#{iRtjXodhn3!NH{HeF}dN!dx{yPaOd9I>ChuF{8tw0&PaAbeWtdXWnxB z3&5DVVk>3db}F(%3`E~simlYMu&d;EVE+y}@Z)f(H3YtijY&PSiDgX$Q27K>t_RQn zpyGAcPtna!C-8T-r1T2_vjD_*_GN#vnepFlf71IS1|e3FV^PJ!+~MV)a|QaEsAhdY zS~Z7g)tnpi_kdoRZ!FR?=i#$Gn{1XxRBW5@(}&jth~c29c*##4jnT9fwM%bh7ngE5 z-cH~vzmyxP9gP2VvubXlb~3IvP$A3lI1Z8FktVBUNoLBdO%XDSVv=UAHMRr(9H#vh z%U@o=m745_+%nI)2ub277RO|YQM_=}BP zrZz4zvn{7qr|z#)ztgE_Sk6$Ly1P!@uST`m0;Hm4WRV`GKBH6L0KK#L6l~5sjGxTY z_!)&w{p?0KTk3gw&N>DmyIvZ@-HSM-%Djf35~4205!-WD;p*4b06xdgZ6qZEtR~qe zm|h--kX;K$t&u#R;wsF@`;oFG3XQOiq(p!SgGip$1El|LfbmpD;rS(H)-wp%Bb?NL zQFs*1b*${En7u58EzBYC1t#^60cZgrYs*SZT-ylfwdE23zo8XlI2{d1=^Qph8)s+Z zbKRU3gb00!UL(Rw^crE#5I8{d5`8#B5X5giL-5yEHQJ3eI?bq&Aj}#O5vdUoW{vb? z0bz{{Xrh>YJU|mg=1DRuTJ<~$-EYOoHAEqD_irm7TP zW|5P+cN~_{Xs7HS;brhfO=}SWdYN|sw6i(6gEatNW*GtPWs=@%dYMulPSlaQZMaN? z>Jiryp+?5lM5u}J{6xqUK~zQxFuz=cd2| zeMHS9L2Hd0*+U9j!onu>42ii4VSy~1aXgA}DtF1cOHCrvR{qAgTs5dfqhv=CV6Y=1V8RHTz_gko^ju zWf97+$&DK{O(40RWIM$D4Av23b1xFJjq&2t=8$YU^2MHlOIa7dECBH_*jO3`fTWm| z%9fqiPiZ&w4{}gXk`|JT#qJbODv97!K7NKB9Mo$>{-lx^PBHTb^$HOlI%*1a=FWq9 zqC`Xbpk5;)nMh$A)N7i!KB?4*{BB`0E36Odnar7Acu-FScZuYn9{)wPZxKP&-UhXP zN!8AZ`;|(y3z3*T5vt{GXe(9w9aPKR&~}#8)o!RaawXO3?a?z>l({`Bsx`MqiTFj^ zqa75(+#Zz*o7*XEY#_qkgMQ4X3NKMa;k4l@Af)p8slpHuP8+UM zd@!yAPZiz(1Z$=Tnv9EEU*iz6dnJNBrJa$g{YEPq@B=ntA|aE7ItZQh6Tw50^#H=^ zG@8|6R}kwnXF*1F{Cd>`D1A1QsPXnxE<~!s-9m3P7T4qhdm_nZUM)H-5h~AM?^_f> z1QiF00xzNZKAgRkEdXLmRgBnOHc{pef_a5JyhMdJ#uQ}l1YAufvOakGW84`31lpO1 z%XyKMHG$U!QrSZr~zoP9ot{M^FGEYhfd5LLsC zz9IPGf;qcCui_P7iA}(s_z~1YDOO%(u`MSz#p?#8sKnE)@Voduwk04}Q?4J&MC9GBJB zhMVd@Je*Q=0{9IVF6lqP5ZIPkRG*jC{;te{aQ?Ddb{lAfWN2tqn`4Q35a%ac>6A+g z;;5OdmADQpo@dY5J6vy|X+n3p10;VF`itbEzt_3GK`tIgXAkgFuo|n0edRzel`2P} zbJ$mSAia~~CvJ_`r4Lq?F9>xYz0xMp*s|b2I(v#IY39Dn;Yj1YO!i7IxEWFOE}rE! zpAf$l6k=+NK*1eq;Xzes*>mNJ;wDgV!@B5e@PJDWDUKoqHZZbxfPzm32oICu4NY+` zDERo8XlSOvV~dJ1YcU!k`>>Z94%M|#L+xI9YAmd;jT+h(2Kzh=ZV3RfzGeW+2*CRG zWgDde>pK=&t3W)ozL5ZaOY2)hc_VFoCCc|itxr@i)lk7As327dH9qF0)`AKqL+tG1 zc+uC;$k|0^?nl9c7}-tvrhzliLqs{;APB7xis3UC z*;A7KT%4Mb7Y1W&p(K63KkPL`O!kNRCn_beFUZRqPE$Qe5J6A!)tsa~A&OW{75hn+inNhQ0*-#~A_lFBLcdkgkANrMUb#?wGNgu1LT7#z0|y7B&?ZNaVX?5XLJ^uxvqYuKR!({~y0n3>t^+N!hB(%ix1g@U+S zDJ^gaAlU~UTdlm~Y+JNzKI^r=D^(rN^bVfq69o;4{(b%hc=#im=xF z)b*w#k$NO74^5Ynq6y?kO)+(j%9^cFo`|clHSg(#U;H^ceW~PM1CW+~8RX~VUfGs( zYAkfrMp>@J1)h&o190*+Y<#cmWYqwKRRcKVu$Npk8`F~AffW5us8#yE06lztCR5~1 zbn=Bd`Hx`ZEXUns=WG0AtY&-#2%+KuT#5|dL2@oYUc#?<4Nqm5K=AB?H2V?Yt1Ge# zMiq`M6;*EPUiAMOTuH0w>8_Fb8%m!DAUsNFU`lwfML-`V%mSc~5}FzRZyzOyg*)_0 z`DqFoI;`|Vs4$1*ig%K!L(vgiS(|s0MX49y^x6Sr=fX{HY{UR=?NZFq!{lA!He}S^kGRuA~S>-QZvFzPeEW2NqWm}m)^2#D~T+zWv zw>;dpF;K@M-~;Zlg_y{^jKGh%JBQ#gFL7tv8_n?EW>_H(!Vi_YA+?kCNBe7;h;Nel z6UI7HyyW{lVPp=jpn1v|KC&SQ~XYo>1 zAz8~${T-U?prNeom!_V?q@$CD@`qHqbaw!S%WYX3@UCzj;<7gQ0&}o>0$dy144{z! z*9NlyG!ek;>;T9$hjFY8MnKmsh=;SYHUPh2e@ZV{VQtXX<=OzQl#RCp!a*H=ijBC8 z02(mG2DCl{fW|95yatU%z-Tyjlt{w~!e}^wjfTrILw<)8cZ{);6T5#IDY~(C!A$^Z ztiAmdS92p->^^8LuIeTO2v>E}0EDZ$836REZXV*{s%{Yhy{cPGK(FeS5>TtU<&3LU zUGj6ImvnfLH> z2oAz4w!x)r_1dKS;39&D&>upq`f^N$uC!yT5w~LNfLJmdWJluf-iRXp3`ToJ@dkb1 zxH1QT!(Uk>UMrFL2O@*60DvcHR*`bpn|L%5q3Zn=$-3pHo=YAL=2xeYKBFE;QCGJ9C*FfAJLCqs7x(Fyd815H+2TO zGJQ4YpW%9}gQ@!7R40INJy!Tr^xjmrr=sB*qHLC#Ycmec|BdeK_GzZ zk+0&x1q2cY-fcXFdug6q&^+W`-DIZ*HeiH-o~jSAOHvD=-+BUvIVGu!05k%SgDc$s zwVDX%gR40Jewja__RU8k3G0Vy*r);chmk~)lkBjSM{mR2L4IPaAYd>I(Dj` zQG*K+sc+&we);Kv7FKAUQ=QllKpTJ_n>*!rmPS!?bYQZ_WXgdVOhA%&7q+@2$ej~b z71#w0S&alBtR!i&nKUhuG{a1q7fD)VCM}L6Ej5#tN0O2jb`EuoY5<5BmiO7npaxjq zSk*IddwvtFB_@*i7`wc*5I_TfVP{pA9s%>4&iJt6YQ8pc7UDw(X0!T(yEOZuql>FA z23<4L)-0*M2Ju$LCk@D+jW~4$9a}^BHft-jZUZ_hlB-X&i&C!u)j{AQd+pM80G$9v ztlPuC3vp)T>}v$xjh{Lmh(f&PWCY%gU%DmQxDLSZSNkN^LcAXF(YrW3tgQZ~1Q$NT zgD+|Mrz>8Z=c1sE{hgGF5HTFzKJsU(AxE8-zj;F-(fa|HTE9fq?F}NX zu-8t1j|l^1CSugue)?hq9y{6h&oYq1F(W_D z`GXCLk$Az8iP31a;N! zVj1IIxeI@?(I5ly9$|l+(INwvq)M~x32Oz8@ zX_lGP97$?5liDLm9cEHzB&jfNh+PLDUsk=D)TomzFFh)#fsFFcVwA5#w{0Tv^SC3; zE;|o^9@$$F?`~voXPO$>I~eb>t6r_Vf(Hx3tiP{c0^L!CL=6AIF7pQ(h!F?d{j=XG z_e6>jPjk~cu+5_|(!e(33$}t?oUfWn_FMpat|y@Fxe>rGvuC;ybJj}O zoV5yU%v#~s%vme;=tWnPfUf!;_idg)vr&0OM4r(k!t@MmUb?67!lNK?i1b@NFv<5>qFyuexyAY5TL0{E{OEzOV1=amjjfwxj?q2-%cgO}_A zxp*;;K+f(X7cUk8&|7qi5f8WMmJ-lgbju0oExP2F0Mr&;4dZHyZX)7gOEm!a4O?n8 zFJ3?$SEE6vLpZ3TI(XC!K-i$otb;znZUuk_l}kqLOweOwcZ&k$`pyO#uE&E}Km17W~!jz1Ku=%q+3weiK!X-->Z~!#`>bB$j5r3(-(ex96 z8L+!kl{y~t*9HLMb(#Q72OwVOD|nq*1hm&_2B2*@i8D?}AHD=n!*WMkUV@ia_tx~> zS;Knn9KveuOcRvU11S72cIyvZV78$Ga2X9vSc5Ob z%Fdd4A8f$>8W&u8S|j@6A&N6yYj6DLU+ac=8g@Pa=MwzHuE5Wegz!~`_}9GE3mSd+ z`^CnU*72KE;@AOb}4WIrgw zm*5oH`-m(hFy6JJ65RB4nPq>Y$Ra?5+y5CL*Hmupiy+#WerUOMCxQTxDp=>2TiYP4 zoYH?mx%JR|DCBXxf$L}heJ%umPsBv^7U4GY^>XWJgq68P$o^&Ev@gr8mk^|!i0wpx zf4Q9hAcLw|6;=~M24BXB&7NIhEk*d5`a~+%J+Q^ZO6v*);T8eTo>XbQj=&VS-6a!r zXIzRHJ7W$Xd5ImdZO|Ei1~}pLGV3XX+)^0GD~Jp}1HjH;aPQecHx&j^)-WgT)vriqIggG-X`_#-urIA`lpl9r#;e_B3a22Z_FwdgAyB>n)7t zV@{-4cMQSnSjZid>Y&V~|6b+6Pba7W>&F5vKs01g1Z;E3?yQ8;CdU zVFmp_98%1($Ad8Vi+zdq`rV8Q)*Dm#>(%(}?3=J-SD##NJ%Zridr`6UDdpB^1P5P| zimivpUIdu(BqCqwlrnrBdcTL!<|KRY_6qAm1Ok>r?K|)B=L7t>-{5D{ew?Tv?H>o0 zTkgB~AyMpf+r9c=j6evnb8Hijru)+XP~4864-s5^JMT9Gnw!h4M-g0nmhWFLbil^t z)*c8hHnLZfn|$LFJD1@swC`D!)^-T)d8^B!`;sgti5X+zJ)4$EBe;EiTW*DO9i(Ty z1JM_7pC3K9a2$U2M{vvWG~%6zd`iIa?81GXz}v?VTnj1RBQo|$0KZ2{&5|-}2LyMY zq+R&bCuMm3IDqS6YDHU>TN@*|m&JopX`#B*dr)d>>jTQID_#Zp=XT*1hm~6=BDjyB zgu_oPw{AsndwO=P9g*(|9OT-?FXwD)BlHQ)=OkzrdGVFAmpLy*p+p3@ESOc(T@A2I^wlxhvcI|OJ zTzHEajPEqM1O;025bqm&qBJw%aNAnMOjz6Zcm*Xa1+de0J$vi{ag*md)~2VG`5SHK zSQ8Q7;WTV~`hSFA(*faW9!ax zi?a(4$|Lvz_JYU2loSw8eSqC6NIZs*kX9(3WOLI3%UTbJda|i{lS$9{K3-{DYm|$w?aSaB*yksK)h37fe zz>|6L>4r%_7X-C(H+2VOFE7BGB=MX!V4af(;bMeC=|Isj;=*2%bX zYK7-Vomw5>(5W>7&`xa*;@YXTA)a??%Y;g8Yf{(js+ab#ts|+AJ>5F-V_yLg>8ctL znlKU6Dt!($0{yBKiu2Ri4Pk|K>M%;0HF_SBA|WP@4+PE!$L&h z!-6^L4d|URFWvy&;3Rs4bKGolbTGx^-j;iwJJdgKN5`56=0kt)`d1*nh;iJP6i?2% zAI`QdcfMO#uoavo5%g*9Wp1DB*P{Z&Y$C35%ahAT1c-xx7`j8L-}7wST1$T!Geb6A>@EeKK2LV_Pj0WvSac^T=to z)drx)zL@FPp_eZKknZJ|OvS{08RL)3i(fNq9)eP^vB_LLKAVfG0Vwb5dl#G&v>?a2 z>;~h!&(y^{f&VbN;B5oW?H=ceqm?}bzJ*eXyIATD%C;yjL==6GfxYl^||Y=PT0 ztXTskc+IV}iXMXD^a8P-a!p5hMQ;OnIFMq)T$GiP1y!NRmZE|Db70v05-X+k0DgU@ zZM1UQM!+Azw0#pYS7q1PJQi&KLe}pligp|s zeg8g}gu=zlzzI{)zAI3c*8+LO3dsII%7S;SQQi^Ao_%IYpx!Y^a2q@f%)nCIzCf(C zBbq_-eFO-~^cMVBV`LIfu!~n6WOo3WA|j%G41|b!h!V97{>c=z25>}FB1}<3Sc^IY1g5C}kG=1Ji>u21e{Y7#luUyO zFq9-i8YIz(QIw#GBpPKCjhMuUnkbei(Wo)2E|yiIMlm+j)x`>S?AUQF!J61nS4G!? zbz%jtd=6(>IY{GZLfzb)drA+gM*B|}}osk=}84iVI z3+=-2_VZB~2#0~d-YC2W2qQocP5dBxTd`Po2um;&ih_#~WjHfA*v=G$*&u*Tt85W3 zy2j~A_HkHcQ37w%doaJT4KTrPy^cPFAhu5m!q_Q-kdP_}DMFAmpA>|I6hTNx5rl*k zK^%f32q`IokkC&M)%yKS+e3&mD9B)6svsE~AV}8FFGxbx$l#`{A;d=%WN05jMsI*1 z<9>cY#z{d!P44q@tl#1BY~DwZvJDWV{AU$Jbb3kUK2w{yOOx_V~K8paT-}@<-E`(&3%LJ2$z`g?gzMbVqeQUC)=UoYc?Lw z9zYHQa3_&9K$!-=7q>Zo=ci(W7Yk$#JU+kEb2TL)&A9 zv;+9s36rMiQSkh>(ED5Iw_Upw!NI@#VWc z#jRm`O89#Ge^q$Yi5p1{Qb~kxE+qNTOyWY4dXts*+_Dg$y7FyoUM`w1!o}%zBZdol7%F< zsU)1)lw={vB`OIzE30G_n94p7;$!H|G zOC=GSnt&u*sw9HT2}tsanPdWzJgkz4`Y1&bOe=*PB1tKdyk{mUMUv-K5)ord7rGOk zXA%qa9Pp|;<>2xh*`T(=MlJV{MT{v%jKw;}j(EW*Z~(eSJSFG3Z1?s6jv{iU%N8wZ z4!A-~OKW-tX}-ZzGS3zMVYFm*0;;KGZ`Y8};4zZ$8dcVa%TPmqQ@jeDFLX@`^(bis z;Xp{EGogF8WU(tA>Q+hUzbg5IYh37il|;z<2UmLROT@6wLA{;qDzRLjuy6hfKce?| z5Pij!=%B@Bd-PgBf}CfAPBleeMX#et!bbs~9i4qh#I+b*bkshiPrO1SUYLk$+@^>( z;m|(uMi}w767jg19^HF!pLkqu>$=)U#A78z-#IK9Z_s(eu_0u{I}Pzd+d@?g5UqZg z4HultJr*hVIl@TE)?=n@XUc1lk^x4_^R_|Cx0VRhNt9JfA$U7#EH5s+{fiR4b?xpRJxE$ zzTC<`3SrT7gngCiy8vNF>#(o3iXDP}qljU)y;G|p4T_ORGZK)Q(>5BA%DFse|_DRypX zl}alJ7ef3hs!?9)~*E>E`xsEb&-TiZi6S;@qFW38$ zF@&Y};nj!3X`=H)f9J?Iw8zM`_w@lZuq+wFX$1za!M_cl*AH}>mDDTFiS*;OVvQmga1AN zudgO!r0P}XI{x|r^tuf`%_J;~8rbym0dj3h#z@tx$klSafNTQ+Or}LPoK99;3rdGc zS>4SE=A3xSbn<>wub57**+fkzm+0xF7!$-7Ww0;c*uc%5Io5Z0O7i*z*{{K4{|ct6 z`67tzOSg=<2om$!q5XocMbN+Tlnm<^^aIG1uOn!9zo0!pejUR`NkRl+_Un{&1A@Bn zY4(x=IY@{IrU>65f*}I?cg^Q6e_N{vS0ZRFBK!+MYvFUpH`dDM#R$@Ta#-!h=ckCU z7CxuExmG^UN6=dMd>=t;QT5hutyP2-2wID(-$alWfum|a5jKB2MFh_Hw5m@=&|0kJ z6$GtCgrcssif}xF)=~@4A!sck6ugrZfs+;?0*5Qj=h28@)B>g+PS7d@twn_Vch@Sy z5eQmKEj)^#wTO`YUWy3jtoKj^>00pOP`?ntY<=yBAW9tHFDT=ERpKUMVrZt~oJ+(v z2crWKUz9Z=P><#(l)5Rp8=mv*m-)SG&zv1@zsv(4IGGQ}qF$K5I6E*HlRT#&4$b{o z@V8e3aosHB4OLtuK(1nm?d) z9xpxS7M%EEHgj@(WQ6I&+-UcF-)_$)J#9QrdIsV$T+DxX9Q7m_F5=^O=_fc|+QPhW zy!881vB?kEIbPZcWaEyPy7qs#uV4ox1^d$gg7qlDs4!Eoeb!U3uOXQ4J1Lldxosr? zJA#!0*+{|uIy~DN^hk+q-7amy)ik^WokcT5dKc7_jk>BN8>lNfalSx&}K-N~BDPRA-9RXo$2Y5@Ft(JPPa(^ig1kkUR<;n6${4 zQQUh8Og;)`TeWyUP`sNVUNNZ44Dni(c$`#J7~<7Jyj_3`(^KN@r*S1-4R9@94C1X; z;uS!=E>pZ-L%i#dC`CMnpv7|thIoypcrT&H5$)}IE#AtcS++q)nqI9E@-noc==Z2Y zFnuvPABM4f9_Q}c{+9PK)2sWmw*-VNVqR!(n?lHPz>Zl~0oh2i{CHMh!G`|b=|~o4~jy@vE z_SXOCebbMKR0ff{l}OVelJ$d8S8*U4Rab!nwF8DTcngD;5YOpO4xa?^-caJ{?u4dT zjFL@L)Z(%IQ9-(Ux%o%L+X>=TFfW+mZV<296t8xp#e2*Y?_T(CM0>kN*WPhSv+Pzv z9ByI??1Bk7D2ECV5cJ~1+r1bX}SCtqrC-2*w$^j#{PpN0A34Y z*f>z@jJm2M8|WKZS5pwC4U*&C_70x!dkG>{0M`Qo>uR3HQCEjUq#7mC(GaQ56sge= zsR@Zv1^|bk2LOj)3;^e8M<(0bedE#IX2a2Ss}}FAZ6RI|EH4F>M>IIqqA9i-;w?v* z7LV<1g@fn&x**=Uz)kTk*EqyG9^$Q5;w^)CU8Z=whIk($QHppDL5t@Q4Dr^O;$4cB zzc9-iw0I@m&M**%knAXU2$n)V!to6yvJMk!+9mv;1B`E<_A$#R`?R-u2wB9u(5aja zA3_N~C2*U3K&kN%*k_c(u&?T-FQA@JY#~GeVzxGh4PsoOuJ8>Lh&V#Mt(LdjRWm+(NUyG-LqHauhBS zaK3*VXtqMYQnS^Bm1gS*&&`ay0>w2FhT>j^;@SW^it7Zjk&1g(D{iz_T=-*cB9X;l zwwHxNac}ie+#7urx1gWmK850<9wb+aD*~()R}NS!u8Ocy+!DYkimL~KierD%BH(;~ z1r)bhz{(^EE5%uZ07G%_L2+@yP~1CETq$5jaaBMzQgQ#r0ydL|g1lufa)egggTCwn zX+*f6$0~Vfh;Nj_5!EVb&+~EPmub1jRq|+NgwBduGP^P}LZ3wgVdYzDA*}orOrsYR z^j8qq6PzFOEzw`m&b*)y`YXBsI|{M9sR~J%@URp?FgqJTNOm?6IwTUvrR3qv$juO; zl&}(^k}yQ*J7&-)u|6WuCsD(^AOd|7^?)4_T7Z~!y51sSn{X6nZK6`^QBz`QczWF{ zmAmwmhFf8*RIZ3ulUr132Q<<}7#iWKv6rynz|gZ;b`Q)$SMs_nilaWM5iW|00XrJ0 z1hP>YiE!1sgxRA~x%jOotVC!gJb(y&D|uZOzHQ74mCA*0Ctyc}ULYGK0xESk%zQ+p z;)O|BsYU-#UEGhiR352dg^W^_%4JvF4{lMZTzwT2hDNwFsUWOYUdc-A@9E&mi{ZNE z_FW}&cmNUlRw`Fl|4jt0u6zM0 z0#{c>fE^JkfNYcqsMHfN-xHNurz>^&x>xExs!~U)O6A{3)m5%5y(b~fJ(g!JJ^Bk4>ug&?)S2-z*Q#2#*S3x(Qv6R(G~x0YQ?WW zm^toV0~}E~?s|Ek>3ZPYRznvpPBah~EsdMC-8#Czn!&F^8Z>VuxUi z#N!}BHM3VEaV=pbLIYtn67PxJwFn%E_W`cEBu*xlYFvqMEO0FXN8%Rd1ykTiyc)10 zLN^dC!c|C=B7#HEA~=Mk2rz{|?i#lO59=dlT-3dbLm`0zeRPbJWk5t9uoP^G(R#`! z>)NqP?$L|DT=#k@hDPibEZ$NC!_+81ophu41O8`51 zYyhJ5NLEwy=n%9X9YRu%krIf|%Iwwny_&ERp^NYUBJ}MQ)@A(eWnK`0<99r4h)@b- zqeOrybj^e*Og+-*6;>PzQ@GNk*w`S>Y)-eW#o81uO*MtP5oY!Z&jT06j9!694qpVW zO@Uk5#FM5lp%RDkAc`LKmk@>?IqKIFh92o}^!Xb~JjQUsX7?SDkYKa9F| z&RWeRr2y_7hw?{!e^~Si&H&MyY6@&9rYR8Droc0##I-5tc|nhyD@1Wh)zM=y5UoeDnxaRCp!Mhwl6s8Hgb0;9_^Rd#HH4K2 zb%X~Hp>MCSE^~!O<^>TrS7-z5h|mdSqeM_IT-=1CW$5=kP3|vptj+NZco24a--EET z`yPb75(iT+C zS|U6M`?ld5Dd9obcT`$oS3C&2R2_s3ab_Y8!Y+eRi$jp*An6lPWe`$WIuF8jBZfGz znPpDDT-FEiPLos=R3Pn9mIw{8* zxl6WHcD(m_yoUN5!Z=qdJ7HwF5$}6-0KW>j^G^I*AaFun_Q$ArC*HyFqPd^%(6%mj zS!FBIeV;sqS5JpQIz|T0utMNGyjXUo#HRxn@7taw@za2d*FI0mjM#YPbv5%kWklpM zr0pV{>kr34e;)BzZJw*sGJIR#WIKeiT)27UyZJf8<()-kr^>v?0ncRF%OyS+xG4Md zbWp|C^QQoy6uarY-BJGsLmjNjHYU1#WcVnkgZQ<;sSf9j|B;OFV7hZTbm1M#|oi+1Qa5I?-+uIzT000 z3NsXxcR-=(dB);LP)>lQxnD(!bj&=L>Y z4@3ZQayxx?R%nzzi3iI)S(dLHDW)L??RNTJ!+b{~#j(KIl}=xn=iM3Mjlf~P*7QYL zzQXAeM>K2t5U=H}LWGBOghR4?TOtB+9YK`vDhP1(SkwQYij0ks@6}J=Bx;47l?dZ^_9?0>|NLCe8~h|FztRz^TONNUF2YTTJ1tAz~NuW#dG?v2X+;YJwx8 zCP)zx6-Id~?-o24KTqK)%Y^;%Wh56d&lbC?_LmEO#Y<13UAl`Z6&-KYC{sUVH$_?q zlI1!XG2Cb4M~p2;*mg!Hwu7Jz_M`5mWAxy%r5$_&4Y3HFOj(INGF*(FZ%4%34l$hz z4)y>+^p#uLQE|b6L*TstF%BT*%wVdW9{L)i%byTmj4mWF^mY&mAZ%Hwof%~3TE*zw z+HwF{LPYhdK6C;py{ab2URC6FFye?_bc(n;L3E=JA$Q$id5uGmS2xr%V_e%1?R1)~iTi=NpTLi(iSulG@Pr)O z`lGIiJ5Up%*F4@1e+8Z^5lH2ioq*bS7Lv>cVKNAU_jf=z2n0FMtJ-h~=j-bx&Oj77 zTq}LIQ4^;qeRml8{vI(?^sNbozURaG60E)Dsyf?r_Vs)P4l)j!gI8a!N40RU)79{q zmh7*#n3RAT;5^Mq#R?h>D20Gkuq#)<|G)J!tZn)Cd8$ zY#DJ5iD9>F8O20${XtHxDgbj@<>$1jS_E)P<>ZnNq%7)|4UWYWkdWo(BueOiK6n?B zz5q#IgC5Gt-Ql51(tHG#O@*Xq>?fIIk0VS@ODarm2SZXpproQj*OH?h72gd8-z_HJ z?Q7w?!kzBBAyqw^?aKj(xnE$JvYCtA!Es=_lX?9aYP$?9_W~iiqBBa=Bjgfy$ahb_ zEG-vbO>nWI-8bP!*pBT+1ExmYZ{tUhrjo=7jQgc|iu7lYEO+C1+15*V%3`=1H}_B3 z)*L)#_W;=sz$HXh!W3P6Z_B+HKYzjFS?RakRhX?@heseYmdC9|JVc~F&;1D^Zi&g1 z=MA6j9)yUq7#WCo4fqYI23J$fS2_m${W4>k8pMF-0lWWpF;&&NB3Tka-j!w0}1s=Yt3mn(?4K7>KLs zerRR+u|j9zyY7@s{*BpFGv6m9SDhe?`PP^2T%RR0W8O_B6oCuPoLiAjW*$G=-DFCt z^H8Xe%Kh&gYbGAn_cPZ?A@(LmkSbL0S1D$ggy;NYLcGI{iYt}`%%svT#C$XkRCkB< z$gD$VDD)T5`uiBfiM^tv;6bR=PSgfV2?npnDGnebUUK<^UxNo<3?YkQ7<;0E5=5r^ zH}pF4QY5FBrD25RobyN=a@e5j$Sau_yezzqyaur2WvK(QkzN+CB`&$^9e)l?)L27>6gc{LRYVno{Tc@DBmHIw|WVUW0%9kK+oU|@~VtuPZB zLo1MtxSM`8lK)i3(8auzG4uja38gg>?8F>g}T9gpSJ_p!0(L6V>6QbbwJJ8Kgj_6;uX!$X5Gx(XSeBoZTWV{`n8ldwQ|ROn`3Qyyll(o;R+H=t6<$ajw;Su%P-3Ai>vOSLfgr^ z$Yb1h(oU+Cop3h!KVm1Tw$Kbgcj=JAE;#3;8X+-H!H9Lgp`JU90(tp4V{FPhE75OV(_9xIe0w{%7vgf4ZR11l)>v?Afyal zk!_?urA!ZA4#8QZ4@DHQzS8$9ZU=%WSlz3rtd(AWJ!sE@tQSdnL&Gt%VSDBxi3V$> zEkOq65Pt#K9DjCWjOPl-2dcQ`{RKQ!O>g9^B`tp=Y(?e(?G1SlMqN-`iVXhRE~a` zp9!+uo1KVTNE35OC9Szmwv<;?y6|I)R}#>^{mv3r z#Q4x>hc{{odnC)j5;n#aXcbh+)u&j`))B#aR(!ss8Hm2=zn!qU>AwrGTEixntedGk z;o-3f7!cj1EQL!8mO{@d@s!S)gp|&igpFQV2>UW8 zB{fh-t2CA1cL%tvIJ8R(b|#$c><|1fEzpmkI{MvQO0j=KE+gI2==S@A?2!r($lM}R zps-?Oeb^R()akf+Z}Pxh^UroWGUT9+&9P`7$a9^PNodaTeB27+S4!BEl(5?K;Wa%U zhYjr`@UPGD;dD3gv|Oti4{9tld9tiQr@ImIJ9E(Gi1w_E8b0oSeGZDx5m^;@pqKCw z$IG@l;Cf`=!u6kn7XDmw(0<1KI7A8!5@LzUy#g&=4{lkY?<2#4uU&+5_^Mlo)B+VM9Cpf3#O|X7Ho^xz=;f%NhKnM`f>~XYgL_ z-4Pzk*M9vIcu|jzXoo?xzzb5eg^&C<(JuOph{i)hqW`%YqJ58tCi?!3vgcUHMuYyx zr}qMO0Aa!cZUwMoF((wm0=aS*N-b`k3B^GOxD^lcU8PK4PbgBiQjYueZ>2a=y$y*9 z2TQ5`qk1VVRmwE!2&0$Uit7CJO_Q97?%@#V9wpRa15I>G(Xs!!C%U4!o~Lbk4TPB# zl(qC)-wm$`>#*U~*UFDUW)H~>`?Y`%L7xy3g^4hp_|p@DO3e%b6)&G!d;%P7oYnJmFkx7d&i8ANCbyn+*`A9+`c-m*~s{Q)e0scOWbt5rqXW z!tAFOHP4VFfP3u=Ykp0*BU;4;bSz6hjp>IXFZsi{acd&o?{=UQ{rcsEaFHb`X_-WHQjT9GD%KE){nhj4}Xz?sng zPDYNqAjb>wpt$fZs%AOABzw*#5Eqq`-cHWTiKl!{ORqXDFVDKNOzxQ@iF52#?4cXS zUNaHS4L`?GPXdm;;#W;q{{uj1@G-FW+4<7jaQts}=^ze#y{cv683@N|bQP%7_lC{A z2R!%Cg|_j3eeR)`Wvu7i+o{xGMy@p%5AE*q|DFA*SS;7t8xO<^KDrv`ptA?qpUVGB zz%l#bsC(eb=AC`aQ;^5gGN16D)KunwXdhE_L&XqXcWnC)$+d38L%ltM(Vw_py9;@KC-V)T{+sPPgiMa#=-A9$>tQ@>I#>Sh zt?>Gd&zooETF2snys4FYD~Mmofbb2!?LNeG>CDT_}I@s@zHubguj}cZ52+z$#B4TmSG)3SsvCZxo#Hm^Ow@7d#05Ng+ z2HAMdUX*RMz@_-Owm`i@*836*jJ`x zX}N}Or{23vlW*mvHSK`It1Ix#8ye}xdbAWLROc0ChF^YOcEf8ROW^|7DDSKXB*6p1 zuN%_LKEyr<(dD7$vz@fYwhFg2-%1Hkfb=SmM9 ztq9!H_s+yuZ1AnzFTqqLm@3@I6%DyyKFk5RTZJdOa)Z_IY1S}wxeH&8#KvAd5c@hZ zDPAvq8*WF~Nm|n_5bdKliVe_`n45!Gu*xq1yt5LL;w-)fa%iDn1 zro1h{3lGCfT8mMYtlMg6r|@ihm~S|$Qxgm^V{NcHWXc6&c%b!|eofx*~f3uX{!MR-{&B0(jvN zS2V^(T1un@4fOWY(R_(aa!rba&%o(dAcKcSVq2bu+e!(GuX2akkXhN>%0=8^J~n1e zVC@IDN4Aa3smwJdxC_qFwh_s)OCo$zs)Jc&_=9{)s+%z0kP7k*DeFui`t2xY$mXcu zjshsUi5Xhs3!&}Xq{b_i#s?vc8c(q)YW$b9sW_x^lwC}O%6<^at{_5X=Rw)k6kaL2 zmhk#0yMZ}rWw#R1%3jT^l(M@BYi0Km`7vd?_0aPQ6g?83-lA>ENV9kwNC*heF#mg^z-BF}7XYSm*b#`rY zbh@W^Pp0!+J11_vk7wS^w)jSn$m3L_Y`Q>&>$B@?%(jdj;t2Cou21V5gbnEW4D_5W zuhN+JB;Ibl8SH*amUp$qOVr|q&FMyI`@bTu1(??nxf%t>nePk9U1?F~9L}{ogCWJP zc;;PVi+4IjRx^yO9@SaB8u<)al`^Z&K3QGCti)S~{gRJF7B z&3H%TLloS~dbrdzExqGKNPqjNk~tGLx?BGT(jtm({rpE zJf0`K`}Qe13mH}zMOQmT5B*7sZbq?R$)XSKQ}jp_U27EG;1oUXCnrPv&{(dK#?oo<-sAADjfIC@Ok*LQVk{(RW0BV4FhAss9J#)K%6ms2<{#St=C!$L z=4o!ebCZ^y04yzCo7=`PzZlF5hs0Cfhx#!8!Uiy}twu9Xt0^^@uXLE#R(NScl61)O@#Uy&nyGEaG5>7$yr zHb6DHEo;@VE!P;TsdH4L+wyvp9=Mig`-vdEPIr*NONPA_|w; zbH2~|Mm%Rcx*MHi;>;ZBetOPF7gra;2F~#qL=?`p=X`_UAkuBKf6>n%qVU{3=ga65 zQ4ZJ9Ubws7!{@d=*VuOYt)pxlAWzPhxX~zYdJto=8N^LVXCqQfB)Ab7O<;#pWOq5P zA#fjeM7Gt0$8%ts?S22E#5oxurD>suFsO_{;FeV7 zq_mviv$!p+5f$gzE^Vm4{A_$_2}pFabSrcvd`QnCDko%~9n&&{uOaGcM%@KbcSh7M z6*V{m-1ahLURrK=4jPm=m;o&2&_R@s(i(R?CSqRdE!Jp+rU-zM)J&{J}>zK5`R&WM#i8g?-1!-e~ z$0LU#Ah@R_;yoQmv&w()Yg_sDMs5zy+)y*uKxyt){0Qw`fYr0SZYFa%{GP{eW?M55 zOHY39hn8JuW90c)8m=Zd7b$b`vj~spK^{sGpQ{t^=F{(`Q@wMZoO^gWe2xc`(=E>n zJ_zIDhgL-zF5*OGZgsv&fNdQ5kZGKwnIM4UgA+1b)@ph(gZ}JDZ@SCs0y6uooJi&G zAl{z=Z<67E>ntc9aMhTwZ$9YEf$p=ai5dQ*fR{3CQp{fmxRUVH(O#xuJaA!El@E7b z3ny;A7A|n(wQ%CZpwVb$_hro?Ih^st&HHu%6#{}+Yg~mT5S>v4B z6Z1!d+s$xUHQ?Jb#6K)@F_1bS^Cw5VX9K1XHHbO?qlouj+%Q9Y81d_)kpp2YjflJZ z8^dE4z&u(3(^f3sbx%q~qZ+NmCFRBBTeGLBMDu!@00aBQV5Sl)^K^tIh)lCH{T?8tKqk*-9x)nf zB~VY6KQsIfHS{0{%M86;t|EinTQ&SVubex5%o(!nYOGJmo^{HRi3Iik)# z&W;3G5seJo(+-LXYz3k#a5dn8D-g*YMRSlsLCNOC+VJH2!MTf{Bo^)OKxj`4ODE{| zH#V7|fCq7~_J^DfMrdTB(1`O1W@nc1sMbiSKiC9gDP`(O{vomR zfm8w+a|+r}xK~yCN-Aqxe_U)#(Jo1FCNv~)P?j504g=gd^OX6q(h(yi20vLFd<$J% zQp9v1TAnJuFL>ez>|l_K{rr*05=5y3!iygNc{5Is6aI;=AZTS?>aFt*z|LFeJwV`C z2_FO3DOqDbNasqp1}i;>KnKf6aP1J1cU4-hv!1}!B^>L8uSFOkByk3g;00EY%fb)BInR~&S2;H3|_n0L4;9zbkcy~wF!XX1_x zG22)m&RsA#fy_J$n1Wv;bzg9F-0H>Sc@}q`SZBqp&zC7A7ygu!@Gu0!CO*RLKJ1vd z^)MdK_9VT>&ABd3I+P@S+}eH132KV7iX?v6Ozgb!!a~iLKPOk8^@?#0Rj+n>E%&Jx z#q}vZd7g~A(8=Z?+2we60AT+0Qf1;u1do*IBN6%(7z~Um<*1_5UyrnFWcoom zxz6@{4pS}KN5Hs57hnGqJ~;Qzw`Nx;`zuHI^ z!S~JFx%f#Y<0sENN8ravMkk}^R(#CfDXrl~B)b$p$z*hDdOiTjiNue>c_!h<$>=#C z?$_{>Oh&bP#@uWq``fLE^dWwdkuJOqk(%)1SJnkNrGPTq8idgkA6BwGW-{T+Ui$#~_R=O&C2PTpIzBhnQ7BqJ?G z1Mr*yk`w9c#}Fy)@hodMJjHLaE>~VY7=iywz%xjx3#?Mb(H9(o7S!df1YEo|}NluH8^4^F-( zwH2Dse}7NvWXAXz-;=Ujxx=uu9flwGSp57E&(fFCiERLaZx?^$2@?VF>R! z7;Q-OU+$v--G?Xb8SwKsfl+vFvhC<#0J{^Jk2`5Oj_!h#dbHt@lC_^D!RE9$OA_K) z5+>y&LhQeZkHDL=FvbwX-HhCeaGoWF8P`Ez#JvPR50j&F;H@zcF}M3G%iyiYkNz&l z8ZrZJ!4uO$%!v$efuD9#TFmz$x?&PWf`D5Eeg8_uQwy=&&!ae&odySyC}pm}=6Mx4 z)(d#j9(RR4RFVc*&@-;|@S&};Afby+mp|02VhF;8JfxE%V*jG{Fp7E&#pFS*w12xo zPpX_nQ9q!lSInXUZhy#Q5@b>7qqD4ec+&1dJ)4M-%G?JWjbbjF5x3GFaEG=;HB(zr zO7)04J2X`hIGId)*qv=f_eZ8zGvm#0&GDB2M22rLoRx79a=V+1k4OvBXu9B2NgJ6K zTf6aamcoNbj`46EFO0|cOloEMUQ5L-_eh*1TZ$)bB3w<;@4?LuV}Koo8<6WjCVOcC z7>`-4DcV5Wn2i*&ZOmg@RKE8{G=~d;usL|=sODf=0uPZnC&$Qd%E_^9NZ@HIVdy&% z`;_Y$tBGgJ1aYxJ%*1TgZI&&q|7|c(TnGlvf&eBW6yAdjguNH z^8OK)p9_02Ex#}ow^H)NxP+o;`Q8P}@~aINN1%Dp^1aWyLhq|4MsxJO0&`q=XVUV$ z@51uGQZZ=x-V21~o8t8^>R_X&{ZSMx-)p-=kE)zSQ9gHixWg=J2rS=i5@bqCZIg?sa1{cAmC$d)E-#m8G~&H4(Z;+DG|79A-^`QvHqgD`WTv3nQ7 z*oT5lWA|plR?M1AQ2>m67f!f$44g5|jiId|dlRoEiW z3*gezd47oe#_xfcg5MF|6AY#SElUH>>xZ>i; zD=IMtwF>tEPhU9%^L&Pgq1^|;%i;2CX6}30nclmV|Br1pG$!OTeYte>gQ4f3BW7Dn zUCT3Y#Tky7UY)Nbm-JXuemt)(mQJ{Jz;)l1a z`d+p@mz8B%-{A3mWV`R2g35vo_yU;j3Dx~BP1v5hsU9UUt?yYMYmc01tG?ToW?)&^HiF1=a zV{*jzox)i}#*~N^`RW?nKES&AAQb!_-k~1Ak%Mi2WLH$aF9t&x>JQIXhQK~(@Hh6* zu%-M+g3t{=(g{!=6(tDg+EWk_hUin=km~zjj3WT?jA2Ouh${h}R7DAm|2;$8nXYTV zv`L1i*rXtsHp!t-p9=I2QJe^~`6%Rj5B0!oF$S_OBHyB-5|9>^=4Yjq0``403J&O( z!B8c!&tsA7dfxTP#u15ypn^KWtN4mup}E3qC@gL252JM zNJgRUslrn0VLTaGwr9ztEbDbV8AEN)`}jW_4TEvMot$MYLgVNge~0a}tUK_Ko;Dpb z1w4dT@0ewk>;xE-X)}KV#)`8f%i14L#&_$DRw$+ z&k!t~1v|Idfu(>2JNMb1>q`|ocf(v=3oz1p4#dw5cydm%0}qlg74Ye{N%uSk+Bc*h zXA3V-7gA%M;BH!tzS_G>j+K)axg0Eapzshq;7)sLMQG&{LqWzQr#(IH88 ziU_X@J3Blmi`VSD(wChPeb^DU^g4KhM$($71|fg>Iu?jM?rG5aApGovClCEW75-mN zc#-Y71OIynr`s-ud%i~}z!5bMhd(^?cR)-$c{6Mm|9c)pw;)2R5V{n7!`*oDCd%2# z0%%aTg2hnN4S4b%@{W2)NsQpUl_R`yg?|W{@{WjjH$jid8l=_c6=XWY2=R3o2lGY* ze{>x57OOJ1Wf>#Od=m^S$%_~GDiltm$jb@%woy2H-Mnl}O?Ed4BV)e(70znR8@Z|X z9b;h28}*Y7Y^6#!6)a|)-}im$fa0C1090& z4zxv@-epzI%8H53MCZ0v3 zZO;PyznX9fhAnV>10K@v$A256ALx*636fojC%@Zv6>fnnHo?ykcn-<6UG*efhM(_A zNZ6h(c$%kTv;=HFx|sg^TwjG^kRAD=$-&4X40YCLE^E>6CdB3gjswn`>KbnOUd8l? z_2y&DUDAD?TO`izm^kND3?EEhZzXYx12ko%$GDTqChirjwubBAu`2NHria@_W zegtdc&kb(#-}88<-66T>lq9~)A6n3w#M6We5&@RyWmNhgm=p}iGaIIHE*=^I_Z)=L z|3e$WeyxrX-2b@Dt6dqvYd?h%+z2D6rgmTiH5*_Ai=mM^riT$!EA8;y1&!boRD3hS zXavUqZUZch;2kA zh%kb?71L=hWdtpXpp75}rxC1D^+2DPFoF{mx2$v;!Dh`!z}FQBqT_jXsx#ZviqC6`ZIA?2^@VkxmXDrT-TDWCF|@$!wnmu&RKt-x4Z zD<6DdU2YtL{kuEe$`=d3jJ?piG2$Sc;KzD&}J67-6WMYnWB%Z8~Z4;K?4s{<1 zv!rR}u7YW%AP3=i1uY}@U|7a&Kxi4cK3K-mzesD!{SKYf{Xl3_z~Wv4X zchmKt1TxRfvUb5UbgUiN1OG1|Ji`wB3;%h-VrU$#+L`P)?!&Ebm*d~iP>TC-Xeisc zaJvlU{JPwSmMcb`HY>+E7tgTGrQc3OFl*o{9bs!6)`1)DRXoF{ z*q-0RLwFM&z~bPN(EcS-(XJ+5rXRQfH~Vt{9fmi7Ts+$&CKT9BkQ0jYl|qLNbH?70 zNIz^?@&hev!JXS%KbG-RuaWEFls=| zLlP)XD}S38Fb_H7X*r#QTCCxL0xNLeu5fTwW?93199_^cyI#VN(A_2OWa8MacmW9-UjXHKxK1n`1q3u6~Th8n=Js68Tf z6_7@WY=@N`nOhAsF;+6y%`}QRE8Ac$4n#9oOxR$q0(ikQlDS&Inz;tTin$iR>J}{=Z0@g&n=@v(DcIYAmYl4UZX0C-P)gnp3C55p@z%78YG6oHg-2tSNNNi9( z;(Y)mL~|*$FMNTLi5VB1ZRdu^8H5z68AD1P9E%O!_cLiQxTcc_t~XitBn72)+@V$`RZk);T023(Y%8JvQm+5nF( z^XG;$Rj#bq(HBMH-qTdBBw%0Ax8ep_3h|;!RDAdoRSsZlbYmnQUS$$K4-F5!rGybN zo(ZuJmVZuhH1pAyN2WQ&k-*|?RolcxaZKoKQ#HeJhgEm2fd@88%Lu38O&;ok5dt&p zF`+ez1wp9v3c(dI0Nw#FuASZvu$6-crIwKT-)?_ak+HbwAQbSoI^V zfX#knHPfhmB${vZBjpl74GQL#08LyknQH*7nQH;;G_7_Znz>HG26H_kk?iCWLzB#v z5?0Jr0ydee0j`;A1?=>|T@umEMTdd87Rg*OV9i_wV28PCAey;a!Ul5Ldc@oQ{pI(!|YK4nBhTt$lD@&(QKB-rPd+#LBG5<1nNS z!j-;YTQ>S8z=3_zGJ@T(`W~G1&9+bmP zHDEp5)DzajO*4?x;Rb_D>TpAX9&Vn&sM5xKA1aKk1l$c+3^%UjvVOnl(CUYH`B9w5b(?32kZ>gjKIr4Op96E#TjrsWpJ<1SWRu z)mi{+Q|kb%O|6%(Hnr%O^)|I4B+;f;1=#7;>WN5G`vj)e4m2@enp!7d$JBa&Y@Dh2 z3Jp_B0C7yM6o~HCDhc;7wH?t#rwpJZqzs^fU=E;D8N(bv1;HFZNiYXc;(7qB0TbHP z>If@SYXq!Ktrc*Jsr{;_+G+q@4W<(dq^WfQ)~4nwN}5_RVQp#^K-RNYt40!SY7KxL zQ)?$8OieD>dVwe2i#p>Z6_~PMBOztMCJ4zXS$wQvQN=(Ui>d&kEvlOEFKtn^U_x6| z17T%REr7K}wFCa`Sd=p#&qXaI-j55%LnlN4?A=huLod>6$3t`+D)eBS1g3wg2#8*Q zloK`_4^_YmE|xRFI>5TmY$2=-xgAKVA#)aj;I%s*I+?F>Jov^dL#E@Qlt|L?umou0 z{jg)l%s9o4Nl39{K}gzhJu+|x;btI?9k&6|cHBX@j~#D-<6%0ON$D8{!R#4HFndPg zx@YVL6WWfgO_FvT2dwS581Qe$jw4@V*sB1`=!$}LKvV;!^C3v*LoE?F9%6JnG!QYI z4lPXeiCj8&0M<+AZorP^TAL;?Z)ypSzn+gn6tLg;b| zig!<@!Vg|WSeTcWyH(7J4&lVI^nM#xmgmCL@UjP<#ANv*t{bP2u$kg%x)GZxAK}J| zgvSo|sJ#)Mu}g&PA))sSg4j+82cD57v71VS5#{^7`zfK6{gfeylCoivX=jG?j>!aO zQiw~vzx)S2vr0J&G23u^vEU|B?hg*dUPv?Gf?047ZVC%%1LE{79YA!?(oI<2sJS4dQg91`1mghUOBHz83A5J#eRAX=hM z!iGdWDwU8ZUb3+gA%hf&Sm`Mek&q%02~r{}$W5+VWWgHS;K^nqc~HAtt$-ahtOlah z&_!4c8QkUS6^Z0zvuLa2WV4E}o@_1wvYwO8dL+@4%{IW!E>|}ZG1&|zFsvlD7E;R< zdMOZRT&V<-GOn;Cuh%@ZhB@eQr4EQQt~3JC<4P;xKI6&;%tJ9wrj9FuV2&#!nBxj@ zj4Q&ey&6pDv7`&I9!q)w|90k{=wrDF9xX+kj%VM4{-zj+o@G@4cC4}*h_=dF!p20V zK_pUpFo5+$rjxMVg8^(#WPFoQkebL;0(NFubrONPovu>s!Iay%4nb_fOzTV70o`N< z#+6p&kl4wV?+>pAk}?RfyOV=ZFdv<57b92L(MS}CuMA8rOOI@Y{n!NI-)98VF$|Rg zcC4`yh_=QW!qOV8NE(L9I;L8d?vDa)1RQ=118HzmG@Vvpi8*#uOvzRQahgsS(`=N> zzLz=ZrW4)9V73T|X11JgpQbY%+DMs_k&rSa69jWgR?ZmaluQuJrbB|+bcpLISrwSj zQ?ez5)s(Crux>`pfK!?g`;uSr?og1sLv3I>G1pEPj?@ky+Pl>YSUUw0+Zz3JDUj5D zIs`dWoB||>C>Th&JyeM#+PhT;*zs<)5|RCM8H}wPXkrg#Y`)2cu@wQ?IAg0|4%*nN zfjBLr7Kk>s2Ex+Vf;_0u!c;h<5S#_19SDsq$O8(UL`(zYaqScX69m)1NH7hIxbB;K zkexOv-;|_LB>?~CjH(n&C#sZDRRYmQRSQ@fRWo5d__qOBPowH!zG@@L+RiYlVj|M0 zc7jpW08Q+zjH(WZ(}Ohv**K$WWe(b?Rs(U2stbrVs$RmsbPpCSPxfF%gjEk#4p{eK zRe*nU#oEfSQ}dd;NP6FwSehF zwKBGLAllfv0c&H6Zf_V{5s>vXwsIuVJ=+q%ja30(UTtngYkC8&lv4iC_vGoP=e6 zEzrbFdw7JO7;6LqCc?7-bEVDc?BMI{p`oXY<@;cH2T5#Gtk2tI>Rd6`?;vuRohtaAgly!0c;A|&NNC;-%f_0r4pf_JQ`I46x^k6 z_+CaGa&TI9BM@g8X$7KN_G-d?hLPVvk0}#j5>h6@f?&>5rZ9#%5f%h4MtXc1UW9AnRoRMATZM7t)d2n*v0 zYuDrzU>0#V$~RevJPI#L`X&bh{}JCLC(@>Gl6cCpP!MnpI9#CGH_1z9;G1;(nZ#4l z&;_dQoCy!bGLh|(?{OwhvA6Ipgf27zUdzx_)nFMx8ecfYbD3@r;JUP25xo5&-eEWt z>GT2pE(;$)V&*Ry#7{sBG$ZLbP!$@6>u-%Cqq8ULD}$Dur=D_TJ;kTW`&|kz!bRgWqnnYJu1$7v&i=`G1ekpk zcUXSmK1#f*^N?YFYhZet?uIY@+!L7!ZMML83g3~RA8n^0sk<&Z3G2HqdWe{JU3egv zz7$02WQ9=#-p<6QDv-Hvrt#^+1Q4BjDPf&^B@r`sWR=XlUq8riDGMSyRb37IT&w#% zybhMYjZB5RqE@}A-f}#JTiJGWR{-Y_`5dnk--|cJzQDt1?!VzesZ3OU;R1yG8yA;v zzOO>=0PrahH*!0wI@@Z+gIAbs_agwlCxQ_7srzMHkKif19w9sJpKUG2Lqxo#E&7$2 z2BY7r7tIPcv7Hygh9eyKn0^G%U7PZCxh?S%n2euVJOxkMfeCmoi zCd->-WPMS(D$l&$mQGyZyp2DIx!*GBye%fIoVOK#ooQe-5Iqg7C9KNw(s@e;HYLZ% zg$~>XM1TX=dm?tx7{*;K%y+$$Fz`7zK9*C80FA48uewyM!Qg%cxEGAJBHM!cVZzJ2 zny_ND3$VjzFA&XW^dW=M+Z3bQkkJ)+AzSUi`N}XB z3a;NGbg+RlD=TsiD4i_irp;o@0LLHJ`HE(+o1s;@guPe8kwNVTndAMr;oa(zc*>D1 zMo@3S?SoyIsz*@9gA;-;W2|2S*wJb|5Utf_!b+<=yxS%cNv(DR)>@4}YG}0>$a-j% zKIaM~(TnI>z|JDNg^19qkp5^xdM>KP8ncUu)nd9Aup>$Iv7{tLgq0+G<+B{Pv&IDM ztT74eH74McH73*OHRj{y8dD-zV~V=xJ*T?vzel}qeIx4r^~m%ivHV2Lg7nmv4tNAbHTEU7`AAzkMCj5J@xUbe)CHI?Rj9j@Ih*(ra zc0&QpPa@tI!y+?LKpS9PKnGwJAkuUbLFQpwT^-9I(0{3`z&C71X+47QI9@!&pBPjQ zG3>b<@*GE*Y+J1OeNUmxkew-NBSA#fMk!#YHY$N=yQ(2<)JC01BzN~(0PEUlC#-6t z6R=quJxrr&qx5N`Hfkio75`z-TqDqen4KHr`Hwar;_QcDypus$a1e1@vX_YV$vk5) zUIaulUQXCxyb8EBqk6!a@n*u>Cj;1Iyn|`9Pv%*J@d}B6ajEldp>r%5+)bxI*-w3& zZ50f&gB<&65wT#3y}9V#8;Gdxy#=t-y|)9=-FqitH4X)N$5jtgO~DJD4Hw87XGd2s z$}SAAI5$ZU2Y9Bdp@%WV0iNIoFdN@<$Y7jZBu23W5L`9vjAC51nWLD%jZuua9>rqM z~an1$R0CAdf9T43j8VSo5AO*atpToAhz^IVX?jdMZ7Q_ck?UH}i~xgc6j$|)KWQcls3AWzW*rhK1m9ghdD z{J?4WzmjmRJfO9o(V?}YeSOUit;!Y~_SGzPK3tfhu@O;oz6Qd&tpRo{sU3*6q)x(p z=X}NFTg~};5MhJod_m6fd@q8JgY7)QV1kI6>y;8#3|0bm7_0%J8LT6$8Ps#Vt;yh8 z=X#CIcfh$`Z~;c0RtDEVVO3}=9YFN3(*u~pjx*BGU{gjKL69R&jFa!^OUUXFdqi*n z4kwoqIn<5^_rolw3P@m;CnQcc)DqF}yEZb~MxAbGV-9+|rUQthxNaa?an@fQ#W`=r z?@Ya!Z^o05;?xxc)2X`?W0+1|K`@=VB$!TJ;`($$98Bo#nqtCgyQTuLcJNjM=5~!Z za9T@5A2@9Qq7R(5FvTx+;M5XF8rs1_!D2f{9BJqzqTYD5UQSLgiwNrt!Ezw$IlZhx z5PYDpYhRRT+-Pt%7&wJXIiyCyT4v_rJ?!YKhAkEWacr?1h_=Nl!m<%NwzwCIGHsEB z6k8Mo(-wDU4AT|`!L&sZOj{(bZE*>h(6(4lSlMDTU~P+SfE`=xAfj!t8;G_=tMeDM zMd3S%`f(phAwDQpuzY|jNQ6u($shMR-@!}AiNhG&N#uNiWP%ZGFy_-DEiVn$8D@hRuzYcyHn1mPRk|hai5K@x zO*E3EVXY`j5<$BfLHi&`CYJYexwsr~zl@)Juvd_vD_Pt{B^GO(-f2GUn{vec`2~Np z!-ZGLsl6BB1t(%NXw8*L!rWZCcamSReiB(?_2FvTA35+YtAb1I&@AkOu~(eO9GdWH zlSLT)<7m4D&32x+nxPm7D&2CTaye6QrJaeqAN)_Y<$4r9LO#A$r@3rL8PcgJg041# z?3;6x?@_n_N{pbVa6_5*@jiaQyHAxeaRtqm<(+>v zk4E(!i|@xP&!s5)SR=x4M2L`q3QCWe9r>sxjOiD7s0A!qHp_1S!j{dlTL|mv*8|Gc zwi~i$F8p{)J0fs?s6U{MiV%wc59*DK3*7jCHgUZOkj~QA4MxXnM!S$L=ZR#rm#|_q z`kKLL5fII2IbqG{YQ<h(Lc}WEvJ{bws9>L@smTc3HxQPK=!kxE*lt zU-%*s{vuyIiIp1&oJ-nINpX0gtMnTR?+K=TPAzPQy60#93NG-rntm?a^t8`9__+?{ zvYw^Ed-x9gT+!Dd>A^T^QG_Zf0>VYi-l&pt!fIJR4}PvH;C$h7IN%1r^mDxofmaje zL?nV2Pr8A~iO6nnD6wL&q>$djd<1KPhyu~`Ag=Fk$QLhMh5?rX788*oAT>mi-ouNL zk+#HI=s!fSZw zI%u;N+DyEGGT=4*6xu8W>}azRh}LEeVWrLep}{(lNNTecu-0Z5VXaN;&GpjeF%U9= zB%IbQ0$d4LX!8^xbwrY0!yZGM-U2k+<&dO}iQ(?~8j^GXb|mQrq9w83N=h;bl^h37 zchAj$O99gvu_Ib#C1E%tX2Sw%0ISv*X&^I919#8NJy0lMaSFW(NT)=!*DwcdMc4Vg zsB`5tJQ^LW^)|AA*Ki?LS8>34byW;F#cL>Dhf-d{Edg7PlllgB*<7nH@cY?BqL%s7}5IurnI@-UF{{G)fRwoqYID zV`WDcL0t*&;N{9YC}s@w4qk+wo;@20!lkq?OkNYDcaYyBD@CsKm-#uKRRiIN$YPu* z)iZ>?FGgEUguX9E>ygo%VNdwFuob33Mz+VB-y~0tb zY_+QzJf98a17yY*_dM9?tOVj1W(^Q+n017uVFu4eTW?gUB5P2U?LaVFi~I?u*bSHi z_!=0O??b>Cz~2X41lV!Paavmef^f>+Xj%tf)@wsH+8BgWZmb#zX)ekscL(OdY702< zIbiLeEB42=gD&vg1k9D?Ub3+Ff56DJ7TTZ%?X2S@td`u+Sw{3f)}I0s~Ak@+(~G0OMvL!y&mwo zJLfnfZe~_=&K-hTT00Rs=MGRKgr#!B_bS8uf9!n+cvZ#L_Uv=m zoO8k{34v265=25kdXX9lO%el`K~%7VAYwtIR}`^f zy@(Av78LvczH86knUfGj?)~oX{r>+v&)R3!nm%jInm$7n(R8lWI(m~57f*MRH-dgRi89?F$Rx^9SZ-qm=t54DlxY_-!^cUKTT$F}Ap}mMT!HS7OW-6* zOMT-c9dHtbz36fzoP+FjaJ!IZ46-kUyHzlAkbNkkt$kSP-v=2e&Q5q;9E*q2)eM(?hw_Rp%S_Tf#1 z*|*F?B4kF7UB3b%n9*ZLx)f%&>o<>Px9hhGNP0(_T!D2W;&!A-a68iM`fX;oy6dMt zHM)N7iMTU*9IZPeoSAx&aQNSD~-=*N^;64E4A2%PqFC6?oNnf7xfRtToV zl3+?KaaUq@AmOgWs?RGWHVLyUvF%~@B({)!K4el$a;9)aechw36TZEQD|IrV5yGi{h_ z<7$RK6Cd~K5C7}KjE64v$15b>OC)JFX-Lh^8Z4@O>BE0I-l=#15KrQz1k=VYdAsrr zkjw)Tl~22j0^+@9krt1|-ovrP&YrxByS@3qocWcW4(!@8I>!h^`tPq9zNG&in~Y?uV#J?c zKXxCIorKvvNUHoQ67cxWnZHo23QHqZFs-yV5v|eh<70)IikK- zZsS=1N7i$;SUnE}Ri@UGGu#3m?L}Fa4o|Fn`P_XM5mzo;9~r|^@;GB_EUh#{xT48WYdr^N!NL82 z){~tkC!+&g@j1uV7dXpctqsRZJEL~{*mgB*brqI_3)uxYSm*9U6&6q3kzql~2YN5}NeXWhN z3fH1@@)$lTbQ-c};;E$Z`f;o5^MO1IgzqM0Uux^!_zz;Tg*n2-R{uGngk{SA;3BEzl1h|;Y+{ejRIkZMjCmoDE&55pO!w4}aVW=uU?UZcK*~*VCbr$PEnOGbEDf+5u#b>5?p{ zAx;)lxG&O_1V)eHiO(t3p2%egWh{_FAaXoUMGkq!DHqAjM|RW5a7|z`vOl!<3wJ?K zW89!d!uK>H7a*uZfy`r2e0Wqvm|Myh+fzw!9|+YlI=;!am4E0BaWxYlg7XCo{@wU^ zg41cK^D3GM&RigTiYt2#q-g$4h7`$A&wuL@=RLIsI9B5S0tkDc4T^o1|5Nz%Ui9jG zqw%8G=Lm++4$6yO2i^QTFM55phZnufK4s^JjTgP-px*J2U=i!ts7|W^**DnHT6g@B zbY~Ck4(VnIxe~dR$je$HcLVVxGIMARoL7-UO^KxE;}L8g+)GHu!L~pnB9S9CvdzO5u-7tL_z=~r<(+b zXm~t4d5MBnP8xcz6Vjv|9YA}P!rbL#y4(Y3$2&)8rEi`?t@_b39tI!T3)C?4A zRtJw4+hDuLJgev&1Wfll0L+-8Z)rl91XRGt3kIRVMm)WwB4=00VPtmIN=R+Bn`xr9 zVzK8ORzngTT}E3Ld%A4UGi9R$))G<~WTR9gA{*rz*(cc;3thd80l2z)0}xkNZ>8DQ z)jNrpx|+r7>gsIjjo>hZBYNX0RMj5*= zrZ^q#cDJ_RxlBHpX};Qr4v%NwAnnz@LWJudrek7j=AW$tr-pJ4>*hE*z`x`<)c;?! z4#@gr9l+e?=-h@Upa{DWaf`47h+BlEG`mGuPNc>noShH(W;m{5Sw+NEESrIN!n}jX zo}0RvRTazCAgJL^NFpyujqHoOL@Cs)E8Ggiy5d!~Iv{xID?k)`PG2`D(6VeQkS^V!*b&^90*ui|$j zf{O1|E~uNz%2fi}Jy)*CJCJUsN4j$ez^kr2!JAfH)7r+;nnS$dSto}W14!30dj$yP zOdneHXmg~T@kv9;mUFZwNCH@yhZzK;GB0EZZl&2!Q}j}4w$hfBCVMra-bs(>VPtOv z62!h1rX$=Nv9u?`-o=$b3W=~fT?k|h5T`mtJL=@{xIP_6&oT+81fxqb%?+Ij za2^p?6|DlYM|Mc+D`+dKXpQELHwJkQgl#$`spq>j;?;99$*kvs8}*#HSI=jyh^q$y z(&qBnQ~z{)yhpn$fUxSyqunokYD^%fA)jEv)O((J2s z_-;aZ4_T)nX<1nCqw$7#n$6xJxUS_clxqqfSARPFh|Ap}^5IZO7iy(+;2$cb@YT>C zIY&a6Ts_nch^vQ6Xm<5bDG{^lkTz2OslTCz-0nj;1E!R+KfDkK@m0 zAoT3NQ>h9al1S+`jqHn*N`o03iF83(NK)DZ*<(^9)rGW`26OBosK?r4xWNEyJt4xu zaRkUbAbN0oRn>m^jaB;PHH>)~ob+Ai-yK&^0;C>wTnT>n!p9r)p0mnmFSi15+e`oW z`wX#=4dMPz;nQm(yJ(-%M0UByXd=%8;x>`~ckVSB+&mrT9$&FO3uD@<{bBRS%;VL@ zyf;H?WXyXVWOS33({6t#r`i1q(O$BIT-n-6#O<2y2I9$9=BOGNsvyiP~0B!@b6-doOwv)CZWM?2v!J{0H;Rk`_5n(g397rJ$J>I?B z6f%x?*O~;jNGHHUsTonA#-7PrVlh3k>>u){@qKpxaFPLLuGNsa82JlqH^TfhKZEjtp3t7Xe*cD3vr zBBqvQk*1AtmogmD6N&rdY7jv5#KjLlPh5o$C$(fc?2-o!Z6F)LpL83ExtvEG@W-`| zqs-MhzVKbh#AYIHCU!8bdQw##Yh)rxq^3+n{#Lw)rlLK(c~>?@-!*%v7W zlPE@Bhh{Vgb96|;wWS)_C$6!hRlxwMb8Vsz#Tdy zVW2wR33i_txCSaGj{&$UrvQknaz@hZ>di7DHK`n#8=S*%L~q`XTJQ!yDoNowRFYx% zc>Sx{j~GhyeIQ;>+t+CZ9DfhT>{7*V!!kl2?Kob5WrRNKjp5EEK-}R@wGAdM);S%g z_z367)_Sl)x<&6%Gmrkm`WN1al3B_exh1oj1)!DjW}4lS*+IlCnY4cU&4=wl8LJZ< zo(Z#)K)kx#p2!~Sa`rNCzR>mf0D>)bk+rPU8gVMMM)pZ2D61P7fUA{v0NG=joJxJ7 zmeueJNK+D+=-v=kH`^1T?)@1yg+O!%KCY{WG%KjXk!Drv%j57c#trIAAk&CYJ8uUv zk3s$3>J}Y~B!2Q}Ts7XHC6TM<{+EGy!qxaOM-oN24tU%UuG4|I!sXBTCaz8b#FMxc z?hF`K5-9@m-)U2G8KmW>M?LHm1H><_n$!PpWBLE@mqD5&mh6{M*8t*uL%%1MY0gH~ zPO2Xcg(#1LZf%D>-0rkcwMpEe#(upMP-*<*bj^{Da0L)ghf7EJZKosbUveGQ?YKWw zx6*)Y(A75lB6ROoBChV;3B=XC!IKQ#n?uCZy=HGd(q_aSbZ<9!@tWb0Kx$TPWwe!M zcoQ@%8+5NDybXjoIwYqftdV_IxfKk+Q@Mu$V_sS!oa)F7;JsH_;PlPIW z6p#`ij>?T*2#3soy9*#%tjk6SoE7bD5FF(y`6|<)d-)2XPh-wl3U16;5_e}TeVd?0 zeXrnSZ^tL^iMZ*6H5uee9j*)fH=UvKGQ zD}2N!rc~!O0S?$0S`%1zez>8G#kPKlvh+j{h$n(OO%WtgqXm*?A6oT!Jz5DP;(VEzF@$ zIT3g0vk-{Ge=lh=m5$D5^`vG|95qE_M z+`G=@9(v~<_XghYaxX?LQ-L_hIVz8BjL+rVZXhn_GQTo7mq(;V&h1fo6u`@#nG|JJ zWX8FiEv#U5BtbaMkpruwOZXS6Wz^l#BSj1zdZkK&S*n5?rAl0vs>fRqyFK&PReBz8 zsq~luiP+`sNEXSzz}t`VbGF3D*{D0_OKEmH z=BtU+$lnKbxRN^zvb_><>r!=Tk5*_uu9N68y$?+YncmJuc4HhJUxGZQ-v&(`)A~mw0>h8ZNH??_1MdiqiZ61NG6gRiIgeqFf zWy&7-#(j76RR{T%y2-tFZZK>vBiw)I684^N?xsVJZ`^dqU}WGARzWT4=l z&EYZAJ5{rq!{B*Lu3Oudk)yh{ZJ^m@^;RM^vbyRpILZ+oBjWiTVF^ch9)YapNY5qg zJ*zngrLXT3jL z|ALPvgr5%7fuH3De&j=LVuJ(I0}rk_(Mg*VU{>gTL{_3BJE>Y^R}~_%rTBP}%^##A zo9{;UbY)~CszjEnYXEmYv)sQzWTiT?2~{Ig{vf(0-2vF6V)>7RVUCO34#QR#`3#08 zJ>iV|vtMq4+oiey^9D`+uh9xNJ6H$vJ(O`Csw~6wz4wo}b6>5wtGo=;TRbh0-OJAA z=JIkR5N1>+-3By4lk+XaG0I*BqL$% zWY4^ih|AqEKwR!lquJ%|JR&u6_h0FmV?EXBPPjdDA(%aL5}al~GDE9#>6~#M`Vy0X zYMrhI*z&s@&%MEUWbgX!%UCXEUHdbAcht4}F%K)JnM=S4X^aCKDl3}XL2u<&G&!Hc zC|y=;Wr^!<+fJHYRs_HMJy!h3d+0J)rUG_*=-$Z6?V*#P`RAUJ5v@)Bxu;}=u$TPX z$3A=x$}Nqdf2I!)hCY30(qZTeE{Uet0)V=`ys0eA5gqrP*a@IguLc z)_=So-qfv-Za2a!A^=%4L$JZZ@PV5IvHwDR#xn%!wuLd^$+9^b;^ zQLK?>sJOlzFgf(EVJdHr3$WW-c78me{sEvld3r+K2B7)g@d;IMhGWjfwX^pFKu0)J zka{PavteR5iKdqQ>6o}GJ09jvmc3zGT=hB2p>LiYSBK4U%-yfT3sL~OH_bay1QSq> zq}OEbg_~rVhTn5jQq0|YtGpH$IW7)-%N7us+*6vx9Y+cejmul<2u0x#k%-Hb@@ zI|h-mR@)E5bi}b(#(roBrq8R zKX$JVg5AKJP;|@TmAG9J2nF5i2Aab`k5M=XANW!`ndx{5{9O-zN72Q*Eut5Wbb=TP zoX5NaKWPtab$e{D7fie4;Ny_;;%Fug3O$^9zsL3#_$qtsw4{0+Fc7ONPElr_lTgCe%^WEc?h866#&RQD<28_5Z-- zLeC||eCZdM0{PN0Z_G-mp>Sqh&ITNXNq9M}YENE)qQ4WAd7vD-1#V8m zXCvUKqb+;I3rSUbGeU#;ov$&*|Hd(Ite;XjafEy{d`X>u_$)B=Y}g)Z*^TBW)x`js zcVCrMCtodQxXF4x8BRmOnIw&HnOaGw*F1GAm59)AX{^DsJEX;3zqC|6ZywQv(m-x*g!*11YEI;no?(v4ut+QVpk;xGm(P} zz^eb=9DIQs+yJ5a@6Ewcn^LO%MgLtnz>FHs)!08Q!e!-vL z(ERT1q`CkAGirR#TTtUUd*|;5)2D#ZgMF572zo63R(B-SPQYlsTKVlg3H9*3K!&rr z$*}@^{H>UyyA8ClxZL4Y7#iIUG?%D_0{WkKogA4Sba$^4o4ts#?onO=QK|qzbLmNZZ%Z*aO7ol%JDoBY+4lGkFtv zXuLL|9srE~4R3AEcpN3i;`7gjX}}X8hmiA2?@Fpccf%WzoF|g%9e^O)wPWo(OdG9KlaD0S-GI^g zmi^14Np29sX-C%1N~$jBBf4D6E}EBAPXK5> z<4VXG0A_t5Q}@MM@>YYwmd?I&g)aKdlIU;7gHWvgU|VLBIZ2K>U}y(3ZNpYZcNK6agvadkZ4fDbG?uTE0U z0Kg1~&Bww`TYUUo@hJy1?}(jJk-x>&P(btdBbNVw({Y;`p!rh~%XfJhJS@h?zZ9SF z1dw~c!zoWC)Jp(C-Z&ts4r!irkXKeFRi9NFS@r>D&_C43yTOzi9K!9w2mndpt(g9= z&|4pJHUfPP5jSa#OaX`}-~Q(y=3e9Bs3lDE0nNXJqakgQ>OlYz$aUXI2{jYY{0^k* z*Rv8T|7;+0;c(3bcn#n}AV)ydTEb9DtW;=k0@?TUMSI+>N&xu*Sb|_4zMEk>Z2LLxCTK)z5C)LjYA}G;u4U_6l z0KMS)v@hU?q9_X?*w5xIQDmQnD#9)2F83_ONUF2p}$xQz%ehD7+U!iTOhMw4{tbdV0mr;>CJNo(=potha# z>53~p{^|Je0>zBqYJtQX()_&#;hAGV#xg8TnTYa*7D2gY<5L;E^i7}sC82J`Lp>Q! z!OMdgsAd2n%D3jgr1C$3Pi0!TkmR2^GHFE2l_URzqfHW*iu`qtGf7+<@-H7_k`BBb zr0pk|r0w*0Pxq7;V;Ta6tuKkI4*?llYgxV~7!vxM;ZqFAh-0juhD?4NyUG9=t*Y9j zIomr#`HyrXdK_0WnuycK&j)jaL4(+u+z8BnCq8eHX9vQ^WR$U#^Rau6qy>`Q2S z>8H0V14yXy*FypJVj*6MWG{D1bb6H{NGp%MM0`s-V%7Eze6|8Iwp*szQT;Ogop02` z{KuR{(2PNrEP_^G77u1VwdY%bYUR6!AGR<44fqT_Fs|x+1}*qHW`&*x)Y%5)zAkZf z$U#7M0eQJwT&)Mx`4Gtas7-Y)0MJi&v^^F;{9N;PT(x=!2>mpFH?F?i284drd>h9S zi1u^O_i=RtfPS2-7VJ?-!^=!ZmX&61(JQWQ0#v1&?k_$94ICOdx~V|A`d#RlYoeQO zOtTs0U(I}GMO=LWU>+B5#m?l{tDDWd3`bc%&+@KPCb?N?=m1serr(1PoY@=Rp~XkH~rR>29s`<$^Tc}1gqwpR3AGwP^DR+yEn<#&Z^Ae8V#c)>W<4W( ztt$ynq2zK3~3AE{k!VyWJO;1Vz;ooobkt<4!Ck;u9G!41c6&U(iFgb%$A9OSCDd*}o%byJh6xE3mBx}O1)IaQnS&WkOlX7SEtk~fI7_sV=lJTF4&EQU7fs8h{w3q?O1p1jC}zOa^ZU% zLpan*9TPS}*a_dA79fN^ftwJ*4A@Bs{hbhU7(y{am;>L>F@)o-l$~XSPz>LfF@#Zp z_Yp!1*hvUSM?%P2g?69%qB93nZY-?xwXbDlvO$n_-{^G)rOx-h z=8?Gu!C4yiO?w?08e`0uC4I2S-U#Ngdv*PL-K(w7@ z*%_C_)hs~tWy^j7|H}>)ANGs|akU!&-}cOx;_7Dr&C7qpQrSyvGt*-Qn*4|Jb%Y{yX z_@73+ZrsXu(qM!)4xa}BQLN}qorBBw0WG&!cE^k3>MTI?L@YyJg#kC3S<+je%*V6b ztI$8d0lUI$op4O|3&$qas{s0a@06r!Rf?>`uR+JC5rNyc;Ulq(vTO?>xuFHY*`eev zQfRt4`v;^J&=T%V`dwEh)VBb-|HqPqms-m#KaK5VLo4= zv11VKYXL1&@XouWoqHEB<>D-uLJ_P0v|M3D-4)XwsMIa*v?`ZON!as}skeAFL;Lv; zEnfMa$MD*}6(3fymXFxToJ^Izjat`dbwah|vZYMXK6GAE-8KnjIhgZNQYOcBz?=~v zYpZ3~VD^92DX#i=hMORkE^2c0G32j3)K1n%(75Zt?9fF(egx9^YOn<$NZ0LgbuoZp z`P2PC7;SKe0hqD)w`602v0lRQQiu-l<$x@nL`_4o55)vJAS;-GJB86T?shVeiEvi? z6wIsvB+fLOnvo{x!IS~Au0Q};=)xQckVw-K{UtgyT`ti!X&F_}iiZNSUW{74O=y7{ zveoeV2roj=x-LqotgNUUX&r+GIjb(;WAMEV$I^%%06}tFsUo<&k?xm7m4D}(3Dxs0 zCv5*v7;YtUUBL3MgCPJ>$T|ebh<9**8$fKHgdz4%ZPNsXzY$4c_AV_CxgRCeRDk3= z%_c3LG$gG=YDUh27T5p~2}yI7R&Z%HX-KV;lWHhH1St)f+%Tn{0c5=Z-j8dPQcnW1 z^6FUrmFPXH{eXavzLT1u3wahkUjnk)z`CG$N<9b=WMRvcinh|oN9|JT*!CJxT~cZa zfXGS=)oZQ& z+y_IQHrme92b>3Ne+~v-})@&aijl6-={H?PPqtBd&@*hFUq@l4IcPWxAq%-PM)~+%(_m4+UV+ ze|)oOT}+{~0uh&IxCTLmxdeHJOG!Y-8v*4nz!hE_o^jkI84!kW;)*ZFxzQET)h6wV zuOs)rslLj1>BfX=i~Se<%dL#w_+Lo#_0GdGTMXZCU5U5CuS%)@Yh#RV^YuQ}e_hCn zwS|r~##nYZmLW!_Zh%8Xg!(SZy6asD#Wkcc$D*8M?Q0Dv{q9bvF(+yDE$=uyhYg2r z%6lPRE)w_uHt^vzr+AjYy8o_vf%^=6^vR)c{mIyVjVMPC^EHk=Hpx;2K#rRc3Kzj# zO7l!S$NcSO*mV!&sQDpzN_rX0c=<4J9TqiM)+lnmMj4rF;Q9r`*qRl%3`G1k3C~)t z)K-{tJJo6&eiS+13B>APMPhfcu$TDMn9};OnXg(Z2j>1ygkq~#o53X$dk%|AIOJQE=o!py9P4toKq7mJQgVx#IThfik%$0~kK ziCzT+i4HK)^u~IFgh!ch7nhfanRpT)56)x3 z%m4}GAu|zVCOkrAMk*w|PDZxD%!~w?5xQmV%RgCX24=l{d*cJn3p@RvgQ&`)>{sj2 z6MPg^<{ePDxl$f)vOn1949oieVmXKG2RoNu`IbBjS$=PS$nwvD(-t|Ay@T-k{}K(1 z(q%S*_zQNRu7Qtk+#nji+i}n7{L#HEJ9;Hp&D7?Akh?h0ICeFdvYRE>s6pU>+a1dg zEb|NONG$`8U5O_vV&B~X?%o7;_OpY$I*>tOq^#Nw=T}9W>G)U-T;<<$e0d0A@8c_| zIX=V^>xJD~BjKd~FY)lXD4uCBH_s16W2c=B;ituW^K{d=SLliqHiD$t5V?>P;bFokg1tg zD)u~7S`LuohK0fw%-v`%v$A7HAnPSSj+z{Do)&v*Xc!^4U0ib< zHu94U>_k|jFVr#_yiI3-GMNL!OG+USHz{Q>yGfY`vnP|Qi2Ny;+$=#kGPwihf3r;L zjLI%#nf4k8iraFx#r&RVJ748cvpMYh`;DO{2{jBg-_x6IrMm(@fm8nB6g3Gw?r9dC zq_^j?gTd{&-d0NzdOX6(EBt&DKEar48a^}(XlZ2(_%yE00}L2w*_Y%0DVjT5cEiu& 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

0a68U1NHlsOYy9=A(LEwE@wQ#1ng~H6 zrI&JChZUucAVIFtNKE z9~{6QCZS++UmgZE2afqgN5o5mp$|BFjnuKgk*>Bhj5Gd?gKZsZ2Ak6`o2DilhWkZq z7cJuJ%oC{XE*wvUS#!qe{PlEyCsN+F+*Iv_IIo%@<<~S?#T>h1@SU=XV34kZ_fEDfKXr6Bq5MQN;718&K+Buada`i#9iz!Z zE{!QYeQqvABfTSzmCiVfSu5hozpYS)UjaZ~cIe(WO+_u63Xr+z$m^DVsDNSIRE^>n z*R!bjrl}1|@K?T8NP$x0md?PgohI|n&#NnG%2bE-jjOp!1!iQSy0?9Uo)$~r+bk90 zu6AX->glq?H#EDNp~bu^es0?{Mf?AEL4oUF%blaw9=|OgvKQJHBVRW)tPbd+cIHCw z2|=3|CO{-BHmy8<(>cqQ_MeGCy$Yv|H^ic^N?}aE5WPab2KcwwQVfH$F|%Z@-$ZM> z3$Mgk3ZM+Ex5YX+gZcGoe<9?<-9-w3a+P)t9uzuo)h6`%Dl}*3V4UFZw9)WQ^(7zv zH`VWN3ND_x;y0~mb7_PP2dw1yE-{Yfilg`_F-ylrTn6K(5Rz3ezH%&&Sqt}_ErnXOTW;=Ys!Vk%y!XvypKp5>zK&x*9#G5dUgjh z%Yx$UdVm=|o8P_7JzPXetO&-k*}co2KEzFQ(1Nz-ZyS5f;tsxq^%7gr2W6I|PS>h- zVxzl&aNWRMTda-9#yr1Dx+~1zs|wov*DAXNN&Af$Ygtz44&Ot%qLNo;6xl3a;(^FI zA;z&^Km$ESq;39Ur!40}BYDHG4mrS3^hTfU_i^0s`0Fo$uZPN+&oD=ZMa3$ddS|}m zAJUzErS-G>Wk&(PjMxZ(T#jn{1ikC4q>r*+xY*~6W&t7~s|b@GjjVV&O2 zXCmw(?&f9&_gvh&10$=yi@|b!=3W3JkqV(Zy`6Vlp9b$6F3a5 z_bX^<3~1c@fhgxb=uFAOYghM?gjEsYd=)l~=m5lo^Qm$R^qw4FVeVI<6ofM=UB7!H zr0xWcdu>QMpQgIa)kZo$V;EyU_W`7{{2V=I-kC~K?$Srg-N}&09UoU)qoW&*jwWPy zS~U1<0eXjd0uenUoTvYjgE@B;h8u=EVj~e;8o7TMg8O<) z1efVYNI=|i$V6saaaiQlZp1Cd4$W$)a=LLGLJT(?_> z$zV7l6c_{AN|#n6TbFLl^ZIp3HQa?C z0FCkUEIa_}YnAaAJjU^|KwelK%q(;yN%0E!L{s=z--a&)6#7GC5~CMuOT`oa)D>_} z3qNgFqCYah=D)(P%hHT(^*5P|xyb+qTVK95n0O@FUI#W$kj>4)}R;g<9wV>d?Ab)cjzJG55v!a zTEjAK!QU3+*n2pjG@C2U&rCSdOiS3@Rkaa)G*-~Smx^}QUf3fn5^4B|g2+Tli*U^D{ht3fqp)P2f1x6-STgtM-mS**gxG=~V>@0x9Ngy?33OIX6XPs(f2r|-7Tzpqr0fuR^k@WZCF+4dfuwi$RugO2 zoX|!gE?*SO@9Qpw9D{wg6q{=)j4J+{KNYY6!&5Qa&DN=Shf^_|Q^8-q+1C`NX1iCb zb(4SJ{h-bQu)f+_XMYdr%rvpFOW{9jM|5$=5aX9EGQiE|G-?;!hIh_Pyfa5tS_OaWKI@cI{(Lp^9Ak? z+o56U?oFbmO^6p!o9=B{l-UA2pG?(Dl^NwjbVTP(MyreY=i)z(r$$fN-)CyUI=MOA z&Zxa(^`v%)!z2NmH<^VdMZ%U9(Fe`i^FW^u$)NYSJb8>Fg4AUqf=K_ZiFhCgG4ftT z|CTrLl#krN%h=OC68x^SgbljJX4AhN+y}f1mUA*1_B=lFpJ=zNyBmkXb`Mhl8+~`M zl(mqq&Gz3vp=~fkZ+Y4^P1N4|r5}Xe|9NfK@&4<{)r;G}iwkbzeU8BW`brdpYu2I# z<9ugjBDpr{UgwGZjb+-SepXwdEK=-SIZ>yAYwsMau*7GKHs^P%nORLml=_ce%)fIq zx!H<|p`tik>%H638uLOpCa7oZ1p2{CtJ@EiU-F#`!C6}Yvpl^)89nfPR4Mre7XBk-De0w`OOF46dn-VuNSyh2QIo z^x!dwgq(xlxDMI_=3|ETpzjMb1;I9*{lUM7gTEiBC4f`g3>-7?%RXd+W#jF@_Lm+fp%fujeRllkn-VsbuxZEpCQ7LAQ z`nnqrV_w-L?n*F4XB_Iy!x zDA`1Zqb*%JZVqKcW1MX6o)r{~9usmtLUuxiu>j8_KYICLC)HZOnficL;iv4F=9Bd)IELpSa)SRxycS@ z2rUlw!kJF+R3ZB3!Ht1gTD@NgIu+E&?HwwIQ*|VIDjQOf3{D zfw}kbN(#Kb4z%X!iIOFs%rJApw5gG=3U)xn{K?h{STaiaQ2DG%1lCxy+V>Y~5Q zkAv3Yohx*;)gU~PapY%V=CRd^28DfW;63z2{gLMZDe(zOG4n;Q1Q->|*^i!sQv5&S z+eaFeQPF&gFt*!)o_dcOCGy6e$(`DtBF}k+8@OGw_J5hq{sEY}iP8pJAib zp)G_Ph_t((M(pRs%3aBAkd}ucaHqahser<{2Obn#YAKITw#CT(^kS>xU}~AJ1HOZr zBby0-6ixC+v8!xoX=C2rdSZv`;9Pez0VBBTCBw*~wKSq<5L+ud5ihsyu^qgQ* zi3jVx(gV}Zm!8yfNWVGFN_>zurP1v zqktJ$sH9R`OTb53vojGjHqAs8#6ZRjeXQhZ@?zb_NBm1R9~Mz9;^Zt`Pt;*7c|K?neC#uK$kSlmzb*<IhnclWNf3PJ;wxBDo0*&*+M5oTZsLq-j!4D0P3Bf zEvcNa9;5MF4P=nv5iNQ~=xpi4JUif%=s6eWAp{3HCNbzbb_!k|QSlio|4gWq^mBM@ zYT^fj=%Tdp*|iMlEc`=u2>x3Jk*`nJuC+Wq_NMHWA=%H7qTlP&8cYPW z6DSe}-M34k2b=cg=>$U4g5wj)E(N@661tdMz`Z&h(gt{xpcAbxaJnwkkC&&j`AI3! z41uT2Dl|!_qdS>hi836o0Jz9aPUEbA>Gl~`w>Mm8WV94_#pfHB)$mfc8b_ETxC4|) zJY)Rq{oEd_?}3$21gb(27lqluBYL<-zZ$3G!C1*?%df<^+s^$EvtnmA)?&yG*M4WH zEkO6=_X_>y%v>r6tEZ!)tz-n@`3S-eXr9xeFP*87hE_Mu%d?E*dt4^uZ%uw59f{{; zPtK9Jp4HBd$}6u}toF~kCbm8XM9MB?>n>*PT*z8vZbaY4wH~ixD(HFUWRM-52cU#2f z9N7sY%B!dAL1J^R5YTJQMFP8XrG8PiXQ7fxZ5^fH4f&i)xo7hWgP%uvakagooD2xI zBn`EX`qQh+wE5-sU=?}4mbcBWEc%txW!B58Ki6uk)!DU>WQA&T)0QYLYEGfzH7!<= zK2yw1%R~PHpK#lHpb)OUT0C3CU-y93{X~9rdXMyh>@hnkApQgy$)`&eoo7ptyg}QxOoh9^w zw*xui2E3X`(uutgPXbWCZ_sawp9+81>4Qm74mzBTx-LPZ72Iw2?!27pZ5fBCeyaM~ z%iS-p0)+3_755yZbrs81=7ot)+lN^BZBv6E6uJkf=cnv;DU%6{;T%6Ct=C(p(hYXw zgZeRFpyT^#o9h4`D7MBikd z$n^)DPPQM)#;r$0SmEZPquSlA0qR_A=!=x1AKD8SQqqSrMg~4g@B%j%(|eEPzns_0 zPw6FgFh4EhhO3891=29foG*NijXX)l#>0IS)=AlT+*JTWI)gWyjf&&vIX-2O6O5Drs^OVYXSLq#rP`c5SeG!onV_ofJc<#&_F)OP0L zzEC#igl`Z1o%}_n&hMIaI=wnA?iKWs?4LPVvZLZ&-&^IsH$VPfU1FcKd(eN68r;c8A}qct#rXMHTU^evC|$uj z>DEJ3V}hIb@klgd8pU0{ z*NdZ3+{O7<>GgcCxS3P~f4S&Rt*VO>aZXc|jgzW)cs|L_IaWDeX6GEGoMYNVtwxo)Pt)X_*oJi-fHE$GXuD#00>vro~00sN5h@^M>7ZnA zJ3xj6bAj-D+ID#~==};ENe!RgkqV#6?B0>Pk-d9Ey_=)n89epw?5KBd_}-nX-n|y} z?wtJIy-x3Fb#j}rEPNXDhGaauA4apwm2wI#;T80SlVlqOoaR)rwzI7FqP=r$o3Szu z`yH=#BfCJWb!-OSXAwM>;Ar*h%QQqRcRuL|8$Y@#v!b6#-Ts&=tMe)8sLpX&bv{y^ z6RUzs;Cz@>=j5nP)|{xfLpo_Xz>RixOig0=Z2dC#Q0J*fucU($Kubw0$#L>2V%ddR z7iLOv9+I^kJaBHSH9VutDrh{X7tv^yoQr6ez}=b6M)6;}TwiDhXTuHno;Kd}9Hie|A18~rA{k&4k<^q3m+ z?A)x5Jfay<+J{DqxKAG$zga%maA%aQ*7PL>ddoXAOjsV>Wp(k{MBP}&wCBe9Y$7)n zSj$;xiwy>y?CI}(U0QFV-^QV#8aV1iSWd^Z=WXbbTx|G5$6$1+`-CbqK7q!>MAuoH zm*~7!r*!*Lp)oL-!8|_jigG6bC}aVBM6`?uc{+v0oz{Y(PBGs^6~+Mz&stOs9QL&K z71#01E6fJ-_*YYIvp3*ao-6dI>$zF$5wx{J4y@=xQsn7d&~DK#Hk;bd|j_G2Hm9Ll_Q(JBAec zf5tc`nS&q5})1 zTlpM|LlyAUYoN4cPzVoQ>tc+KFY_)`GCyJ`qGr=k)=yGwbSZ)0bI| zM+Ej}z*;(2N$|V5{@2a*qkh9bgeVr>KyfU(qnRV=_B9jhq10HWMpvgrOTvKQv}7aA zM`M%@b7l}1NvG5tP{}lZIrZ}P^zrz5cS6T~`Kuf3gpMGDACKn->&450aXO*9U}%nS z)D}63-~IIa!}0Q9=}sXaNH!_`v%pLmj_db zu0q_FQup{cL%Qn9xF@N@uu^CNl#NvJ)Kd7K!66WSkB;+(4>zb9nW^5EH`d)$R-wYN zI5!}fGuC%HnY{)+EqEX1$~~MH-ejCw$RRm5QNM19;!u>CjGmSjMa`WhwLSugX-lc~ z*R`F9CDxnQ9n9BOsgErnzBYt-L`Q5wK+L!sgC~z6Z0M${1ALppYT81lCyhEZ{q?>6 zWTvM@bj(ektj*#o$$Ch*$3Gt$g@VjAc!(oJ#)b*#C}i1h23+$*(H8=MZJ7lb zf@4&Jmmctxcd?5^Zyfxa7o?f+L)obHzp)D$m5h&=2TTcmFP1=&8z8NJuyA`&GnJ$u zG1z>^B-~hDWY-<`QR=7OM@_8Vv2nHD09KA_K_=AYa(lVmUt|Tt=bJ>hbtyAv|ZPyT7oJFq?zjv(?QM6}dmww@M+R!jERFB6nAT)P!53>$Plp zEvk1#?(r1LwF&p?k^Ct}6Abl!l(B26v!{Ehx>mk)+yiC$-O=4Xt^qufiZn!iP^8=v zw_%lRJ1z1K-?mC=r zadSKYH@GWk>h-u~1;7e1g0IDks!#iI#=u^MVF|E(4HyD^fN_byh!mu^xnKn8j3c$R zX#bAbl(UbdhomgwGkw6i|6HJZY4|9LZqCtv&!+VE>zq<1kU9PN*O=3t4JxWnVON9y zF+tATh;Zf^@0PoCx7_9L7Sfp;&@QSFka_xv2Dd4I@Crtc!dU{)+)R(yqW2=< zVwUo|WY>DUX{7O|LM$vFe-&bVSZQAEr{4bWu{X95W4mZ zR8~R$)X3$oP7TWB#qL&l1oTfr-2N=u<0yLfGE~ajyO#=r19{hkI-Y>40L#HOAYCG3FBluAvVp!f+q_<;@{@*){C>VERHIF9V6^55f zJh4wHvhCC&l-rBkg4SuE?BE($Be=PZaC3R|O9(jV=2lCwiSIX|94ght@+6$s^Kk|e z=P?s#arNtjFoo6MIjtDyUQeE|oG293Xkxe{-azG3Ld90!-VWWatCyv6%R2_U(@|Ed zeta!iJ>3&+YEkJ&Wo%lV&Dn85J-^KZrI@jPu8x6ES?7*F%wGPF zOLb)g`=Rf47+XN#y`d?W@KG>?mtr*-Fu`sXEExCsxCUy#gjvkY50PcoHgKBvLLJ22 zhej<0OA1HA#nO(sw_2ZMj_-`Z$H#NLfQt-AY0)8yC(GT2ce7(}QL6~ES>WV3h&}$SqK37@xP?}-qGtOaEcFG2|JK=%!A6JV zA&KPE^nM0!A3~CQLhZo}zP_2kVUz89cbnp=`R>7FhL@%8NkCBM-o$H-j^M&J98!Or zGN$(mwr!%YkoPWIYWQNPePYuw&>bj(ucZNSF*v>qfMxk|a%<+o9gX=$VkL)UMkOC( z=vRw-ymF%8u|(*L`eP8!>wj*~PXj$2QtWnAV1fY{ui|c~S1YIr_wJEqbJ*1_!}o#Q zqdt2iWDpZj>MkdzjXM@|dF5X}osHwp!cK-28&4x;UOq*w-E*xQ-A~brSQ(fDta!ez zg?!hrJ1|D`_KsBijyTs}qpc&;^8KJGPq z81-4nqL-k&r53p>j9yN4qkl`k&0YG?&(gz%ih;24i_>iL)V#sP!On}RYG$f#scz&= zU2b#r*fh1$Txk`&@e}vRIheDV=~Juj(M6Ky*(`qkukk)GdD0_?!*S6&IKlOzuBtpV zX8k1}&?e(v3*@ckW!%VBY#J}0;%wGjmd0P)wAM$#o-Z#>{dXdHeIDHWlH1yf>)iw9 z)#l@R$NbAp=T>?~<0f;6zg6ye%;OLqX~s>6eA#5Uh2lC+7=PgSs&V5Yj%dc6d4@l# zRF*H8Oaao199K7#WH_^MRWm$He&jMw$r$JT<>a`$0Yc23gbT;6@{YQr)AV3qN<>%H zn46hWcT7!67_+=oG$z`(rwbIz1tt$Vo%phl<O$-L)l+{3>y)4j1PRmliY%TwC;Z zuE)kyPv2uWISvY^tz_@mo=|2o zc*T>S`#F%-&V?lD=@k@AuAVfHPZp%mC0ho#5#|U4NL2t*#ot=Hp>8|h?tkNUbpDZoX1F=kFmzEo zt~dLizV72{;TyH;@uX&Y-WE?H)F??klqkANP6ACSemV91@HfvVZwX8|)=q8~_nS$F5YRQMP zkru-%?*MntHsOc=#vQ*+u{*w4&v{~~t1tFD;K>Po2Yf8$Yn#JcYBY&vLEC!~lLL{k zgTl<-#9W{*^&}nDR4-IDzbJ5Q-z#Wtk=sqVY?d-9K@XlKQl-Mr%KQ>GhbFK#bbr9u zfSaiBd+s{xL1Kt&ENHSx`Fnw_>yGY>n%YEfM-S!PsEB3PAs9+vCjI2dv`S%Wt-aLF zZA+Y5)||XnY|d4fimz{-Z(GMYH|MN#tyl@HbA7Hu2?7#LuFY9zk%v-^#7%x}-a6}y zqsRctj#cJRPV42Eo@Fnc956vlJZC$zgqUgaD6unP)8w_L$lcmWu9P~u2mdUW7?<0+ zLyKOB1_XW}@L$oqjt?ULew7an5-qFU^*mlFT5*%ue&QynCGT_c+PG^=HEsRf$K%+n z9g~fClrI4(J}YZ~!A~#52SptkJHSH0GC&uO81!5G9nb1L~@EYp&0ei#`W6z%1a&#pQT%DRSo&5c_`)Zup)!=?y} zT3tzP-51#K6T00U%^q}qyA>w3#TR>;JK!TcH>h^%kJKINruYjVU4Gq3atYARb;Fa@ z@fiBD^N!(V40TJc8_mo3F&{*VfzbkPXv%UzpB~3vEX5|M8%2F{i!Q)-hP|hc6@JBg ziUSE`RT|9G)w-i_9hFY>U!sGBzS2r7c~K?ne_C}=-=Eo>^$6rYt$5()e*LKwTc4U~ zck_*$NPYCV7&I5Jd#upk&Dpu#l*`(+lkxI)vuJZ$jZgp{Eq7&!cu2XoGmx=}WAsI? zlLkcK)bYBCS8=rMlV5oiUtJhp#h=gomR!a2nJo>dqsjih>LPnvZ<)+zme0(6avQnx zzxo=!lL?Hj;S;{%4u0&g%pLq5e50%nhIeqiX-%@Rm&!fKqM4N>DuW&TmAd^HcKCZO zcle*W7C^b|2ip1#P%fKCF=eypT5J~DWmBAa#^hYK+tk4ar6-Nq^vGRbn?lTlBpYnX z8($kxMxklkp$9XdO?2FGXnMk^?S@tksoY7PN;bV$v8$7>sU)?5#T!fnudm&~81C1G z5Knxz%9Lo*2?r`is(BT@BK5*Qa@dv_nh}4s^oyb1I#fv8kY`r?CmLO@7FIm`XuM`Lm z%?_FacN*hGBl}99;zb=anF^$!h~4S39-TK?Xu6DFWJFgCDx$)ZgqVl* z^_~}^S?X3m0w|O{tk)u_xuiK6mkw-3@AG5g8i0WzVJ=ylD7qF;eApk*zt6Eh=mGNG z8l3L3D)1HXgIThT3#s2ciCSy-+0;f*7L0X^HH6wU{9w#Q+J=EglM%*$bX$5R`81ZB zxXjP$m)s&|`t=N+W;UkYaV4k-fzr9Vj=&^_9&F+6X^RpR9qt)ac4iH{C`jyTT!V_s zAXyMNq;ei~)Bp@OQ;yAVg;JPsh!P#twol?uOFy<3Q4A-qW!afGGx-D#*BHX6KC-`VmC16D! zu~v%yR)lM+Br5N&wr#K!7__hV?Vme>l&1LNws=u=f14CEP|hr$TjJS2t=dMj+}ATy zlkUG!g@;M7wOlN)1GY%xJ*>hVV5;>4DloVpvsXH?Bbg&jRyD99@dITJNGJ9r^S`X- zptz>npE5qVE&AAQn)hYdswDdC5>~LC1W!wgn7$HbYsqApD|cRnzjyhyC`-FL;3f=p z_rO@W1M*=X(0c~no6XP`g*4lQM_`Rm4Ws9Q!b(AN3yV_NPJNyZu)m#!{mtj;#_(@L z__vO4(WwWaE=^7y2b^fa^~H9@?$=n3!Oz%LE4%$j2`buav&E`f4^d6JO`Va>@a=-}@+VvvgKVrrBBX>kwrB*7uSl8FEu^HGYF(9Zc52v4ps3I$bsQ&_gE4umOTb3mb za1X&_#7UleP)E0n!##hd7?Gv!)&S;`Re5-36KBi7c?bfYYF0Ds$MAAu?QWaNt+Yl? zjSg^g*?cs>3J|k_OX*Qp)}@c)%V;0sKZozVkwc|NS+K<<9Ns!!nBz<;7)CN85+6T_2p zX65jQqu%3q*=BEUz%I5vzC4rrMgVU0Gu(|Sr;iU=AE|DgVd(VncDmC|+hm~EkSK9C zL~S0|N1uX3@~lEUH)G;sAI134J6EoSU=8+>W<`m+#<%P58fn*EHd^hpC+@12-YC2> zS_A`hLciOn-)+?Ytc|(?#a1+Ri``oEhIPcs-34NkVM!>SQ+;8X*MyCC_G+(JD_JTJ zka46k+kRbzaTqD@mQV*W@;>-~sz@`En&T(r>kTYMI^PE!?(V}fN^>mOI$VUf!jgm# zM)Zm9E#aOw6z-l$L<|ttd!U$+@MTP?@VRNGhIVPfyB=9R4fQqN#nLRPPzyyOlU)mD z(%p;AK^r2CzHDyMDtT>+(v$#Vt}}(49ZKEeX~MR%wTqIH@hwe^l-?Lhpj*m=#*S&X zNN!)ipY$Zx<8liOs3B45byhY!vc`Y?z_2>r@WAk%vt@9^#t-ac1ox4mfdz4khx|V3 z1gOs)%-IVOdY+UUC)DDI!sffRCYR6?9ZdfT{QZySo?}3%5cttT;0L>99ps&p5UZ?x zP{sP3bXX3aUY{ruhgKLy$Kaeop8sPH3(oWC_~)o7<=@{HlScbiL;s!8ERPJ$h_*UzY_(Va=U%E+nQJM~J zA_8u{lT6u@aP=Vt7yQxZNSjYm=u@Q6i4FghV6+iM&FInQuEL$I!$W>|8(}}9)9y?A zqwpS@M43Z=zdz&)Iph^!&&&SFL%tLZQyud8Gi8$#uLGONYoy8ozaF{8Iu7}=))kuK z-*OfpFh-=^LMDbY-XI0x1yk&dKhQe=jIVQG;qCRW9U0fxW*ymWZ~@>>3@lF!T+3mr zW%m|c!<9G5cocV(7>^?HLu7z-pSpQLWh8N zLqwYzrL>=J9|I?SEw9F40qSJlNnd5=b-j7rDz?X=UYn=q@BBDikKt;N_g|cU`TR$*G#R? zJ24k9{aY3zD*`RY$ytS4F)7#uS^z<^DMDkDRFpcHqDsEJgH6ua8#jI5fen?+4Nq>w0QF{&;K-PGfc{+nHOg<$~RH8uugB~5rZ6_?W9rT z4>4QS95!|?|Ct?}$1Nu(WMIRaX8px623Q=ajNHknl#L#hK6JwPBSJ27hK){fMr$k- zRz$T>QTx+`(e?|5`Jv-SkC~$Ou)QZ4V>-j$7e9T%_{n2@KEE<%ys*YYJ~pXP8i4(* z=gq@&r^^RN@uENH|evRub++fSN zFk?q0v|@G{8MsBrUII=~pd!kx%<63Lu zTJaV6Jop)``@ZFR?-O0c#R>+L!JQ(Nb{AHmWdjzqMutOktBB_ghY1v^JKXXM!I%cS zmy7X6T!jleI9bJ&UXL^e{sjh%I}`_?m%9URhjij6Y0og+K#iuaTcdC0EBP?4ge~cv ztc%N4l7{KH$d)a`bl;>Zt)so6CB&aOJE}*}2W0QAYI(Gl%>(myceSF_-K*phOWv*I zol+D6`CSSJSFy7rP;=n9c967S3pnHLQ3Fq=u1oEPXWbcMD>K~+afACj_m&(aLnWQX z@Afz`+X~y5#suC$-ozs?_0E>_-!}-x29b0wiv3~}M<2PF7Z@aCmohnFhDklJF449L zHW>cJZw)F))afrsKZ zncJ)&4yh0y{C@c07Ee8%??+(5FyV`9*qn8e>A2;JGNPHebmOL-CQlV0Z40zDuB{=0 zBCT`h9Eyf8%ZV<}8{C_tu|+eExQ@~t+2}*UIj^f}Iq47Eq+d@w0#k=&aOp(KEh|t| zsUE352Ku@Pbk@8-VePI~9D^da3PoC0U_Nczx`(XoR$<$#TD0BLt+ck6(HnTTt5MGC zS4C^|m@_NS{I4ot0nP>_Q~nksNw_PrYcTp}RO3u)z^DJ4)i9WT4R=KYvS4$;ljCQ$GPZ+#LAqi#hq*ba>@_u6Ely_JBq z{tGmgnI1Y9}|j<&$LN&2%hKg@#GoQ|Rd^z0{}gR2r&7`S$@65`GXq_?qx> zgs6`HK(yzuaBS|9dVZ|TPqPT=FrRC@-YuAffd^Y3SRG*-2+UW2P&0o6+559 z!~_FzlQa?EY6vsf9FORMx*7YKHc5xhEui7SwT09x<*0T|J8aQ7@*Sx(p%HHojQJnj zFJ_|>i}IG@e+fSgJC?x^PPlm!VO~JA$(;d#O>u<4tF)#)$cvGeouXIZEG&b%6!S6` zO^I2&8!Rl3TAm0(gFq9~FcJJ7b~G|*Puj(dR5m`8t1hbph>jrvF@k4zfUI$&w5;=@ zUoeh>KEziNp}7s(+xyGNj<;YNhW$HyWhWhioJ1=qpV*>O(7?rLlcu`GU5PJ1TDDJ=oTm)PiYh|Z;evMqyqE|usyc&Da-=MDI zs_dHw^$QPmG43lBOB@KbTFfu7irt3iQ0dQoT*l*(Z6VNZ0pS8J7y1Q+mjq#3?g6!W z0SNTrBBfvS5b6xV5iKArG6;qU-6KSZp@9e`I&u1tcd@(4kO*93?E{Hj&#nXXGJ#&m zXLv)vmJ%JgdhVi#pAp7ng7^o+&w5jnR`G;B?K{2-H|gp)A0ZNZ{Ec%+wa2Io@MQ1c)iYg}NA|M<9Cs2=!J*d@3kbY3e{O7wnzgTM;wm+=!VHkNQ@i zu&syE+2yj0p<4?Kb&EUO07P;Z=H@OVm(JFc+lztq9O>>ycB}1r2U*%$`SW|H@2~7~ zv-*1{aBv}nawgp#shd0MH0I{$)&fwrI(E$CPCw^6y$fgYlCaY+0AMJW`4;j{eeq0* zs_FELaV{ZCF0x!Y{SvuDsM}M4OyIEdO$O@|O2}-$wAA6T-gz1JG<%cf9aldi6>8`#Alk-lzQ5iXV$)SzY;D zT}jQ)>&Z6;_#8+E)Fwc;+aWy?&6?TE*Wt3BNGN@n>BpzBJ+P9v5hic>(~*!^Y>cloc%n0x9^cRea|wIevG7CzK!G;B-Nj5 zb*E6S6?Y=1n)c*ZS5v^L_1A)c&3fT^dL7-H{ZIFfu<*eM4c7zp!7y07wm{u3fOMDMMSSq zq;_=RFl2-;9&o*1AtgcZDfbM~k2<8PFuoiHO^r+ttb|YAD@P0ZXX><1zv6zP!P)yQ|v_we(n>NnLW zC@DP))tl6{SBW83dY$g1|0yM;yhXx^DxE!x*;DT z!GgizS8zQ73T)(YeV1COTt(lluqk2n4o3>EPLk(S|nzf+Atmz81r;PRx#!BIaT_iHRiz!HMZlP;djYd`|F**dcrmG3r zo@nj%I2gW0w6gMpzM!O+)reANDp#rIRW*2dA~{kiK18NcEjs!R!|cV*yRt^qT~_P7 zn!C7nXDHBfiTjH~A4@AkhRx6wHtW4mCDVril-INf-!Phu%cI$NM)hdrXX9DT24&2_ zvve{}L5a-Nh;1$?2`gzXp3|?(n2YX8+FU?ykM;Q&U9m>z*=#T^&lgl!w@-??{bAVc zi)-*h5-(e+4e2AwI;RGM|JDRQu$6m3pQ0*#De`-LJIlxi`tpUs%f+MRC` zYb|JR^|XINnnJ5jQni?3QX=dXap*EXwNW+tKY(*bIZxDFoaV@(3qapir_QJestQSt zR0@D(D%GMx$D;N&gf5*PZKtSpUd>+aIBIrH+LjWg749j^odYM%+7F3+R<``o@oLYm zn(fc$-_=W6>3qJUi6ftWzC%Ar<$b*flyCN0abd#qNi}QXcjUWjPZ{m;lBpE=pil2B z{}fvurZ;q;sj?ka1_a8uf40&OrB$LvN&_p-jW?Zcn)b-|*#s|zU(ALT^@bI5RV>(f ze!;Rn%>HJNjTaj;cTl1q}MeBTJhORSjrkKW$eWw zeh?kdN`4fjxh*QAbl&uC>1s8kWRu#U3mdo5fYgQ^SRD_C-}WI2;V^s%hoK+uc=Vdi zg-GK$MF+RLIhp1;eW6Rqt+My@nd-56Pbn5q;^2*0q3&Uey(f#7Tx*LHtb>tm9RE$VlBEaJ?6Xuj*pyfNG@o zp?i`2s$RtBcvY{{=bqH(ctvjos$SIxMa%l%rlV@F>UUs=iG6zVV*(7oF5v<5%^5`ju6gh2T}idY@PIKrS*|JNZ{t zS$2^vtIQme(QxJSC!ehM>X%L)~k9?;Yg+U5SdD~=;$*HQ?Ke0sXJ%4&a1hLdv>OORWFZj zKr(EG7Tc_Id_##+%a1%~v#}_ejr-I=TKU;ns@b57Iao?3+VKETY!uj+id=JUWVtp=M>yrAvvRlPadjLNdjcx#Kz*u?j=83l^X_>ewEEp9T_ z@exf7Pk z`K;PgM*C-JPl|jV)#sIeiLDOPMv>K`j7K%(;`v9FAF8JkHBuT_ac;cl{GGn`Ru4!|svfQQ zERX6_8Z2e@s6NGjNK^773M_4pYMh@lq%GkN`bU*E_Nd17cxp)dM>QM{zwJW+=TUtT zs{=i%^(alWDtH`Pb)AIrrc=n9#n@R2NCl&}H=PlY*)7c=TdJ=VMEC;ox13Zux!5v_C2?Jw{Kd`cp z$Pb&{6PC#ui#K7Z8ZN2{rHS{2g-d+lG8Hb23Xwe<)J48g}DbY+~WNr@ZW4>IJ+7bi4sf_|?>XsqhB{Qzo1tSe~BdH2~qgh!>WOB41 z5TuDtyfGmJDqFK=3F)D4LFLSeLffW9yI{x8_{Z6Uop+{92UuQ+^MV3y<3-Aygyo$n zCJq8-66k#xUZ2#1gC;{^VjCV~`2^BCownbLZ~)YI@^v7(I0xO9@QZxet`;!f&*?(% z&I-uV z%|iY!3zbxg>PK-Olj2Ry&J$bqT)2S}4$-HmB|Ewg>_KiU__1>-2AR}5eFZu4CepWF z<3PcR@Up?ytt543EjuLxjV<5A?%Y3h;h1my{yQF z7eVQCeHUN;#}kYkh0xETkV* zOlzL>MDOK^@&|~vhfJ!x)?I_YTGt4OYpNUcSG&1V7iz_FNYYxk;R=*Y0!!eZaUf=j z>DimjXI14mj&j*8V0ZmfL}QiSieVq~Oozvx6u$fYl=XD8r_4?Co@2FP-uq@z#bdK8 zo=(Mnb2O>^l}{j&!S|3e3@n?)KZKDp90g|3>vW@kYBAlME8fpfNz^8O7JmF6t>ce# zs{*sroJ9Zsu`2zex-A;Lm)+{Rv zMc!rJovEc{0nRpwUj72~juxQB1TW8wtEYP;>oe@mnIiRg87`AlkiM1ICfegZ5G(}O ze~EUr?zx%l5=u!lSS>iF&h?@ef?8ybfUJvH~EwR^4_6}-DXXvp5q_ZHxC(le3%G2)_ zJk_NrLUm3)nMnTL6n2lX?qE*wO?1cWn`a4|;ttJ0$cPT=Fr0a<47%{`f5EhPmnPZM za-yG>!7ZodEt{6b-{iDx@?x7HFV;n8TseMavW0nT5VGTbtQdC;q8dt&lMDGWDSL%& zgWYM~s^Gmx2*SZ<~5a!Ol8Z67fOEF&f?A3VF$JgGXllN;;^yqNhSC z0H+~bwMGPr1Q-Oau|Ew5Rq&^opIN_jYYy<3zi%~&tBhJg`_V3ouzs|ggB>~td(*vr z0!0Nj>QBH&0DK>SkEq~JGk?HSCMVrqybu%uj9d`~5PU`x>;*}%bA{WhPB|!vBgg%5 za552jcd2kc27vx(u=cl~{_;>xUoHeijt3y!U|#|{CMH2m5J*YnBs5qEA*4bP5wf>Y z3`fFsFQ^IjD1=}esT3R*NH?YU1}TMJfT$BupkKZ~I>n^P2YDu`6xEj(j8zJvAUjW^ zkWna-?v{zRf`1DhQR!C%lb4zY4+*kLn!u1r>c!eR_+=?<#j%ODyjuvCdB#*kl8+-X z@oDhK5t8zbRN&~n&?jMphLE%f;lP@QVz|z$%nU;dODj>UMp7wOO_@MMint4l990p?BfZ6P zh#mxq;LNlqBN8_lw+Bu%ux{A8cG_WjE$C90@ht;7ufN3ojhbnRpL6(WpL0@2WBs$e(|4ga{ zeE|x5f<*c9m@GPq6$=>x4f-phy8=wHn*zMF=j6hf*tUBvvMf2A+yNLB)|+W9X-dvY zt<=BJp1U(+FM=oY=W=1d&l<&m5j>X8 zwKS$r_0}ggViDvS`kk`e>1WEcT*$SFLA8l~3UT|n@g4?A$yRAb-cM=NY;x!<#vqz2 zcL;JcBr?H+m5#33Gnx|t0HsnZ6z@BRWgJ-VDhFet2@>O_2-y3QKlZni9x`s6?A&6(`e^3y|b_zDF}<6$zX6NT%x5D z!>~f(rt6_FJ5y|X4ZsGgIniSPJ9iN;!}ZM4JpRr@b9i2Ax&CbxxVs$pIH+lfyLUzt zj-Q{3^Z~A!A+N%v?oJo%=_@o?g-4?bH-r`H;|dR3g$JSvw}usPRuDpX!YV9{DlEkO ztn?!>cnGo+YI58`Uc&t`opk6v_DFJ{Xb|vKK%e^HEI%P5rg^5jAEAaI*lkd8Wr;!5(y zyEQXl=c0wTuP{*5-fR)hb*Lh!l)-CcWpmT*lTuD8EC zCGKzl6_F6Dd7{t_?q`KpvizhY`rCGx!(cN*^Z~s!it9EJekZ=&Kp?%wWk+`xE7Pya zhR_%dfs^`P(j5lDz!U22ZnRLqC_{^30`VN|@lt56!)*U2T{jJ<;s3LDCh%2N*Zxn= z&bi!sAq7kr4-u3K0YjJ}XmDt&wNac0aHzIcu-aN{ z(K^)n#IaS|fb$f!+FCVewS)Tq{?Qt zu6qV31oaqn^U2fXs@Ko`W-%V?qa=1Wrxay6O)0q49#Y3d<$s&&EF8o-vS$X;kP5 z@}ry@z35=dkBV*>!VPXAW6R$%gsQ2kVqgs|cH-H_e0XqN@AUbSCFI5~Ki@?Ad?TU! z4gdK#VgpYM zz<=tqD(oi=k40LrUa%M-o!Z7o+5bhYM)buPT7Sv6X4whdLKX(!zLpxTNA$ohJ`(p6 z9HA@9#%yd8BCeftdGVpUP|Y%gQ-?vAX0ArQLK&CADdPyeH*3STHF!kz;=jx#b5ic> zQjRmg>7jt1hapArI-|tkd>EW;FEpyAD1evIjf!z<%ybIFHtJy+-zn}04!69+(Mp6LG*eR0A;@uj z6S|orI$p2-qewok3=Sk(?r|NOoBuFBp4e{ z0x(~h6Jv`f0iRKmpsLd(;1oo~o(02re;X5w(RgInKD!s4T=9@NDRpahY{REtoV>rFvG5-Ksl6g7%5vcFAxb({c6)^d(!Nq zK*|?}Fk9E%`au;l*nUVh(3GWI#i-4;ims#LshY}6B;5L^YW<*L5o7nk7$7@GgVlty z{-?`vIG-TT^HzDD>jI(9Jkmkp8YaH3^yUotrCT-TQ(aPASFTI0xMz$m!(lBdN9&N3 zS6MlKp(_{JPv*_pikkV zoJW}fqn)HMvQ}i>cknK@Wp}-9ewSJ3AK9AV2NmbGjPLjp17Wc4Kq4OR zo)1wm2>och1_&CW^B1yZayA zhTxw2BW~p4bH22=W+(3^q_Pzf(bM z-!F$7GduiQ<}Zx|{fcyer#G!d&tFblLS0x>hdUkd{m4JBqVN;6Qbj_q8G2&@v?mTD z#2WCrrHCBi?sZClJjlJN_~T*e!x^$85iuldG`i1O;$9;1^`s3=@^9l(SL5tT!qq`2 zuLW;Fmd6R2AHc<@Tss=h9ZZAH!$!F`Nbn4Ns{0*NAw(f`4H~Bk3{0mG4ASob-D@sY z5|02?`7z2L2(^gNtDq_KI?H(-!`RsJI$OTZziP0JFu7ol&9gRl4?Ho(l&sUz*Ij|2 zPWySh;c9W5X}Ns3((=49?Y(bA7Zom_{48*eh__ji-E&4oKk(fO77q5>A?|HZb`N1) zV;SJ=`fK)3hc4pg1p;ZkjMbo4qAP0!bN?B~zIhuNza4w6dy--;B`=W}*M<9Ias=Oq z+wE-pRvBxMhfhr(RU{&}vibo-0K6ee%y3jOyx{}L&pt0<58#PTw2Thgv6lf^hiXLN zQR0a|$mfb#HW(TyFto&;Zd>?2OFB#nz%e&5zg03qj8yl>NJ$17TdS}vyUk76MjjvMn)s1I>)zdy)THSwH2H4vX+$+jzO1dZ~OKM5hLV-DVcjp!wbls6t zl1(?id9xAcQ`&RJnL4v!#w0T@(lOI!%$jb8pTg74s~{tC;gMX}_j)$BSmn$V;K!E4U zrMT@>phjIg7u}KjHknl9=!s&={RP|q9`2>A(t%{$-;YspmyvF7DU4b{pT-VUkAn)H zPk-;rvb4@?gnP!5^fVu>v72m3+dE?8hT%Qa3qr5WL+I&=O6*QpkOKG7dALNF0ChPf zl|UW(@~aoMR`hgd^vcVu+=oXl2PSM;-L){PdYA*wB(B7sY>9dBg}}2=)ieX@h6xG>Sh) z@ksbQfZ}#vObn|pZn4tWd}#}%BWb)B4PW(SPp4>iBRe(Rm*Q7^%QGn6!^lnz_oMhP zzIb_D++w9K`_eNbvU}3-&%Wrai0sJ2jOw3!sbXpM{5@#+5=CIUoI}y5sOUwC=y#Bf z>CCv__rXj2kN)=a>~=bSH_Be1jGjNAvVGN9T@O>uK=ah9^Dm%+=;Kx7p>B51QMMa_ zDEhi>d|ht5NY~GDjoa}GT|dM1NP?bp{qz#dNEhqssU@rAHhU@5`r}U&fovyV?^eEE zHapx)@k!}gN-J#;W@CvrsXLdIojRod>?8hMkW^h$QO=$XK=Cz}AyELukFlA{P()^j z1fMu*e-;)vYyaB?3e?KEdFW?dw$<*rmQGQvyMF=JD>si_Eng*aUytC96LL?*95i z?ts@3NZ`2RBmVjxk2oID!aC>48O4vdBo{s6i5Z2DxFpx*BOYg+=nc3WK184ieF2A& zr$~Z~n>4>ZYi99h%JJ$-6IkU-*q@)Z5{!XKNt;SQSZ6>bWzSg|cE-326T70?d%Jo0 zGN}F0%1D$Qx1&tq_`ThnqB2=Md%MP>vOil{Ls8kwR(5PsW|mVoGrf<||2lrSW-oq)fyfEIxd%(R)c-iHc@8{Rc2MP?)*3)G!}bp#;vo{ zan4;Ckn1D_uSf+w@UT6lCx^M=2q^4QF#B2~S7;93^t)GfMJRC{8Ho~`07&{dQ zFC<4Cya>UQkI2z1+!&G(W4|BPgxPt)PDL;BE-$hTBJUu&a43i|jpR$JaVIa-@!tDs zWzA1ZCw2>itfmtM$9jk1#K(#xhZQUa}hjJO=pj5rK(0gs%RFK zx@>1#;E(U}R32FXHg&co3!09gT43Yh&OGzyH0H?kX-8<3GrP*-uXGyL0-_=I!6yF7 zVic%yIX=TFF00!8b_ruJ_cH3+AMgPNxoZMEwEwa=SY!u|2yq+F&VKQ37wT7=ej$?Un(W}7#tQv<#(pudR_fQ&_KQ=) z#rpM>{o-hJiGDq4za*IH*Aw=OPPvSncqB9&o^y{cmgheT>dPtWLm=0$7xQ*5XaE`x~JB(RL$DUKaiu`p9Mgcpp$`uTu@Ahlwg9T@l=cf9$ zXIWd|3KH%(hvvkoC-8QCo8A8w!yxCHK_Rd=xQJnpe+4FWPOsx{`DZ<6R&rO-b)&iK zK(`DjpS~b`HE96Rq(ROaSXcZMvImM1{lfad*L$sBO)#ESApS7-an>Te_!!vu=@Lyn zR*nZatqoUfA0-Isc+LDlC1kRp3w;^F_QO_YLbNaIiHEqAnQ-jOp!SrN)#vYJxqjBl z$kY|nMOaG=Q`U+Fz(p!=6m24f|PeGd)4&o`X>H5R} zqj#1dNpDwuyXj;<+?^jvtJ}(+w`m@O8&&FlbaKR|{R7dSP88+eK}qN=J1}B|HGH>I;cbWGIlcP z95kdu`S*NzC;F%R@=kQl+X$UroRzYqHb57(vO|yfDr{e+uiDV%qmYtH|ETwPtx|K* zHNE%fK)rC+H|1;kv42#QJ=^86rMtUUsdOi@`sXvSBQX@2vv`3*L%Dt?ZqLOS4cgt7 zO)V>P%MqJ>dTEY>i2E-t#)lZiUX+r0EkHFo5O5woQU-2vIdR5DM%>GtkAYk04J#|; z&3ur18uPLm+_*%?(!{WB68#kcmTfymAcI3)Nv?H>hl>Y}f{PU$xOgJsB04y%1^CNd zVO$*DYNz&Rdl?s>a4TjjM5EHZV_Y2Sn&Cpn`l})??js?v?CZwH#h#6a7waeh8<*wT zFvr9@V1q?#4_2mNAFq9XiBn`n*)Y2DBPN?AdZ&`OlWekvF=1nqDI`bw5_+`6H8CHP(0ojS0v{7OcgV-2 zM}8_YJ2?bZ3k4;1FA3uPx(nLGJbm;{4#NrX7}60v&@H0a-ZRh7>~VRr7;| zwyLh{Q4{P~K>lypVlpSp*$9~nvyf??6OlQtrzewF?A{5V9jvr2=CuVWYh!gMRb!+_ z6*O2n7Vskb36b)(X%_R}QZ2;>AXF$g#>pZ*1mwwArwQjLP23)}ne_57yb|r+G*eQa zS&a(e&(l^&zj-Xz_`{S)*FL9o!3`wIhMRDz9y%E7=< zgoVPju<`(tP@YEp!uSm|ilL_P3zK(@g~BhkW5V-=eWI454c){NIPeQYd4wYo)x|&( z)bRxJI|?E~bvrQV_3OI$c>rw+q*CZOObBu_qA5ETb)3ndr>tYqx}`tKk~67(fff}OoFgVpJ_e)H6(;{nDVFVr(35YW{UTClA$1==utH z3y;ZZcztivh^TyNwf6yiK;EI~?62*SZbT(M*`pwz2lAF#xDqPDS$Md%eHfxa#B>-z$E( zz9uV6-wu+cH;Sol+iA%2TUp&+s@o~5tBmjaE-vwfc)dPml+ES)11g5GA`!n%On z%bT|<>71(rO8l8Tq45IFu&k{6g1(5|O&O+7z@9S?BO6-gms#2|hplqU=LH9WT!PU} zD&LlQ_!)6!7rxMkocD=2^ZTN9PI>a%QrRXdy@@kI+W|r-%8if)Shu z$)&eKCL_}Dv40U_%3h_*U)kkty1Yd&t0?jBD6h3Hjk{qBsV#j~zK&(RqHMeOlBx3% zUab1bK=eyb!EB6&71(r~(z~emi9f%0QS*u_^(V7eU#G-t4v>?S@a6dI@6M0VW4mDS>E_?C6<2~!C>H3}%S>3w6=k<-&JeeFb zIzC5=*RH8;x#wK~0XEh<|2z9_<6LjN=3mtZe?@fbdci(&yBzn2%2+?hBywi`pStPhjpR{1+9JAW;9SV;YC{GHM-umU0;kqgaC(Bo` zQB9i8QDa7gY)no5JiyNU0I*FRZDY!+HBN zlEUu>%pQ#fX{^IT!3^gT=q0(*W!$AbEgZ@{)yUKIRI+Sw?e+l75BG=W{lO!*Apq#VKk$iY>Au*UEp4jCt1VmulueN?7MMl(ly%9jsCY zOMkg@)h#241b_alFfV^z$>7k5yxFzQ(wAnyKsT)MV{Wx^5bgpLX&a*{1B$MF*WKK5 za*YgEf|#}Tv^mk|?x{07fC^wC2EQ zSEla`GuPvo#=B8gOT zxRI8-^|R!m1}*fD0h}`Zn+vAD5zf#4er`a!A``qv7y%8aR-0;5 zDk@np&Le9GPpBfUi;HqMrIn0^%dG0$;woW*v~C;>S^s;L!PJGkou@Rr=kz_Qu8 z#q~0RarL+lhXk^P)h)d$M6NAkb#qKBpn&`e&>0G7b+iB!)FegFM|T&i2wPSJn${_aIrH&q+pFt|0m&6o681=kUtXpp6Onx zdPsL|=zP}|l{%%ABa4>Kg`sq(ly090>biH#N#3L`3aFVjvwpUnGP-Sj`A8j{3^lRa zuVhIE3j8L}*X2(|oWJsiv7%#DbT;CYRCK`NtQ4Keu;@frd5aFUg~z#~gH`@c;+#6< zH=raRFO@&Q!ChHAfxM%S>n)dou&=wTr-b2Z_tQqiM#Vne*Atz$fEgncp|#-{WL61w zgk2!mg*&DYZ3dE^eiq4mbuUI!!Wx3zWNltAImunKL`NzDdEO1$uq~&_uD%#I`+cn? zPwD3#>B;d$SQ_^pYl7`ScU^D9rggIjH{ec0tz{LYJ$RZ#yNgXuJ-$LRV#d9`7^%{o z>ZFT*cahzT(CTGTeD>jH83|O{x@MT>W)yhEW{KUW9wl|c`?>< zO2bgSeiks7W4H^k@*(aTnQ9||JJ_z;-t*^6IQt=fOHAF}y%`A8Amb>ljZ3$7Zw1ZR zoXvVhRKYHY+^cybvh_R)Iifk-<%@&ejH@RosG?;^@D)i74n{^_TuX+a+M+B|Qs<5V z{7ZJ83F;C;CzYh=zo&Ew?2$zE&unZ}eW zRTI5|xc+5*=&airhlgvBKh1K_BVv9Io5j-oLzZq_@y1qh+yX(lSGtzm^yDQW85$R> zqQBk*i2dq8H$k-BM4cCEz&=n94uNI&0DECtcCQEdo*B+WrbH;c&{cNat;_;V4whijsnZ=lr}zWpbdMs6)fGs>hk7|j5=vq?usB1Uecz|!bc zrHc0^mo3%V$wYkmhW9SR4h$~VgcKbKSS!XWsB8t<+kv0P^2q_v zP#+i?|AAG^{l$NZ;fm6+PtoF9^eKR;=3}vmDV%JLdEO z8p)Q2UDKaoiT)<6(7(>RyiVYUXw}^RQ?Fxgn(qYVvK43D?Mgz~%aPlS5l1xMh;sV? zPml)^qjWC4BG@VCR?bxbDS>^AcIJcD&sUb{gH^fHSu2QPU(7(@?inIc4XazX8vV9aT#eM_fn2wuKm-~k;$HdR^kl-uT zyjMnZrv?7TyEj;jtmG7@Nj}ECxmdam#@KBf-fi;Jpgi2kO;#ErGH0~-=YPAGQU=3o zq-QzQzl1iOmGYeJxanw}*D}A>qR{f{h4M+3CGM2{@ru(AFd6*7)M0*b7%F^ zJ}H#+b+aNTT%s1^xwhqNcKDjo#r&`Sn6EH3S=q9rC6vcoXU$7~S?62 zqpA)*o(s3)uVr7lV6lM9+zX8F0eOx!lZ`klEv+0|| z)LiqDio5GWlz(*rFYDXm2^Es|tWenc5QJ6@aVB?J=h*A;WTrGW=o z{=d-=7pBZd?^jwTlu#r7${)164~M~uvWAjcXcKqQj|kRG!cR#;eP_-pLAIQdXg<29 z*GYP%5N@XIJ+WEx_Ti~>>L)j%2$G2zt8i2yBX44CMgvi#%b>Ctk)@2W`XjB0d4v@S zsIukcAy#}YIgXi_$DuuFaMh_-#KULs`9`u9tc~Y)#KDY zaox?AZ@-c9&uyf9JU?5%AN?Ei?PG{+z1E}oV!duxWD1)fzqIS8 z{-(HmRLspbMdchh7c2MUYmv~?RmZ*`2Yrs~nuD|Q<%JBJc;LHfBgGqg?e{8AzW&ei zPc3TyR=&LOv4f89n)xs0n-`HO;2u}sV7s_m3(8~ia>D+G$o~wPr*9Sjlkpt)Z(EGU z3jkqYFD$jpwhwW=N)a8;pl2L~!*wp~+oopwpkcVh)#$PvJrS2=4^N+|o83hb>d_z; zi)#0~0Izo8GX2793}2?p{Wq>D@c z#JhtByucrud4WH$gyCs_qn${vT*Q00brmEL1&SSkc|G{+T9xbxQkGqvT-kDZ@H6}keBL^dtuo!knpwhi%CMI;WO21Zy@0(|?)jQm- z>tD?@-tOpI)8`s7V6zm9ubf-eARb!KcO=$5t?rN(n;L-1{jLG8*yAwcW-o~P-p%l7lGO9 z{#SJWarn^=$fnPbXfKI;IU4qgvQKVCk*HMIZrZuKZ64}20ZXjhZNo{itSIEFO(mHa ztO$!K&LNm&r{vq_?H-&dIrS}^(l9fUX7UCbs%9TE%>d;PUy5WSi8Dt}nr0FZqRy0t z2A`^s>jY>Wqm6_dTe|+>O_F1nU$p`aVtsnm+&IvGwk(l-A#*>d4mgE?^oss}9RN6e z*O_|s-Es|m4esKpj)oZwGnPL0hb1^8W!}YQhMUn&t>@+ghNHzQM|CXuXb^g2B51By zVkht?!0_FckskB*9VdS{Fz(*$gTaSKx$mNk3Rx6hmNSq|E167&O8zQN6~TR|^WH=n zqg73jl!iVLDGh}08B!DSzQFt_pZe>IebTTz2%hShn&0c7__~sbi4W?Sf#KHcv@T&g z8WilEle%m*PeSV()JxC%2P(zo*f2z0l4>^Cw)owCK)?6Tx(t4NG!Zg-uw!Bowl8x} zmUtd4$?hJKj7t6_crc5tAXd9<_%@4#az(N)WZfn6rFtY(zX!@?A9bVE?PK4e5y38X z*-8bGxP2eq zenfvCag($nT7czq_h|X7POS`UwACHR4!|c=a(Hp_%cWukgT%fyvTc#Pl0D)sK7;3I ztMmUH!K`zENCPc3z*E7%At;lSu!}VrVSV)od{`t`!p9TvLEzEo0l1+Z*bj~EZua#C`rgXKeR@C5GTHq@^j`Q3 zlvi}92zExZbE74+&sY70dr%(TkGs|{neIRVn_I%bqWgWLVE7@4mXEk{ji)-~8qctoIprFc&G97uW-z=e*SLNQ!dBT) zyUaB%0N0AL%;s4U5N^AFwkTDszlGv5-;SPnWSnRwnVC#I4{S?sX#Sjg8l&X8O8M-A zWBkXt2KPG1otNRrn|4RGg?%gmY+Hj81tFDQP)Ywk*I?imD|G!#gI7Abi}dT+hPAlZ zRMv#Ou2hvlUaVBb(+#Wioqtg&cbG=}aoXHn4YD#Lyx*V(Ya4J=Lh#Y`9sc?jUEk)f ze*?|l=Bdz+gxkd659B{A)Te8sBuma3eyr1wRnuG1s<-<~uK)$GihpRu4op%i zDqXuO!ro2sE$ANdx73yg>&n>)9|5YnqU_VGqMKn?EXht(n&WXvOc$k@( zNsV6hfx076gP=o;ut>Oyve98`EXG5jsz|5;hQCm#(oZi`ais@IKLe2&lO{LJw0(fd zUz9HZf`tZrZi9Z~l=&9@NGvL|NHn-gwv2fVlV;8Gq$y6+H6Syvpy84DgR~q95!Bt2 z^FaTwGoSE_?mLTZ=2DJXJK0fzL_IBNOm^h(>DX9o^S)}aT=HUgPu=wKi@8Y$IF2v7 z>G*Oc8d3wyNB~71LGZ^tV^q#O>->q~BUhQE$msy=k{qT_BP`xyWbB<%O3!|{1d?ZS zE7vlB#7*B?rQP840X2EmvFR(WMCy$a?yT!@I{zye#v{T;x>2h^o%srKkL&8U5a!IeKn3TPyiO}`!t>PE3bxTB+Jrz6~^ z);(l2(;IXwFFqJ=yyiB>)W^Vh^?2F&m;A8hC_y-|0}b?8g@*=OfjG)p;L1f2I8bto zE@8_ghvB0UQ{wm!)(=p}r4il)%o)Ri%#aMI|3HHp}@qO*e(a{&J=W??A zAUKCe+`(7M33%z}o^`k~wk?1n4N#qy*I3}py=8d$Ufa|nz0rj!hEUsrwYuOhBS}}t zLEyX?+2ydJSD*xz8byWAg8K36uX}J``(7HaM_6 zxJm+yS!M@cO4VI{T|lppO4s>SL2Jfh)!pao#%j$tDPA*F`_;>+y~EcEYAAiMzcWGF zX{K&$)_nno<^GsYUMJAGl0+c)x>XhZPz%2aqC6=q4ySOW`w==iu;1M0T2+TaRxYy} zno!>8Qdi^bN=mqcunSc&|AK|`f!xHLwodj=h+5)D)gjC&7cDOM|uut=%(0crs7 z+sHi|uMwPA*U!1lFPL4iur|Mzf&y(H^#_O)6=nM(j%)_$z9b@O$uwSdC6Z%J=&K_a z@GJzT5_l?=rV@?|Kr!;NGFOE{Fk`jI zPKfY4Yf>ZM!YqY)SYC}G8{*7a(|lHD8s=@1NY;_)%M9SaHTh^0e)Ypk#7Me{287ar ztXCeCkh1AM%MSvxq}pF=qj(rW7PaE&{^6kXA5ny`pK!WIx45WLK`xIe=lc&9t<|#g zg09b7B#R15(=!<2mC9%nYv{je)R7`n|`%|N|S(WboP`~@T z>lU_R4?=NaN-k2pG_@fsv#kplL+VRx{wFy$OW5n@{#e#N2eph+&*Ls%Q5!qM-*6Rg zAmutDB5%+Of~1XF7xulHpctgQJsZO@1f&sfa_u5irN702;@U;4^j9x=EMT6PE`bMq zfP&AZg3-C~@W$|Sif7|pt|H=O(_Te}(nLZjdX+(}?FbiFFOm+$wW>pZ>^(Yg?(kMH z3DRp<^Iozql15ARMLM;IH!y;f?`?;Yx)xqdvlYBPLDp=4JEl*s$YL7PVIxC|B({Xz zbY#i6H~EPsItnCpHfEGXMynm~ju3H-dHWbK-D%xcjRJ zfMB0=?@Y%Y>ct5$FyIOpI3H7SFPVy;?}K7Z558!YR6pbgTPi(Hh7h-Ppj#Zs*V(<% zi%GW-a@-4J^7*}kPw_DC6VsKG##(H};vFe~+)3ef!6ycU2NA*o8EjT>5lUp|s{48f z2h#m=VKZ$1(OuUF!JpAJWdDu-cjHFRQoE zv|?}PNxfE6L(a9eMs|fG2@>}IyYNri zouDxI+5x^swj*~TD6Cy9Rpc0&N@{hrNV$t^t!h|mTS}Q|w_|)CB4I(F`o7Eg)c@c# z=24J=M^@HzDlYp86?bBP12qb}RqyD~)5>~PQT9J9g{9l46E}`-;kPGLy1xaLVyo{y z7bUXPDNcD)9c&Vfmzl_B&zdrMA}W?C^+!hgX0%1I*A)apGd7A~p9=Lf?3u+tRK;qd zBK=dmZQI^iKf7@vpGD6V4Zk(!uNajbR9xCu3wCieom4-EL9$@tkqtA=(TANg(E^c^ z7)vgz?RIRHOz&;nW4(!#oD=q6$pn2FB%qz#nH-uj?wN%EK)Dy@vBMeCd`MWLH{IMB zdMw+vUV>jI7op-5F)192HYxGyvt{`*=2cbp<60q=D2!RB7{$C_;qNTxFnh%JXLAr^ z+75AVlgscB6e1kjIROagHe)!qY&-cJIz4sPdB)-YbK4>{zz^a{PH4&sA(-1t0nDxW zC2i=(kxmG&iqgqHer0cOlN`VjD6}h#AHSL1h*LKD7`zD2Bg}G;P<6Nx=oHnL_0}T3 zy{rX|?y+MPG49^VU<2sXQ30`gPxtg4_WS}NF=gCC0qNhBK;te_GN#febj{Ar|2lRg zsfZg6ot?P(E^0e}o>muPP*#YSD~ zW3;xdk{$7F-<4&fVdnISQ>V|I7j3+G$JPAtl#v@5VkpbQek3{l@-08mHp>QDxO4L} ze}ZM_EIbLzy5kR{?A6iU934h&yL$_L&**IWYaxzN$wqjxR=Fzx?;TiJqjVCtsHW?n zmn7RnVKo`*(ueue%f{+kKTx&Qtj6#!Lx}@v@N4P1+q^jc4bp1jq3Scl274ByWL~9Kn<-PCg)JTWGam3G@7aU`aCk6s0DQ>T zDEK5gh6g$CXg$6PzoQ9~JQ6F@N|e52o+DG8nctG~^%nf-{<27iU{23u?bRvk5Q#;S zh$4Y#7k8_P6p^^&&IT$1GlRQH`ima!77K$;ulB|k5kK@g82vd}TB@_b7plWP>0iKS zu)aJeR@amd&JR}`7v~|+MbR7Jc09KzJ;7ao^5Hpu*1xbYdc)e^0NZ%H(gjc@!%Bpq zvx-zJ&F+o`=Hq%(%1}Jo-ES7~so9ZkmTltK`eE03xuB3FnQ0)2->tm0host!8X9F$ z+e)uFFgPFwN#J8TQ{1&k+KZUPrtp4D;?MrxTqYCf5+)Er5&~g=4yUHPe=g{w$M&Yz zr(RF5Kft1ZhH9_=NCCawiGko(d-Eli0jAHa7{`HKf-Qf3FTMDxrRJ*kIGXMxDCG0M zfX?|WA$_tK(U_}JT?y}JRRjuF;k=&oG2Dy5Syy2Nu_X1O^-GUAp zy@n3DpZyu16_oPT>0hB@Z-qJ=%=2YBF&A3i%})7%@tONQWOtlP1FqDYXDG$b%DI9| zX2*(5>s_1T5yRY17s(WV4W@Y0S>#RekR>Yf4|HEOo!n0m4uo7KTl1 zJp)43sJZr~pTowiq6^rs`?`62>EGj}&6mE~?#a0Cz2BFT$w_>=mVGfYV zDSfT&;uQ>wpY{npQ(n>6-9Kv$N|>ut?u4Zpx}cn}4eseb?+w3#)YFjiQ675>0S|q8 z%6$yQdIh$BG;o>{v1SC>GUdK0SB(*#z|xx`a2julA53p~3D?ZSy%&fLG+oB=8Kx9? zh!vvrN`cZKYwAp&cgAB8&nGlXT=ZBNBY!w8k+%G@wkEpIBLAp()_m~7&fZTkjZLY! zjTI*E-xO2&Fs1TW3JN`&EQ~Mj*%Z^<gT6%7 zFM8rT5A2$F_o_EUoDV|lhgS>s-yx~lD0b!17o>twgS_WW@+zCVeGBIYFfB$641@H? zgPoXt`COQrT6Z2a)4*ZLYo}ju0DkMND!*N5>+GeWe4_@kAFW^+x{57&1&6it-kieG z65@+?Z5TxnCSCB6CHGe?YJcG5NeAv+6$T`6PPrd0K%>h}y*?Eg|C0B3mX;jVMpd)S ze%yyMcBk&tTX_1Pp{aN`o%*Fe3BDKw?51a<5ti&5|XmE0Q|8U!2qD)u8tK~U2sW#=drr~5!f#|k0 zOa+su;QXJ{&jE;g#AlD}&zi8h99rK*#NqX7xa+@Vf&i>_L=CQlt?rw(oD@dX&|<25 zPlj1fxm(MEFVaznKB@Fu947j?Pm-1~c!{TfO?hWIAZ!aQJrJ(<wVBs5_hT&_e(g5F%YRF+3p zgSB&I>dxm8cki8Ao#ST8)tif#`+Hwbk?Ue<+w_;O;Z{@;)?(UTVn7Y6u_>;o&;&1c z4>d{Y30{{8PO+T!KN)$d6XEyrLWPN?F;aqJQ?k&$3VF?BSXD^$%>jRf`vnPZ4#2pG za(y4gdSn&r@e|WL3wZW{ieP^xFO&QFxg1S6BWH^BiWjn$v!TjI+owE@U*z|3A74<) zK5ozVaYf=^zioNAE4yYD!i?7Mi^9}Auk@YRo``0Jj?fxEht(>XzUv_?nq0^mO4qZ$R@UJ@Y^C4>< z*ZcWA>W3@A(Q_YLU8 z?y(+??qH78bIjHr3n~A%AGaRQMxX4~yG2B2?D*v$pn9vwUN8Gcd;|~U2Djn7Pv>Xd zi3@a4OU>a}I>7xS)tEj>Ru^FajYozx5TNwMUTK!xe6JS_3sHcQx(7SeooA}&VN9pe ztu~2)*35~e3mxi?ku>3{B9Q=qg!C2zRzfp^` zs2ipIsK&j5EmLcwaCw3Vmq)+vF%p&TjyV`Dzm7Myj(j`R_@Ex?t&Wvwu@QGP)wjJz zeKP%@sFDccfMiB3ou2Cr2MHL!6F4Ygb;XIQhBao8qEzKtGnyY;H@b`FpeNb^zwa!H zq7`#mi8gU<*_v?3RpdsUQ%h>vXR|e2ty1vSbJ<#d4iNGGyc^cv!50lf-^g6JAN0mI zhM#Too;u0nzs=*(=HisqU&=c9P5nrBa=HL3cTKR1N(Bh;rb@w6hyVe$BA6PbRTC;i zlw`NamsTjJ1UC6?p)uLKd zB6N99wX&JEcqOZZ!B_5qeLeuy9Nv5WBn*R{hJ?Xt7{nU~1>eUsh#K8N!Q^tT35=c~ zUB|~skCk4Ma-XS{Cp>Ki55sGz(S4dRhvnclly+m)L&-~RB>daB+i3W=)pim7-79`C zkH%XFxLX-lZ7*IXV1J^3H3x#Faiy*37EKu1Oq}=}A z*>P=Ix*gvyrdAK^whG+82}g&@Uxb5irCZmy>y}DY3%y?x!k|$9Tb3&Et_4}$TUNuH z@@0O?m*E@mo2WlURWmyY_Vx%639oxcdC5}llffsY+}Z~KXdLpScg5X(p9pn1Y5zM; z3dEj&p+Dy1YShv2k#qAP?y`7HREERcjCK;)1rx}5k_zVdX8rK0FK#x<%|wNr3J$Sm zv-=18_Qx-8zbYIjglaKxjU2~X^^I-aptC zu#xEhD7Sa&Pd5f%B>~h@qQm5KBF8lzC60NiHvPI#;r)!)=jc6yI8T5D+UX5IE$<35 zfUbJP%WZNx3bi2JcNR|AW9p{VA2qFhO5IUY>H&?JK5^EZhFLRbPwD=~YDpKP4T^oG zgToNpMRMGzF-dN5ReBk2A*V6S&v66IeJ-99s1iqKgFDgw@0H#yb<~ZQaZB)O9t>!d_Sn4-#;|UMX7YMuBL#y=t%}Y+ua+)fj%P&3z)c z7WdaZ-M$mtC&1VE7+|Vgw1Y!#7o=>CONMe0R=0)&aM;96ihBt z-B@R{Nt35F+)oqBrqM8)Vnd?4_h5Xsla_B)I4syRM|fa*-*7j6jcC_oLLrwY(yk(8UYuH92&@RmGK*x?QQhvTIo!Vnc<{r>IIb*4EQ0Y=qd0|Ug;8i%HEFg+s6ffd zTcM!3-5HX*vCfLZPh$#H;0=R%Srj}n1B0Jxqd)=IMnQFj6t0aaP@$>sDf~9(foh{b zfxFgIP+cK~YhnsiVAPE$2>*e8XeS||r$7PM#)Ik#Df}d+K!q|GdL9H+YZRz99w-3R z)+ng1kOJrsz9*>=@~x*Js0pJ$wNaozZZ_&k)fG|z{?=2V0w1A>f`Q-aEvPmM6mV@6 zRJR9tHFg5%Z5T+skW0_y%e2{-A)wdOqnYq3JV)zdj;J?u%T z@D}!M1?Ow;M72?%fbeCbpt?O69lOKBNJa;Xk*7dKN{!aYV5Zg2C{PWBk@12j9#mII z0ptu%AzIu#1wb`C1*(k#1sFJu2h|l)xICsng^)Nrg-2rwR2u~f+~uBv>Iy0RAf`YC z&ifIC$6^Xp8wCm!{j0Z7T_J_bVhU7Ph_LkoZqNQLs5S}|$Rk-4R98p=R1n_}RHW3% zD1aH_DNt<`C;&jjD5$PzbnKzg5r3H#F+IVK=oX^~b%h*V6jPu= zkSw0UvoQs#jRFPkB2Pheg%mD~DNun_8&P22@;p#&6e!R>CLUB*Na2E*0u{E|*;}yL zc?wh;1q$2+o`UKMDV!fupaRr_h==E63RD{f3f%dgg6aw>oEKA|BBe&g!wWG5s*M5# zLR`>WsIHL0xiJMQ43@zt{4u6LwNaqJo$D#6u8_hxF$F48YGf2%j44oU6ew`#cnYe^ zkB)IUeiV$3!&6XQ zA%)Xp3RI-j$lmFdm;%*CfdY5Br=Yq*3dHjJIYR|_Wf6r}V+vFo1q$%Yw=bi*LJHrH zDNun6a75v?m;%*Cfdc&bje_b5DV!Elph8an{w>;L3RD{f3fyU)g6aw>d@rUz1vpI+ zg$*$Us*M5#?t7ks>Ix~G8dIQxsMLtU>oEnYjRFPkR8K*5!&2$tq}5!CixC0>B`MXe zNx8r3^1DWJn11LQk&_5a?g9!5uh{QIcg0P&!yNmjZu^eiR-+%fw%fRtPHag1Af{hhR`0I#I2)J?RbLFepl;< zw~Q>(A$7Q`TFYHYjzG(?h(g-}TS60t+pa3(n#1q5R$a;F?eDhVs#3yR-C317gYGoS zbO0s9SL;TON8hEIB;1Wrb(IRZrgBHC>#ty10b8WMPuJR$F=*3B1odqC8WJF^w5ysf z*;WNy+tXE7m0Hesjh{}52>GX<8b94vSCL`4hNkv()fGMcjri%*h@gM^De=>(wx?6z z-tbRX-L86fAjzoX-6=__b}i)sD@!_+7S^dAz)YmATAk`|w%=UaYtc$%Uuyy?#OUY| zWPNqtFRxi9STZZ;hqckDY~fiM*T~q@$bu6JtRaIB$@@(G`g4;`2^g;ncc z_@(%Tqh9qdd^Yu;7M_ozo(GO{lyFV${?Vo0plBBKY_dMN56*unW_z^W5rE7RfJ{(Q# z!}%u0lUjJ5{-`gY4@Z%xd7jSI52}nOe(2hGQiVR;^Zvs{?eyW!hh)YrVEn%9KOF_u zj{8udTuOCnnI%b!kH|kT!>FOiMer|ijU4Vk-pc|Qcq37=7D^wC8dBu9bAuUA(>E2F zm!z8`tL%gU;o#uh@~W`UYP4*%gYZ(lF<{zUr}&uhDfd4xBUGLt!9I8oHo7%UI=+rj zIoHzT>N1tS5d@qjkgMzt!f>ea0X3Nh#jw~kCBCM}1L=33h3)!t+g5J8>Sw;{i(TCHE2~1&18Px!OAi>cal5aO{2l6=e%i(sb4kbsLVR6jq*6nO90-w!+NeUG-!u@mJ`w;>bKM zi(LNb*{Bg$g|>NqCei+druV=1Gan84D0#=_`0Ev#EgHiwudy#z+Dd}+eenGUB71Xx z<8(X_JnrHKP+?pl^bJUJXoC%PWuUux0bx>k=$lXmgarD=#n3lGAQAM9D}cVS@-fdGBJzMuDL<#jm61)E_hD$ca`B*u~vC6yu4VD_|&lqNq3(H&Qn`i(xgWZUo7Ss^?Zr$v!OT2Vr$EqF;24t5zLWl~FenV?$n#&p zS2;UcjLyz6g?$x_-~)@GFfyX>Qz-OvpMbzOf>R;DO`{?3H4%Wz?Q6g~osZP-M|r}l z&$H+uT0WhF*=1tWjlwf5_asvMw;?;qeGU2LlfgV<<0F%K@MWXAUu3;b$lXr2f)Jvd z!2#rU!fG;>vAzdZlQo#Xcem7y9E3bf$X(cPt@D%n1(TiuZIDO|Lxf8z&hWxJ4rxK~ zKr6)aHS-?|>nir(manDK|*AXRCF`63A3gkB?k6 zEy)hKeUz{urti4b{4j#g4>(qct)DGtli;u2!giqve7()m|0=13lkDQ%iZV*5bYB)I z$pNCDryi48O&%Ut3tp0K|D$B+!~z-rWO2y0j|EHemp8R^y8#yQ5z;1LA-v$LR*H_#7C)}bLA z$4Nprz&l0=zhNbPa5m4_5mi(bgm;kOe@D!jHk~77oUpO8S62SmT6kEEN;#<})2d5>H7_om3$aiu#1^(9k6wvl<-2F~hs{~&3Td>$oSWBqh!Ye}cg|zZ9kdJ6AvpAu9-bU!& zOumC{+^>NmycsA$=-v(#VKH5Spg{L$5w~<%p6q=aA^WnCT@KloJ=rs3vWXP;OTd)~ zfylabOVABe(6#rF3Mgbb1Ju5jf+6n8K$fS$NZRE>vb?H~0cZgiFbjxc0rBLI?2mZW z^d5yLdR8WB656ygWX(G1jy-?tPrd& zsdSVZJs}{gz>ZmrD;x>@kVuZYck`h+JmN)}N`JmX-SyPrDGG=ni2UiP?ib+kZ-wnk z@caWi|5BqCD;_G0#&mlJa<@Uw)ah4;gJ&XC2jBGC^dnK#RFw7JJc4ld*O*d>uyyFT z=T2#8>^?W85fA(U+-Pa@XPGNhweuySd}&MtYug1x4rU{Mg+z)g8IAM0Tr z-j^SpqA;Q$2y}YMy7@C5wmD(DUn;cR;az$T>A#qV?j6A7g#Z5g3WY-SaZfH1&}NDW zdI%VB1r9Ev8cTY7MJb1=!#dBoI zo#MgFNAuH|D1Qt4{X=ExT28l++ta8)X%2+M{g>>%v2KjN@4u4!VE+CxPV5ghk!l0r zk~QTufYgmdZUDXmOCCE#gPePNf%Zp>%JjWq=0`I4nX&LL?0SQmfu|#JO-9KEFX!}{ zXgG(0%=s|z0L=C)C?Aw+bB}r$ZH!ZYC58j@}lHZ6GM{sPAyj&74>R! zL9a%B$8o3ja}C&_r4RiL0C-s~XIJ(?R9ZJnpA#L#&B#HLwPLLfnigJnr>r}f#SC=) zvBD;_5%ADVKLXxb6zu6o06w^i4HP`u@Edt4_PX(ijexn;%6tDI7*$vQ(s0x?GVmY< zx~;ua>0p&ISo&+zs#_*slN#SEKd)qPr~~nEn58dG_d_?V@na5OQx)z4c8pNsGsv4( zup0ttb2waH!fWkmbF6r*>#4Nb`W_WMNbRDr)Z6XcPGsc$x>4VGeG^)ijeO_pyZFxS zMc-N5_6e9Vajh@>&h32X=A!T1%-+5XnHb#W<__O^4P5b^u?v&#Z7dqA%bQjdeLA7< zq5po&Mkd&Ksb&iHa=%^BX6X>Ft5Q$*bN3vRUZtD$-AQJ15d*B698Tew_AVZXM(hP1 zxMQ%N(pO{%jc;abT~%r0$*n)u&*J8ap6;rgx^1+3Yq~rQQmrIHsF)rSi*RRK6^6etAH2`IB$Y4$dBa4lF8{ma~-K333*ZzIX9u;M8vL2UCEnGTP(Z73ZOx}dOdiwM! zlN+bate;&P7{ia21W}TBR#Sx)!}#R)bw*fTI6zW}gbBoiXm@AhFA^Bo?V~n`g3%R& zHM+_aLIlyYP*mY(hZ7mC^Z5btf(Ja6#na{vlX+cl_K*Nb(z|+UqE@?~HnPeFh!OYo zG+;1r+iVqN){kL{e|DC6Wv*bQ!XpuM+jjTNEM>{!UOVhya3@7@YQ4z<*DR3)0=nqC zK^s~Mr03%nV^7@ITJn^B?vb8MeFeMUdo24vfJA*=Z&sOgv+#T3PFAL66{s+tM$|{% zW@|aV0^m>DzrL77*q!PWZTRjYyEoaQgS|Xz`WSZaE*Yk|IRia_EI&B-G)j}zi$MWb zv_`(xNBsp4fobyyJ~ySpDVo=yOmb;-QAmkyc#l& z(%QImYxh>rOtcSMz4EdKyYMQjc_R>DAB7x7QFr-bQni?i5(QPX3^~H#Ep#wj+TvRG zq^m88Zn~fEHztdvMNYK4czt1?!|xunNE#y+dtE`Cx;tL zQ*eZwla9evaxoBWJy8|G2L~cn=+sfDh!*3lg*POHc*Ly=dKHj)88QH^kIdPpd0Z#o zYZW?!_@mUT^ai`zm-V5uZf92VYsk=Nez`oNh@Zds&0~0fq!aW)y*Ns>G?4)CRfM*d zCK6BEhKd^(SjH{5%4y8*>ka_<7D4!h9-_LxJAXbv$wHoZn;du?-f#&vVP$)qwk0s_ z;I0pJ^go%zv?lm+y^IevP5rKGCuDGy%z~z_QdNX$~Kn0h< zfaE0|hmq#Yxf`b^>z`S4Yx*%L>Tjzuimj=CB&cj)(ep(8{o~R~IXTCZp!!T9aGy zBGdaWPRM9yYMyb%C&ckNl2J1GzG#Iu-OuW!#Z37#*Ui!>;$xn}dlt&wukbM$JXwOZ z@#OO7K@k2a=9H|>r8^J+>zSzGwy{9 zQ%vWQ^Eu*56|k~Gi`_x)=|#T5jfOCjWJI-TaYcZs02g&FVxoR7)1-I7nzy0@7f(c7 zTp})>go`?k*2cxrUXA#yCVF}J3AbW4K<04qj&X6QYlaKy8Lx`CC<6Ju*t79)%*JIM z*zn?w7yb7sJ{3gTK06h3sQQymE(H z!?hn-JTE0(TE zTv(Jo+G5WMe%MEG=^*#gZe1BpD8wG4czaBj1kZB$q%JR6nqHwSm%89=5QWXI(1n^& zv`!DXa_I_Ph)BEMSMlvt8x)5g986r7MXQfSA6OL}mXq3P0veM0XwPK}LyF7rV<|F% zO-KcGM2IyKXr_!HtaVTrrIfpPI9WKmMW(k)PJ2+#Kml3_ga%>SwHm963Ek?ZaOkq| zpc9$2mG1E#$U@R~TsB`39NXWFG_2_T0m5GIpW1**XSe?0o~f2_k5;a~s$e35BZ4pF zm;l75?MKbNt;FidM!QF1qZO@PFrf0d9i-SB8628JRL3+d+>-&R;8Uz(XCSi^k%q)r z7A#`8r-at5;Dr?^U(sLbaxDvtR9PI*R!SQcd|C}H>Os|_Mc4#pesPn-lj`oklmujIE3rW5c3SH+jZhj2Sz} zGsbV8V2r8CGj?{&7)4^hGsan@h_TaR#{LXrwJ^5aGxlfQbf#wvtywW+XBRLQsnk4U z?J;AgdB*tdxKxj+$}{%8m@$e72aOo}TL;EYj2U|)V(hz~u{U(nDW0*vc4X{(1&mRN zTpsn9=6nrJCD4=r1AdFhu%JAcYjIWHpfDrh)b1s^R77H(Mu z^?|mmf?HNWJZm)Fwyc7F-}s2Gg8z_kd*V`C1(C$w)=ySDzX~?9JtpEFl}*tqcpT-n z3UZ@g1y7_TS_S{GWfhb#zhxCfNZqmuZdnB-q<++8!Q&Z^$7`RUnM?wtc`dpNYEL($qdol(Ybs?K2uM@_hxA$hqX-VE(oI4G`+YQ< zJfHv$3Af9$%cn|_38v`)DFHF+4g(-{_bMDiTEZOwsTK-lHHt}8kzeQ^4q1+xvPJMi zVjzOL5$BM)sC=q{6rtb5#DYS}gA@(%AVu4vs@xaslr4+(mc@F@V(pdlTMq6YeUUXr z@RIt{7CDw@zp$~EUaZCXsd%vlvJICPvdJ6dmzHblS(Tskt7Y6+%k?Ez@q}Nl`C*Mz zaVaz^-5i$d7x7Hu5fq@0_25}oQ`tM!5=_gXt96yZ5!`Tx6!=(luCY26YTQyjiRaZB zaN81YhtV+DJx3Btxu*qRKu!KYQ*aOOf=cygB7L82JeZxY*RQ+nU5HG&4ssbOU}>&5 zp_Vtf%fCt7R1E)uhM}7W!w7e|>=<`6A*bt?uGlZe`Wd&t_W!wD@S-md^H8wF!Bv8b0c=Rqb%Is$ncGu&TA> zt!m1lfK_cIxORzEjc~HQfFng#wbqVCwPpz`Pw|!*)oNub(}Ve~OFdXssPB0&Mm7In zip;3ik~gZ+LDOnTH%2BkSy;`Y)*y>o#MH_r&s2dD#h8-S z%$UMVCZ_l;iy0|zbt$G844n*WmK>tUpmv7rSu#fR02$PF_6D_GV5^fs?YII<9|pCY z^%nQV2DLTnt;nF(C^MOipOHar4UBy#gBpxsQ1gt*peDvRK8UeS2DL)QFsLPr#RfHF zOja{`tWjn%F~)CQiZNArE6fKlsKFQpHP4s~YGMq7ni%V3P%C5%gIdB^Y)~`CWHmF! ziVbRFOjVw-4`5J(F$`*+v6Hb2i7^anVyu%vt&lMcY6)YpLCqM83~G%slc~odgPIuo zPzE&^!=UCFYl#@cpeDvT8Pp0H!=RQh78}%zu}F#1C^MNDI|cjZ@DR}&`87VY zf8L!K@KUVeG!0*75nmz%O4h?)5_VCz9^S}$h_@NAJRz0<1G)rOTC78kfuN`xKQV#-SvRpVlMR&G<^<1Ujj4ra_S5=2QfR z##m8x1jSGs7RhLed>-+BEON5M2eQz~lAlq6WIUy2Oq$#<)56yCK@~J8@UVo34zUzv zv3t{B$pwd(U)EhRpWPXY0sCN&bhD4>b#be=K{&!UE$iBI7MWS@me0VwIz+^{z8oAK z9Mt-`XWc4pUVuZslSdKiONw*&DB%r%Z4>D@*mP5D&}|FW>Vm&`aO;W{m?TTO%RRS{ z7zC7_1QkeHirOQtq}<*$G8;4JP!1}2(M1KPn?FB89lz#GP9-4}?~=mnqM5Olq`hISQ!!!zPSJyP+196JmW|B9OiJ?{#>i-5@2O;Vg<%5Am(v)r2x5ua6qlX zDS+V633ADbG!$#m1UND<@UT(t4Wh~A!uLB|`FhbM*We?cA*0tR#B%q0K=&GaL@Q=5 zyt99de?EjFO+=$)ndJy-Jy~PU;=5LqRq)X_(|XhW8CeRrhwgJx3h=VJnX_hhpOexp zF5TxP4o)|`n8X{K)gfASSerUHVp0{a?b_UkTs0Bn;!@lf;BAbo}8DS z;E^s8Y=q5`e=Z@uj{I{383C1!^VipM?uT=6&>X`Gpdgkj<{~NK5&EcpTs{{Gg5~US z{kV)Dy0VKf&?Qkx>FfRSo4_d+<)}+MmjA|zCYXhs&&-y1E5C}PYPnL{8BW^&AI0f- zESx;lAT;_0WOmEAwbNKnw`s&z{nF}2mfVbcfXLf4o7}ZHtRi?$CJc;I)Oka_ce*72 zG{@=Zdw9R!B^puLLj2yIxGPF%6Ao~UevWyZ zewgHfJB5az_hsEzq$J2aNgz`nHx|EehU>vOpGvxS+=uPn72YE)OU$k46IWqj6awXd za1bb`!C_?HTW?O(PnaP5AI!w0`JFX75S{)Ag2@0OZ;018U3Fy1MEckC`*TqZQ^eMIm_a?<#_DVhPb_SU+ z<$i9-hk*y|!5sZ;tG4o5l5)7-vak|z z80iN-#n`ZOxYeiJ7n$=2Ik(DtWq-llz>Oj;%iYaOfo6}7>=cqXQXbq$IP$LEYCasS zV&CT!H5#3hy!!|v;6Z=j)nfl%I0uAKVv+@R;vT&~| zi?pRvxowPR*4M{*`e2rOrED9`Y3y`Xz@@^~@x}6p7w2?~(m{o8e`LYQrZ$VRKnaO5zBl| zJTI{pE)8}!$9?>Ylr1HVARDb;URUonan-D=cXYK( zS8q49syk)6>Wd1J{EIU<@*+~Aoq|)!ElCLsrW3(a&=3fo;daeoT3+}7iZxmRJ4}Xg z6e530Av)ZoMh0H9Y+cjKB}3{;n#j|+zpC&AjTJ3=Uj}LUY^9AKKC-B|8MwK7dM(=^?jFGXh#lJBmqO2Yo8obEmRA(L% zs}`tm89xn21L#ipNKf%KIR>6+K5lwaI{IQ!O$8rAt=JSyFlE4xD5_G97JnETgCtT> z_VX@Rxb7bHODEYCfbJBDb!G7aenlT(;$!<1u)tKSc{;uJ=i+Z~)eIh#hd2I0m zQTC*3g5B7ix@uqel)K}naD#u!jsCj$ut2$LuV2ehpX4sEqH+WFo#ZSQUG z?d^^B_Ew7osmwVEAt6D66QB~s355VEP6QE9z%Z*o5WxYN!~r$VGg#;0`~BD2d!OVa zK_+|q-S2yR9?98j?=`&ZUGIA5*Y2CkM%iE07K-x*4g2=@icUK9ypvD<%U{kt>ANSM zcv4Zn^9B#Gy?pz`yp!`zX@Z@1{N zNhY3t=bu}Aev20d4eR$8`aTV{qtU&K=!8N>%51bgq>SOi1fR|eW_^Zxut^!CW>k#v^GQi z{Q2DZiA*>!EX_16=yD*Aepf@z9sQR9e}=vc9b|I^Bfo`NO%o~|{_@lG)0sb<(>?#W zbU=S~l~6gOpGg$%;BiP?^cw1#X1_DgCJiVq8EnU*yyLGqyIs4Ypi8G}r*FOwzUjo=1`H;bl;1%U-Fs(2J%0YM^X&Is!Y*^dzxcR$ zo`e>iG$u? z*P5#Kx&h5$gNla@RT~{)(ik$xZa{axMpK}rV|$y9=tHeXlcznKriwZ&>2qeL!^s)d zNX)Hxz_}y)TO0tRnAKKcbnQr#|6}+dyC=L8PVlI3fk%gb9YcR3!6tomEKeOF z=_}Bb>KPN!)fJekKviy+0M9M=ptrz^bBp^A8l=A=2<{;8X>d$AbR!4Y{s8iM!%F@# zcmVZz&T~tmPqsBtk>@yGfn~7M7asejF!~)lXy^d`HhI=r{fIn@dGMzQHQ{_jdd)|3=q;D}(W;7tamnSEL zeSRA}=x@=U@3?L>A`2@yFL)MaOaU9p2id0yWCyDUj3^-oTil)&aK8zC)E*8R9^h`1 z24L+U;XFVDqcX_BNW^5=(DO>qwd>$WH~B@|sB{B6~r@uJi83V#+2J~tj8V9_YCTBz%Q;{NBlCDCzF zNwMvcH%fuQdF&gx{?r3d4N#9iLjuTb;k)z#2RwY*4|E$9AQ7uh{9w`c!2UTn<|oo> zw}`vL?}>vKA};;=fMqi+1E{e8*I?K=|Id&{3tpDH{qyj1M+TIZhhc9*jnTtl`sjmE zLK**~_R@i$L5i(7IvkWDpSM@uxop!|QXp?B#7XofjZ%P2t165d6ffz8C|*j_I`i5$ zNu-d%Q}hG(r{-ez%`~@Kqg$Dsf76B8FLxN_25-I`^*F;TvLmbQif| zaPQuocz1B(UH@rjp!0Ag6#IB2<+5Fe4K8DSu1#+?et01X)=o7qbS{i`WO>so3o&5) z{=(KjA!xnO`+aq*jpR$q#v$>#;Z!<}72=d;^QU1FNon*)sEc+&{q)Y@f+*TKvnjov zglPp{dZDQ7(bD~%)Dyegn1K@VM7v6B^3c#Y zhQW9NEZe`ZYrVLMHa7rJV}-jD&KifrsaZ0OlpL>w-calPyi1;S<`avDJa; z$itUl^GLA#@d_-8r}1u-8p^E6KB;%#Ki$cV7A0C~|6Hj*SCh8df}+)>cy14B+rm0+&|Vu` z$JbW(i|xUOcxdfc?oaec!FT#FAlWPJEHC|Zl54&1rT;+dFfV44N31RIw6dqvk2Y~A zAG^G_Jry7XQS-tul65TupmwyW*=*gdL)8SC0k-z(P0gMHX8Uw{_C8^*MR^|xWrHG(8U< z4bx37*ksOWlm3yY$Sf4$Io$$dQzy*wtx**YcMfKa$40P|h6`3Ss@D%G&qxVQ>r8k=K46Z?c@4&;J4t?DlOgjbJr@t6rF@j#t(o@+DoM^ zg2rTfV$FSkQ{LC1(aP*L(CBNS2ihf3fVSrMbq#9QeYjbeSofy3)}59gtI_R9;^L8T zf{E*K-?#K@S%tfHKjT`khv1@Ysy4ND{PzyuW*1uTfSJSViL|?Y>{U9;>o8NL;uVN! zAnsm=Tf?8+0A7ci9fR^e_i=daZ)V!x!kiR6)=M)Vw1??`d1SsVJ(0zg*Qo8Q&4Q(W zfu|A$vWnn73W$=K&QF|m+W6Bf9ZCEJX0|LjUg)K1{=YN)@61Z~#`5ru>3YLFG!hDU ze-|Ap!>Ju+W_yLv;~>vlB9?_Smm{WRn#E(8PCs5qH_v3T zjxUDAqcBR(akm~1CAb@Y?;Er=X2R~7+se0s0=S2cOlFh>kXXiHXe@o{6gKr7;Q0&X*sgc$-=gzEx0VT*~DW;(mzl_PG4}Z^8H%3oV=1t;X z0M9rHx4Q9Z;CTmgStXqErDKao=NQ+&Kp02cJGJ-QMv9$9N}J900eCYmQ%op69L2dw zTeE@R! z*rcG6o14X+k0Q)*@|avE zRd~R&^ViqLJff#SE$*i(K=eBZPPg~Si++~}i~dS>Sd&>`Td%KV7Jtao3(&A00CB~@ zeCFrQEug+?biPBwW{X7TxYLt*A=|uzZ@IJ)SB)v;ccz&c-AxUWk?2kk0z7%Dq2Gw} zXD$C0?WdkY-&z;eKv$z!x3?>R@RG`UE?)e477`EeefH>;GHFS&*sDU62#d$^nfXne z2|Wfh7D*j`jf$Gx$%-0{S0}QJPZf#TqlS!AcKcr|hfqu&!y~U9Ol-OhUNEnr z7H|ZEJ4uAX|FRL^(avT=B?RM+@@li)E9BprX2@PdPrA1vwE)4!KD(L#_iETYT20MrIp;98Xpe63uy%z>EjA1((K&aR#99^)ePK( z+-tQKD1U8e1=ms_GgfOP3_R~E51+;LYq}PqUdc2MqRwHQqd}N!M}*{{Nq++q{ndz) zh>+N+jN{66JAv9mJF(ZJ)}+TKgy3L$v_z!-D+pX`vznAx(E<0-WDWVTeIuBAhfiGj zh!5N^=$osLh&o$zt*iymDMd+8LxF z{*~7=Er%={d0oBE>ys|k=O}w=Wwz7lY6H^r;b|{<=|_6K(@MSc-sae?=8v`9)xS6Q zb!w?-QH4xy>oe@7zO#Le&r9VW5?<=f7QB=j4i)SA1lO=ws1VLWeD9+akm~@JPe_qU z^aS$|Y2o#ISti`;8Q!;NK^IU3K&|fV08`1b7Zn$TT&2kT<_K6d6A`?l_hX#g(hFhU zI+`a87x@1O4_&Qw*i6Pg#~eQd95X(i!?m-}&PRf)KNKVc(3X62Yw)+nXrqq@W<=yn zJ~Y{B@gy`m$TxBxXO|DMkA0l!nm{<%)gEoEw6L?{g%-h|YhMVPOfK=SnM-c)x#VZt zJ1+U=xKDb+?O~3bJ9q4!YcC|0JSENdA(E%+EPFnGWPReGS@5}m{R98pAwKZ0wm9$_ zt{EC$Av_3HuT|$BLLo9~(P3Q1)16d>2X?S}xXR-+v)*{I@fJh@$yR7fM-;RX?qqbi z-{_28uuw4$w<1SI(LZi2Z}9$LCQw;OlIBxYV(3mZx24os#s9=AIHo;S^)zCjc{T;D zA3paS(be8oJ%fcQjGkf6BVhUxl+*BTDn_ zn%>lCt=)pBD~O@h%u(aqV9?WM9c#W(KzCCstPHfIvPM|9B7H@E*US?QEh;5I?_#%zK-?G8fwSkD54`q#6MFyhVr^3i@bDPu&nnyNoV}bV71; zq288a@9P)>(`_k2mly2_775{$?yhWbBn1zUD3|%Na=0F>T}Q@F@;c4n&s?*soXcVs zZazYzHzT^qnYMqPZs(l%c)&5Vn|W(=clgM@%&OWo*hdSfwWwY|A64|W8!if?MG^1w zv69ta%8XFgy^{(wt}2tW376RehNHb=Ok98HU&tp%{1(GI&y3L^$TZVB@O9$|@V(h5 zdw+GW{WNz~O6r!3AdIQ4YAjDfWjRxS?&449Qs&6bo+>Hhx|-D^V3mt;qKAS zERNe88V|R(E^mcQ}O=LIiUyzhtihw~(OM#!Q{>&Sv~DHdZ?Gup(Q+mqq9 zXA2c6hhr3u%E9gpd=x13V@X_Jt(-q>rdYPZ$m{TiG>6%DEEKh1l_55&qc6d=7 z!6Cu97l?cOSPhq|fw$J{$720xij$(D7jafJ{RvIBLciCH7p7TMK3h3Dc)W(GJRXns;r*cy&~ z>f_i)6)ka0AbP}?E^hawivz~B`vP3kmOnm9m0&e3ofL<1?xe`&PS15v0#wxbyDtq2 zqVxA|sm@;@so0aJ52V5`@{g9g*{2oPg-1<2PAdkT+);POYR$-6|F@W!Ugo7C4Xt4J z1UYDaSlkl3?^nY*H8A*P`tgx|G{x>*B@$bEV z0MSlIVG0U0PS2)T5nR&~QH~jT4JwMD&D)}I{5#|I?r=eDUW&^rWD|DGZq4}0`$;Wx zM26{LkLY8ZOC2|K0lkq$lFy!5P{Pqu&;k`PTRnOwn_b+#LfdszHvj)e@Bdc4!J$5S zMaf5R-`K`~@S}&I_F)E+>4Xx5B%Qs2fA1GaseGx3hOl?8WHM&|2** zbqd70B60|p0-}y3vvd!(JlYt=x)bKAYfw`LmkdM9Bt8tA>mK$mDBGowO+`vUZ(cC@~Xb~dAl z2RRLCLbpmygvB(`&S+#8jm1E}$&daM(D)E9AiaCPtkSpyH4oPk^rY=Z>;Gz{?73|~ zjFm~ln}F0mVJob*yV2Wxmco23%xW33hk4B|#rpwSh;ZcR!^6-M|D1xyG1FU21iHnH z$iJoVZkDMpkrMgm;&UtzT|w==0r8*62KI5OmfG7~9BDrCE;sUN;mAjaBX@Npzu9u+ zpDFU?fp+MTR*Wq`*F%N)xlusBxgsCX1CVtvd$Gt5yExIXTX1^bAhBTQj42rRGR?R$ zK9F-=HwjknV6c&A%*0W^Rh}{bEP-T2r#Q`rE1{9|HjCw151gH&W$>6eM24php=VwZ zZJgje>Av;0#jtpNnCfzdos5R+7XtH2tbF)bViIGk@vv;x+aZ{OQr10ZO{gYC{)ZW) zYGtIgqvgc|T3#3>-Do>Ngk!4F8*MfP`ir;Glik^|k*l8=HVA@jdSLV?#r1C0 zm#YTL`&GNua-SlNHdKLZ*7B#f@OO;iKtbxF62@vL^Bg2Ag38t~gITDi?Fi)LA)3s> z^UjVi6x)V3@Vb4?cW}`f`aOmjxGs_+^>>E3H77a zcRa(qJjSjx-P8`jvBEshY4XG2zACx{t2;*JsPEk!rtZ8O&E~Phn;^4QP>A_7)IWso zB;vbBMLaL+d$lHgluIbCA3K%QvTxmeC!ir$k`oh8tOr0~Xs>x6YX2Q3`$)QvuD|5P zRZpWAH>8N@NRnQxy_FDxEt*rkK^@Nxz&L$kw(1< zjF85Ofxt(*(oH$gIu!!zbd$5&Oc~wC&GnW8j+C^&V5vWpQr*IDwlHVssNFIy%7QBytNM?rlIY)ghYzhQrSt@MNL&Pyd%ZLt7uVJ{O%yX5hGl*6> z-@|H~m1|a&Sw+UjsfDLo`KN0g?{zZ@pEM_vg|i1q^wWu)h?#%otDky(O1#{eEWO%% zGKv0e1;ST&@UxdS~{ifOs@x`&=1b+u`Yi8Wudg*9&?dt7HQKeLoA!IGr7&+W*7 z*?qiD7kk;iikVwRS+|kRpd~whK~B!O_Z60g%TKKcyB5vuu1(iwyWz|IK6ad9T0 z-YENpxjeY|wfVo>4j`r?3wO(S)$2$H&*K)vDY_Z*Rb0$nw9(k`LGo_GR4fc_ymw*>9O zQ3pxT*3pws(3UWXt}(Md9fG!4PG5`DwVe-xmtfFy;H45g0@1UDC{xP7AsgU7M6!3^#8js=_Z;Vy}+A{-rz?f83W;%HmC=uKuQTxIvh;V%3wR7_wm zn0O(`fA|?(f2B|e7%1?z^A5iBa?Lq~-U;V>-}(day0M%>#M@vmIg!C;9fPH|E8@WDjjuat_&WhGsFPEjhg>CZKd^_Nhs%r1p zGugLl_Gq4W%&Q=eFy<=udnWY%F(yxTb|%qFiKma%TZh@k$Wx z6fQ6n2;>zVNK#{Db$n8;M4S12Kz>Y7Y@l7qJLoG!<0g+4YjK3R7=EPdMfTCh2!Jg{ z;fTPSF&J2F2NJSUm&faa2L%b2cY_npGG@=8u%<E?!?%G!v_U%4-OMl0)iSll z{bgf-Mp@{|rwJcqS2lA$v>=O(zHM~1D%-uu&s;X|8?k#pk$UI?(3^}9sEv7_N=5{Q z76{lMQLW7Dy2m?=i~bBR=T`tboeCkQ9GX3zSHQi?QXz;Ru{V9uo25cZfc(kT-r*vP zeZ1VW><;X~DZ=f5!=($yGRB^=LIpWbN!2B}mDdM?Nsr(oQ%>XCWpxser==Ev%OFzR zG{U}tU^7!4abITMQvc-w{5&WK`sfi+Rb_ettb3RT_5Rb9cnHCOqJsi*ar2NW zrjRu~Vt)!2z2czOa~w3XOvi@*)tpyo4lgplfFU(osNULjoOkR6=qS*>;`zyKv?2l* zF`1=rtK#M~bEFbj&0(h32F`Y`E4@zZOTF$h;WwBVM|>4n+-cjKDKot8v)w~xyPE@Z zT-sbGz+X|Rqez4`f{m2Z+--GRcBtKOLQWidr(tz##dc=y!j>KNV=I{;W)V^5pg)jqX^J#w5DRW z#Yo5BrJFj;8^X{h?OWZvf&MuB@tHXM;QKcyoJHf@ikg;+)7OCv{joik@%44tBt5@y7T#)EL8vUdYF@ks{%iJqn6g|oJ4)Cy&LnnjZY z%tM6fN6W>Sko%Gn=za0yYCa(B#9scDJsz_;9yB(pmy@9C zSzOhAFCR){H=$DZydl#!lYg{A2iV^LUcS1@z3m`$;3S8x#z{A(ff?+xNYUgubIfCr zw9aYkUwo{x zYX^~A4J(@o_puVMB-k#Ujh0*&kXRFiy*7^mhc0HmDf*R{Ine7$7M!#`e4cCWtFRi& zC&+m9Q_e;oC^i#eicpVUW-XNVFatkz_$sg0Szh)Zy-q7<0J&+9ATEh#(YbXh0rhXj zS`41N&TpxUdf1b7CmcB*cLw6jP24ATrq^ky*LRxNY1DYGG`?VVf72J{3eewt5x2UT zPf*)Q!elRO+|j(wf*yg4*+e=v*c3Up4nv`<;OwWfalAW*<=r|g7eyj&s!>%Oy?it| zb2`92aMmTpmXPNCm`>USv%I~M-4jLFQ9^7%FvvR;VnbBPFc%Tq5al2eU(pc#HB+-? zCf=p$0U&3;ymaJ~H!!DJ1@=eneBEx?(Pwn@3+?vG6z=;1@4Ke1iX(a)QdT!<4Hl&H zSWz%HjZ)c*4a%Np73I;B%&s_4xN&T~)a6&p*YE8(-igXEQH>Y;sRD3d$h+4!L%gTR zjd=sD&o~4KukceLl=oo@QAqqH*?Hd4=8blGN?7zTbmcPVUB$(sj2G9yvMb|74S(NJ zO3Dj!i+{j?2qTehUm$V+B=xNny%rC!^kcTe zq4_O*JR^EIbSV#CyWiql_wRKM;N5aD?3|@3rJI?5&G){k0({zvi)ra>W?fKdo3>-| zJRx!%#RQI|sL+oc_4(IeaY0BccB`ZOL>OV)V>bM+j~CnHh|HhgxRyR1P~ z$}AV{N0(Ej#eD^D>NaM%BF%^G+oORk1jI}s)r)@!!nM4|!09ABik+3T&DCi3Vi`v{ zeP8(c&FLv3Wf|tfcK;Zp>{O2FW-%)pDZA2~nE2Eq*HMpf39qsQPHzT+W-ee!H@k^T zh@FwN{3#j!TZnu1ty!c#Rp7*g3b9@_GF}o?q55<2=zl;KpDyQWUytFL89|Kk*szyO zIPCR7hr7T64LggFJikMILz1_AS6narq!zVtNNlz%rG=ZW(%GE~4{^E~O@W@EldqZ; zI+&Xku=ykh_vmhp>V!j0&GHY>2O~ARh`BtA(k?bLMRq`B=0kmsfc61vmFWJat=O(x z35Ep`%eVdV1M0Di#3{NIPRsT0gm|+%ffS}pXHiNKPrI7`W>)rMZBUdg%uP-qFZ4AZ z4OYx$CMAUntc`6IR{Csn<=6-X!@9rBdNc4}zaJ3+fD=0ny~ao1Mqa#aawDB}X2Z!p z!sNRvD?<7nYkb6E0Lj0q5P$wUSs}UCTgkgYkNB!IkU}N zRll-3(O~uYAV^L0Ke>&s#miFpb>GA(S--ErbzW(u=0}v`CEa|aY`irkdFI^=eQ+Wc z66_c4SPOc)6Oo=9^g8-G#Nc#{B9~RYiWR(FK%D9;t}qc=R;$331hG zS>B_-&rih3u?dRwbVXNihecoWSC_D8O(k9bp-5j~+NO8E5jRyXhVW@?iH__jH}pUU zwgQF_W=@&aevi6oK+x22aMC?B;HUHh24fRYx_(wqD)j*>p#4rQFV8vV0ow~L9z*s4{^@%?;R zZSak2_2;e=+}k1~mvxAJ(h^cKMx(|UHS zpCz;fA)#d)^Snm^NA5ui;ySu0SqhS`$yw#~LSmA$y&vGxK^UC^u{Apm^+FMkjf6`2 zi$v4*G1jcErmP;Z6GK>6GfI5j^J5AGWpqc}kpR?82GtHzSB;p->~r2y09&>$;_-%q z|GC_3g6j_x3f^naVjYM?&+JX74Ddb4sJv{UtWC&GhHlFxzuR`$Yb% zfWx_>r(?L9$X;g$ZKwJSQejQ>Z1|&Zrge5SBz)l#d-?S7A_HBG;IKiNAiF|!S~T1V zDd;1zI(@94LOlGYj;24V={toC7c>9jC#nlySV*Vh4O^S)(xBf-E&3&uqU-l4*Y7#W z{RW9%TI=^^#_W{wM=#>%)eI+d8TUgU$uH}m27=Dgl;nOTp;GV;{)=sTrVQ zwXQI9*ugmKQAr0^r?HGC9YBmWqO#K57gENa#pr=!y%yrL;(pggj%zlb1$1X|;+-+c zII)b&qOC2T67@fu0i_Ybyofc$vhU$UZ$bqY%Q)Meq44QO`ypF*HNL3Yx_3?T*6rpM zR*_-q6(7q!n|TRsO4!jYh~P+~8Mrn()Y@H{+|g~k@?Yxc9sEu;$tf{kzY_K`H>OD@ zAI^bQw| z%`S6C1crS((PfsxfsLf%MCnKjyvWVn%EGvIv=VoIOJ1RnN zJtY`Afy(OSlW{qm4nc;mIt^#uFY$9Yg`+)S7km^tr(ZeL2wSd6)jV)dyH*C(t%SUN zUkcupB(cas1N<%}Mx-9xMzUM0sN`vPvxV#viWghdrO+}2(*{e3*n^AWak|tWM*rE9 z0=ckL=AEiKvw?~xVm2mXxbaIJ=ISs1ygw5hJXNZU~OM0&sjOmgLZYW4;B)BNiO@HUY;it%74d z3i+N`1q3|*ZGY*HqzD}Q`OJa?kK`uc_?rdC=DmR9&%t51IUtdjWEDpL3@9%oPS;^j z_|Dqkofk-CuXkn^2l|8Xo!QV4_~Z<8Yo$-x!luPR(gJ!pEdB6%8bx7|efb~n~5Ex!6JXjCE$H$4$FUEkuX?LpJEEt=l66#l3r zteSvwGL~_)(?N!NyBx))y|U**mxOCuA}w(3L6m$J@K2W}Z}PUF>5&#q#4Nh6J}F85 zYE__%%QY{Pch#|Y;gq(}8Y)Y}r!U#3M<*?6Ppj|V)!rZa+7?5<6*O%nAE1gvN5c`` z%=EvyqeW8<8a)evi7lGm4VvyI4R`YnKg@D>YBbl}tP|Y4^=eX!hPQJ#iP=20D&*3n zjap4ZCep1`^Je2?m z*a*|GRB<2iLd+ah4e#2+yx$v}n(B|!(+8ClXgB9Xrox&kGGwd$_Q}71R^<`YY5d)Pvz!t>av8*#DDG5_SW0N>2>RRkKQ7tZ8yd+C2f z@_xO0`(QwM70Y4z5Pe;$yU1ymuI+jZbB|TRhSPX~Tf*`?7vamNiQGgY*8c3s3nS%% zQ|M(DnrT$V@}~nUHHXAdynt~T&0A=)uZ8kD^iHOWIAn4g3hJz+>Q++OJLJ!T~5r8Kds%c$E{3Du|k^GhBl_PXlNtT z>fpL{(~6lV%U~NM5iCm%bh;a9x247ELQIg&)0(zN3WON0~8?;E+*f4o(2FmK?4B(dc& zI6U_{y63dh5efTtbrUKI&ctdg-UB81>0}pyAf3|C$uA$9Cj{tQjjH6`EZDBsM-(V6 zci(t41NHGGwh~6loqV@oj%z*i5`jCc+aTiRTcj zh09ctB*l$nsOyhzXj?nj@TcA0sS5@a-q>`F*Rw%Ie2kAAI>)g^I`c2L;|-bG**O?P ztm$G*SAo)6eFGYMB}%!0%vd&*Y#g3wFuF>cS8e;6GPs7Hpc+bA(qt8xdGf>l4A~bX zYpqg+aBdDu)PO@LfG;!$kZKGM!NZVjX7OX_`sxZZ-HI2s^S;Oz9L~kfrYQiA8-L)hxmLv zM(QJT4FP9wv|9rZ8L~+b9gmKZ3;)9e{6`u}{%-OiyB2^uyPkIro6vq!x zt|gK0clD0>z75@(j-lq8-gM zBWOOKu#in00flRB86)9dutbAqpCsi_uV$jB#LV%U+mYr|=5{>pInR_uzN;ntIA*?~ zmOR^%8|jvlA2=1qMHO}a zZwJ8@`wl_%H#wruk2haN8Wiem^o_x8r<>QL z5_m_+znYFbRU@w`BN~F}8j?mbK6M-l8ShwQ+m@GEZzK>D4+Co#2={YcFx<0c)}C5t z&ekI7X(OAdo}Tf0x<#Wb40?LBMNf|fJ#9(uX{+DUlYUQi>glear|m&crw26W8zKre zt^7;LdE&Vlj_&U6o$z&{bb0>_auU~YAl@KJm*P^e47>mt$8jDS%eB5Eg=9OJFeZrD zk%=BNp-fRP%9j`NimlMz_P4u?oknGUPB$xt)RCC0zl7s%wXlDG^$GRcP!(mfzZzR9 zd)nK-Q^P6Ew^PDP#b6?ej~RS zPtD5^1aTzunWOHFanNw-MXJ$@oDSRh-~~!6$n`~LI zL?)Z1A!ZX}af10t5$_&np6tlzYld2;wD}Fzfg?VTJosABlO&1k3sL=Ia9nFZ3kY{* z7LBcSR6CsD`@syZ=m=AwEA&l(VrOg9FSQ&i2i?&A#WZP~?$BH$F5&-N98_`Z10jCg{ zRUAVbE*17%x|NKy)1=F4U@qCjBEv^tz%biOWDy%;6MV~%Q$TYkd;p#PYf~vO-$RC0 zi%cJIVP{?CHeHg!m9Q;+VQrpLMXDQ$!;p?5zQKBQm=4mXnBIF}%wrLINK{BN2RH8Z zzFF^b4!Gv=J{~O6xV;8L!vxJrNTff%I{V;`3~fIglW%cKo~RvQcK|~s1kA!|gHtG$ zH~)X(MPkWY zNP)?RD|8bHH}o1KyF_JkQiut!JQduV=EoIe|dWU!NDeCms+bYnXG zZ=h^gfMpIseI?y4L#!18abGFdhO@2he?2X%or|)n>At(G1~nBk+Lm9R(cCIlkN!Hr86~r!48ya4o__HUf+mCf3>g z+6yLP=>~~>Qb=T}8Iauj9d76x%s6IfGD*fhrg>$nab$AiJ^raQ|0S;R|DVf$)N{E| z=W^pdoy&Whp36_#|37vv7q>WKelq@U2Tog5Z zbLDP?DXtXx;XOt*2}1sPg)3!#8O?WMho*@O_6|8vaf^#dVq#nH&{NU5EpP_{)a^au zKA^~hwQn`&1V1xd7uKiLFY}=nGlTJHbeB`h8|ivfK31TvcD`42Fg5vrGT~YFRoiu= zxJh!bw6$HePD9kxl_1>8*={RWj@{c{ZVm9I>0S;Idp`kwY$#yAr>cHxlqWQg4~qFFOPL$rm*8lnvj*Y3YXEkz4%=pgKg` zd^MOc6plpBq*nj4h`zOmhuhV{?G{Gi^>Sc>2FqWdIY$xPXKvA#j)j$3#s~gTd~*dn zA}ACy$e{;=LJej4&Sn{I)E#c4mNnm~{W#aG{4SVIA^3%rh_Y^a0dDOdhHnstZ%JUd zb0-YvI>*iR{)3t8Tz{@OJssR!H)*axqevQCr z8P>lMT@xr6n;ZLuUw@!9jw4`OaEp;nd1#^@u0*wZE1#e-mzN!)T5~~70$O7xh-Wr~ z+#Sqjbk5?%pDQNReIh27Q0hxJ^{7El7(;hWBtM^lmk=b0FClIXG0O+nfwBngafiFl zST9vSXy);-@Mgn)5y342`-V2bexC#TyyjrvKXhK~qsSgyD-Q~tw`;BqZO(Oxn=4+= zP4Bz?n`^y4*LM#Vop)-kYucRaI&Kp#Rbru|+NpQpj&yxWgT~#4 z-A!7jX}*o)p;m1ir=wk)H3S=n>BiizV9iIE*<6pww;^3&g=wJNqHSrSesjC9OaW&L z*ad)wNKAUo)8Wr<;C(G~U-V~suVx4oZx=d-*7RoErBu@p%{N*aw1ff;N@;azJWSHx z;OFIz!x^YZxcBI6PgS*ILijgrD}OX%I!64ywKF7t7^wy?8WQ=T)%j3NLi#yg%jdOR z{!lDQLGXIM|F%>1Y;Ol@sJxryiWcF^D?A!s<)67~*+d?0#uXj1GxsgQej~+2kg?;uVj~`>$+SSn@W;d3S*+iKcG%(uvn7J zh{#75b-k3wM6jBlSbJmWCwEvFbTp5XE<&~yGL5{$c4x88>qaVwAlc7fp$*bcBkqb1 zt;0W(+=J#56sa_rr=YP~=>oE5p~M}FwY{GO*)v)2kZtmu;v=%mm*}|#-rK47sNXv% zB&C^LD5YTXM5LNPT6+$9Y&|bSyxkSx?FotF`iEGf_iHJK-R59DJ6Da_=6&&@bz}2{ z*b+6R?EA11OP{-5qvUT;L`D5`5qCH5n#+}>R=ow6Wzucj8c z^q59ZxwSIMWDqkyX3DUE2g$44#We8iA=04L|k|-0dj%^?S!?YlOj% zoqfHo?OEd~Z2`tAs`oJrgln70{MuUg?O|J5NfLd!tL>)wiKa7> zzPgttN?{a%G+Nu&4i2Oc0(HL)o;^Xz1TXs~Qp6}Hw*a#XLKcXzVxX_lU96P2 z>&u&|B++iQ0ldX-J^lZF>)GtDhm1%2w4QpcXYIbOr#{@e$S=Dj?cM62?Fhxhx$VpU zTCrKatz@!9jZbzKF#KK&i#87o0jVU2sELj+caXV&*UTau9eSFLqz;yzeFpB(+Vls= z5V{Y0{*Yj_tW6kk<16EUP0mh6mPnswHiU-~VEGRlU<_8b1{OsM``YS*Jmk&5g3h=J zSg?kZQAY^};K4}OD9PqS=|T3$t0G|*56s|!aS|V|BD{5{BDD#c4J2d}G~*VE&ll6d zv)u6k1Yj;kr8V*e(WY~iE`Bp2jDMyAz?1xL;8z~DbprhTZ35oa(FrNlh6JSlF0m9 zC2i%-kQc{Osgcw1;#kk^hY8F&ZoE!~8t1rC>vhFg+AvbG!=fzK^zcXmvBAeIN@kl3 zDRkw#p)wzn$K(+hy}!;I{p19)&A+}jkoj#NC^N5PhTK=+?j-!^+u}->S8ySVknJSw z;6N@9F^pd*0`O+W4#-{-;eR$5tv)eYT`QvcKQTwu*SLRxW#& zRe^j57{frM_2$)4_-kPXd1(5AeU4Dg?4U^P=_ zn?{nT_*=jg^fcZ<$Xe)QoI8KG423FWk`9N|e&^u##{$qJ3PANC~I!8mt$@q?jHEsFt0R!otlMWBMb>gQE!tc;| z7hWuz5c9~2(HA?*1MPWhaqn!5)4G;u z9U)<{DWflowM&B&+M#!vJlNr#d6R@uBDOneBb=ytXhD|L6+G#;sDA4Zg z)SBeBFC6p1$`ig=t83tPo5Nf>%?@y4qg_7IThg(*g(9slN+5%ipq6}El6h-KLfmE& zFJ^T>C_v>3-j*6;@1n$v1YrKd30nV1fH5DB5}8Fs_9-{`K{?x6!0j(+Zx(2uJwVXj zmH@3U!~Vm8)<;G8j<+Jd?gi)W6kxU;AYkrH0OnW!pg4EHfTreC16CDuVU9qxVUi=5_M2wF&Da^~)jx=BzmV0x_q15vN~s4(?4i68+Mf8+n)pL)PkdD{@$LIJ@z9&c4NdL3W{PaV z>_rW|yzQYM42Irv$cKJeL)W)G^x9zPC-!;hD2J#`(xK(PrZE?{J*F~Qw`H?>incVe zP{=^>w`|!u)6Aq{I1$~7D#52iN>7;FI+D}#AZBo}Q1?mq^>V4z%Zagaxt?lA zA_&YZi7SgJ|JKoCgxF1@LTv%KkmLOVK+u1Nc_N$Rg0{=d8wOjbk!~jL&JASK$C~9) z$JMRy3T*oWxC&_k{MJwiTLe;}^FW?NCxYLaF|W2O&r~0p;W|MQ-0O?y1_vvx}GQr5K-{uC1tf*XM@(cWR!~f=`|a$ zzPubWzj??bd>tzo+pZr<^S7)VWan=`Ghc}5kGYxMs+oCRBfsp99?a5bk zM?05WMZThGtnO(dX{6b?m3I4Ed3&$NOXze;cVLo_v;I0cftp4N+!4U4d8PxZCM#d5jW!N32Slu>C16! z9OZ`thOh1-;S-7-ocK#2QJH3L7iS{eIHdL~>kq5PTT1=4MhvQtBb+buy$oN?+PnG9f zJdD{>>{18sBnf6q)pHXLMy!O)9*NQ$5N2o4>kDFRjO06?=w^d==f062+3L8m?i^-j zna;O??*B7JF;xFkD1dz?_U&2o%emT3jb{N(&mf?uRWe;zu3yez~E^e zo%7s=k@9}jq7OyJMlS#1ep-Q*%Iv9|qt?l1ii;2b zsMZ|So+VL6CW@DB!)qx5PsO>|Szcrow(sFBqp4R#LEBXo+=AqHCRStEFL*h0x>33=l6{1LpvMsYYl53-Dg zANNer3*^+q;d2x>-t5X+`vq1pejf%kgTWA<-s5*w2OpxY?r6~!8OTI~yZ_Kj9}z7h zW4fEem*nyv#T<61@bOQQ=HAbK!`pY6hUh4&OvU;8b4u;mF=zOnHtJLV?1nQZZ?6ML zEZ^ zwFAxN&HnYIhAJ}IPO9iq~1T{TrlccUx)><|0N0blc%4>hNO) z#9Ha@&W;@6ZNuRyKr3|S3YYyG-u)DG!+AiLDEW`{hs)veUz+f)}MD-D~b<2-7cE^g7ZC}^72qG^IPpCnS&gx$?+ ztD%M@n|7Rc%adn!f6%m{MbmSB{!J^~g@as$aA*7al(I@T6=c|?9J#jX^%hMJ1x?#q zG>s#5r~PVti>AwirjN?}vBm_OLJ|u1)iKE}%W+Y){Vfk57k;!ZXj1Hgh_Nxnn zrhf^Bx(iz5W%P09D}1_%30NWbZlvRXAxZX=1JkM<6${_Fn60<(Ebpdw(#`BaE=+u9 zw*vdk`ayne=kSwTf=}-51{J=0Am!}-Mb3Zl)=&-A*gr0)*l-6q!8>NmB^Q}h)b5uVCAF~s)W?P zGA43n3NK`ssZ@{5Hn))%D1*ze`QP1nPBg4pEjsdGxwU+wyolf!n1j3d1d2(SZRHZ1 zkVtQfP+{78(h$Rpm(i*LjltUoR)eqt-3__26M&2W9$F)6*nC>=>7 z4+!6&+-|sx{p`Er?S6k+wfZZf(lyZ7w{E0z)Q4=*jR29( zg0#-#EO#DjLxd9pF2FqJRao^ z(9VIpyIDlNDkZUY9Ln#CqU03|f;?_1>%ugZHPpSoW(-??8D6tl=A&qJY#Sd?uQ7#; zJc*u!DWLboR8?)k4Sde5vok0%Z$78eF;%3*-HaQZXTFR<*2aytb&D@djr=#`Ux-G* zzshnoF$&#UG=jfLTvm!kx>w}-OB~Vcp^{F-zu44xpNtu5M7XX^&E?g&d7;b}thz0g zrl-oP-Eo>}?*Pj(SiITmb#57lG}QX+HoKnNboU)6QDl({PJ)O!)%VJwlGH4Bh)>s# z5`oq%CVV6ZBz-u-%w%)Qkel6;Wva+$CZ`s9J73&bLORzfhtQOdNZu0h8Y~C7`+Cv2*PwGbZUz*I7V~k?T{{v=uZN3qWUOB1W97ot z23+D((Zk4k&(9(%Y)=7D$JnZhfQq+a)IzsB{wkyn59c{d0NtcjT@XB(3KqOyMov}U zN`)UbuTna!FE_Yl>@v;fX8U%Nzi*BHzTM>Z?OHnP*^8+t8aLMCQLDwh(}K0u)PjR zXXy)5)2d+vN!|&L-HT;LH^2ntba-%7HLS;0{uPz5EG4hNPzGm|nQam-jtvLF6 zQlh&fsmcI{hSzN1s9h(P_YsGo%Tk%{L!9p8Iq974!w_h4>%6>J0rPVC z7W=oQ1svqmLM~_qIu2$9{2Q|27G_)vj&asvK%cK?F~kaU@vMT@ftu@5B^}()p0hm* zQj6@yPQoKtKp3xzNvnXU!vHXDV;Pn2SbXYM;K1Jw8#Gh<+y{Hj-oPF(vli&M4T{{g zfV!Q`R;JLQz&m-M-Lb6|jPK|Iqdt&I)grKsZE%N^{QOGA&Jk#dt(sqv=6%TKXJH`7 ztuEs#ws2%p2{3Xxjt6$Pk+PYyx`2DoT~vGl`YV@NAXSOBere&@#zl2u3{1S2jslKW z%fxb@pPhy>Yw8i2B(_1{ZGlvEEhYd7@W&_zidRCG6xJaD z!g4JH$RKNzCBWg_pw}Ew z+1Y6lksC*ah{Xym#4Y2!OA3XVT;IZ9(rfe>NSCc~joc1XuJAmRgB&!ybaGv-$Q)ghb;u(&ohGEx-UAx(`)B`La+@wFgD`Fb6~M^q&b|6 z4XL@}>_TcEQJjOan0O3H7k@1U7^M$*uh>=X_++#=?EiI~a zSC^#FbIsbB)ykx~GEvq;aaWh1TC-_Jnj}<_gjG+xNC$IEkX42gr_9p1eqfOjyWCa| zKD{>FnnV@ZRAWtRpK#SCo1JZUB+hHIJDdls(K!e7npfc`d0%UPA*# z4vW8ZDEH`Bs4#Ww?#d|w!7r?o0*uPzl3FHX%qQchEkv6mG2!`66y+rlX2#Gw{ms8c zBIGZ2vZ^)nXsND#NlP81y}TTscrWWuB7-fyG|AHS3{SD=ypC0V{|Ogo%TaEdE4nG=u4zKKYoT0c!buKIvlg>gI^{-s zHRDQWb+&W3Z9nD^5Md;w2AvHhVYR!n*b0{E$dZjb=iU_K#jY)e7tU@r>LYH{PlxTx z$^mslq-b9u1jl*-UM2z#3W$z^j%WlYf6oX+5^QXz`8Kv(Y%&`wBj>=Lp?UN4Dq2VC zKyxA95&`cD_(3goez2ATcqE9#CF$ZZzhyox-Rfn-#cZvN{E2Hc#!IF!H{(aEjB z2Wet2#s z;&sIdS$-&C5ItAh)fI$liYI%6LG)a+sDj;sIgsFc!YOz~e3lkLmja4?2R?3r;J0v{3@Q+>xQrPSXv-){!GeEcGQNje1%b z{i$xO3#ok;y-+J&P?c-WQar@v+_92U7m3a-Bx9^EBXR-Gl-Xo)q|xg-&Y2cYG`*c= z;V+UpGx-LBJ4I5b)n?brlDC%2+}AaV3S8}EQcz`X7iyU{r&5o&b$>c^U+6{ib!*ie zVv(sDuVXbt38Ac#|2e}j5ZKg(*(^{9fUT55PL+sd1Swus9n>2J2iDG(hNI8B_?LU#5J|CHac=Or5)>2M*!4&V z*Oo}Ny9AcquO%)nYhP-KtAnj#=FP`(D*!ZO=IP&h#4M>SYK0X*2TDfU9Pe0NV}({s zU8SVHh^bjx`)ra#a?Sz~)26L3lgi@0aOtE$F`y@y$40WUsrcLCDvFFojxEO&`a&zY zF>ObC7cO&5%~)k)zpjGo*}NV_!|wa;g=BYXjt|QkAC~)Cd_9>P1Z=3;H)BvX*QZl8 zFs&c)Iv1$OmN| zrc2KW81M&vwl9 zxRk)n>uub;{HTfZ{K9*Q#w&3vt5&8#_RUhc%$|3B(oyNA*jcc==aX> z(~kqEx+(r$tsD)88|zRw@{c@j@HYV z4KSR3)=B+~Pg(~uSmj4gdVoY_Qc5#AG=5w@#~3~F0)n7k4pY_4mxeOpoI`D z?Aqq~&b9W5c@6hq_n{%Rgg_1(!6GgxJ3aCRixd}5pJWB+_5 z-hRLJw`ZoOc)bF(#BvM`fvgF1dYR|rh2ALxycPSDEtsRbKj!z1Ys=-Fk;nLmH5nh5~={(=Yp1P>$64p`$YSgsl$C=*2I8Uc1ls{c--2D`C+Gtwpp~m`0}E`<~# zRi^vl5{b7L*-rkXmmVS+C&KZPbgO`GaGxwo&vj=j@yQzd$&cKjPdwhlLL(g`DJ%>{+zh*HJJox3FW{>s7Au!HpfwqaZ%{JPw z50~e^x{(r1pHt?Oc!><`S_#S;ZCaSBHmD0#fFcdUNRv8Z-;uM~<9Jh_qMaL57`>QD zP~4qJx|iV9>Jlt zA_@E<&%Hsu7?3!ctMW0o$aj_l>80UL$Q?V0f^-e8{09N| zsX7efso@|Y^8OTz>y+0m^n?#;hC>Osi`XavMJE3ROQC~ z>ei?q>b5(I;H6BPyz(tLtCZdLqfK}u@g&DAC}ZE3AYfSxeK$2t?nJp73qU^rV<^bkbD;*Z~8TSkK47q8EW1ZJ;3fe}Pj6@_@mD{hpO?L! z+O8O#t>kwd+DICEn8(W@AyYAJ_y+^Uj?Iuvqg|c@Ud!eAq{H^&PZ&fJR=TB5C0Ozp z-QbA@5Gy2S%MuH)4?TZ7HsTS=C!Ht(kf$jfK@lespnzVjO%`xXWetaNvf#iB@&(3% z+-8Xh-xk2~oe-82Dr$7?fIjlrm*qtI@aw?6&Uhs65mj3= zI&HTWa!Sk`E!$;xGd0GJ=!tm+&ujMtxI9EsL3hfp#C_T9uBcCN5^ZDXorJDgqCI|Z zYoG7dzTU3=MR%@5!qDVR|3B=V34E2+ng5e}?t8hpBtQaT7Xww=S_Q4erGmAcu?wBf z{HN`-v7L^CNR*0z$qf)z4U3ARVR1tUt{@r#>mJ+%41&9c#TAT-f+C=Z;PU_e&UxSW z-kStOq07u?{P-d7J@0wX@|@>9=Q+;`m2#MLrz=0i+%cj5UP*uHpUZBYZhp6E05rsj@V>UFBWPpnV=HPG!9x6vAyc2lNM`$XJ(+fp^>wy08MM zGxdadCi-_h4_4x7*XTTW3P6VE!4qjqtyRt^MXG-uT!EYN-}XFsCfe+IP#?hZ;SiQz zNvXaOadiY_x_m|!jQM8g!K>-Oy*B`Ecpg0BfZNsl`0sWcyxu&J8vrsS2WRCQh#VYJ z(+$z4)buJ(ymEIhR_^7T#J}zem^#1b@jjODZ@sDF`S|TvLNsL@bm8J`vnK+(<;C7= zOs#9|_dT4LGC$x|wt`UF3K<@h!qe*v7b9F~FG!NmT>t8jCm`lVgE9YAE zpLM}S(?wbeA$3Hy*HfZ0fK4dw8qJjwS^K0tjprGT7bn8`0yyXE@fWyZkAM)_2Ab2_1Q>sLI;PM zXU~zBF#0AN{cDLq6QbD2#R@9jUk@%m@~2q{6^M_lQR$kZ#dv6fuVi^J8$BBeDBT_1 zH8BMrUEi(E&)Zot=ab6JA8gHE2|#E(pU5imx-G_eEso~X<}#4ARXiE1+xygHbSQxp z5(6&YW(GbjQTX*GKtQUqhsH3+pL49fN_zIFceI(08Rzc^v0?Ry>&I7Hee4pY$y3a6 zYvA=-b`48cuk>ng5rj(G8$cRI1xYWfQJXY%eGD zr?fkn{AiM@?_&QP zMpv@4AWp*}Z+5#9P0hAFXF?tIE|Ko~;nDF*2GCzA%GY3JrY|c*XwTPOsI16W%UaX^OVqgH*?`=X*+A9cp_5z zFi`ww?=Z6*E%rS7x)w;!OiI$)z zS`=lh=D9JIWV_R*H}{RDg7!SqvF4_h=sZ-x7gf+4s$c~l&;>tuAb4~6SVgEwe+SLr zP+KjUaTjKVOP7+79KFX?WOrJi2KIs@Rmtl61z)d*Es*)JeM@e5llks@g|*^z3?C2oTbu2Gjo`A zf6X)1!a^F^AwwTYaH-4H5m~vyI9^lngnbh4g>h9lD!EXJ0Ehuwh=1^akb9u1*<`~3liBkw8cvcdybOQSQ!-OIw z(aW>Vtr8XfLgIAuL;vfl@aroXI;zElxwUOkv`PrJmc*zs)>uJQLR(NfA?Y~Y)K{C~ zi8@Kdb~rrM?Jcode!J9aYUapEzd^;-LDixPn3!!I8vSsN?Ci5V$9V$P^=@XrIlc( zKyiWF_&M+e=40g`@r|)Sza1RFoOjk}h)esZDy)a9)eu|rQZzJ@l)gB+uh4K2(ifCc zN*{Cw#9dZd#E&GE4DLBLtN>r3wVE&a$y1~2^vQi5L1%2umn03`F@C$6hGM=NOM2gi zN9yk#V{V1N@M1-B{ab>~k1X6Sg8ged0;c5bq&~s3%GhEenOS*@ znUDXIUjmS~A`oC7M-{;?*ZdK4@p9iN%%3>OumeWMTBuzqY1x&i zH!O5!!2bk6Rp3%{CJ|N;rEZA{%P;t0TM+aHJ?zm@kf9(06^m;{SpdG|73ae1LXZ%>K(sdDe82!M! zO)ygm%4m29;-1@n$EZ(23`q=lNG-EOyDfd=azAF zd)>HV`L8FGoA z#5W6r6CrnaXT-0CIdrWlMt zj>?)IhH*P4&iUZw5~3Gsp`b+ada0gJ=Z1T^s&5-Bcj%5f<%_g{ZOx)Fm^kM#uX$Ec z;jiKJY*PTr2Y6GmZ@j7f8hF!}VfDA8+WW8>XfG11$=BBu_4%krt-!Zj*J_lpysQ3x(QZNH0BovpT=}F3n7e0VEG@5Jp>URQ{CAzaKs?oZr zgb7WofLIfoA?CB5SA_@g1E|}6ATiX1L_WJpjM<*SzDY!?5*k@osk(h%Rf?O2!SHC2 z+a23zE4JT>uwoU;NMxP=jNxhx0a|5j$KDc6zbe~wvJ4IbgE3*e1-#p$+<8-^{vEaF?{*#>IWzy&BG zs0C+y5%yoU)@O)NY=BH#YlUiEaP-cS7-n zpw_Z1>k4rr9#-w(AFNk%n`*D!JTLb;uWft=7Z!)8Ym8Wyq**u?RXiMy`>BsQ=#pNE zmhNb;%|x%$gEYQ$TrHD0zXh~x*~n^b2LgUjzHnRveFA13ZZ=}@>}VyUD>847>1$?3 ztMpgY^ggP$Hzg(ZBG*636grvX`+A3917JGPQmj_y1b-$Z#1LEMlwztBy3FTGy<<-! z952wQh7#V+BOg>E@EKvh`)=$d4mi&=5MVlsOB;dSe<2iELYLoO#48G)CJY0G<}cA| zo~y*>K4Z!5a-3A#mD155Upj9d`(!LZ$-o`MlEHU$j@{_xE%my=w=F*VHjb{b zmK?mT*X3TP>uL2?pg=@Y8p$^;0nt<`v*==rDVpauT7{b$h*cYp3t-4C^Zp1izk8%y zAIw4wWG|_x<4pTlQv-TyMzXlGva4uztHySU-^|W2@FJ77srQVr;WL(s>@OdyrNp}q z2fT@1`_t&*rt#Zp$c9yW1+LKo;bCyiH_NUD8f1eWTImq@*C3`a(SO?jf}3lGzzFQb z&>_H9I@*lX!XjTK-fZpg^{;Z@7pLR@QG3Aut3v!=i&JRck2pCeK%&`LT!bgsp?}6E z`vtf0ZCSF7srOFp>m65V_ok|FbWTF3X-8Dm9xVTGuY`H}as22M{ZWy0@@Q`7WEZ{e_46DVKMMOp`&Dxe02=orzL%P`x9CSp$Hi!f|P zI1?m<12hoW>9Wl-D9{9j3@w zgadxR*P%&+7OGVv4-D>L#E0daS6uz^X);$Jdebw6WH}s7^N`&FWdBXx`Q5n(^Z|L! zkf6K@U{cEB;mazNTGpPOz38m^MsY+Piag#CBBR)$eMI#?$yUh39PVxPUcqUU6`B_a zgx!*&hqB{}k@6HrPajOmgk~3xuQQ)!*Yek1_9W+2%?Glj4+^U08$o9B_+sRsb^Nt) z1Q6b~L(KBWQ)q@0@B9cZUUn28%2`AXD2OMnAw@krI<^fEM>uQ%gRc}} zKCs035AQqXmC@kQN+^6E@r)CZC~E3Yw^z_Gm-nQ~mV8Vk?DP7Y)|TTp&ke~;d$K2| z7ZU!ov?C3)NA?E-e`wQv!OaybafFC|`f}T3TILborZLA%olt2rj(mvERv!%*HbEAO z(}eC=C{l(-9$)L@7-d=|cwz3d4BZ(*?$_q+8{}t!r7m^z-iTmd(0U_neuBrV9h}gs z+LuLb^r?xT*u{bfIfYLh*ZS1)7N0uul_d`jlCuhngB&6VpZpvm5(;zDFOcocI;DzF zv!OiJ(r0j?Q)SZ+g}~5~8(`L~BYQ|bI90^@O_a9J)U=G8%I$WIj`L?q71-k+Gj|I+ zgb;Py)^b3nT{vrU$(agH%B|ozuR+w*T*)0z0^zTpKw7Y(!D*n68hrX7GzhC6GjFl( zY)5k&OgLvP;kK=YbqR8<5afMQAWu4V>pw`koIYZwXE#Bgb@qw@S8z2~3~i_P2FJH^ z3F8joOGZV{+L#Z}7g2y(G!P5Bgl@Acw1L}U5A0;8dxY6K$Zda{=+8#S4$<{p`h!#? z%uWKAQO8_9%D?u6RXz-cG=r;=`rP(sOTXKZOUE7VoB3ATm3SwX?!0=Q28rY1C_h?s z*wz=cWsiW%C%Eo*WDzi4g4?jlY`8F6Wd}5<52~8WU?~Itg|ODkCfhqA5&yC6_lCl{ zuQRYC2>pgn#5$*bP?ML5{hNb0t98PBA8t%%N`0i3?pt#&ljAMYVX{m2@lNJCM^<&| z+ZGd!E|YqQj-(pR`;12KrcnYpk3@^(v1|{^Ic*jhOb2-o&R445KZN z{jB1(5v@Nkl183KQfb5&ec)to8(Wzg@{yl2Wa5!)$iu$&kab3B$cp@_5z{;&(vX03 z3l?~t+Fy3IErjBS5hu*0L71m2$o>qy-j4iUM&2@L`TJkc@=8Xoz~R;xN$dJg zvK)Ap(yq=h;Sj}EhSw;OAj{rYXX!4o#oa}&FoYPV{BsRwHkK!Bi-cLz*5~lq%=H#y zuMBs$!`!RGZJg5XG}^||IoVQ4SVUiLBHzo#3|_oHhUsH#Z0YN!uS&X@8;Gr?^Z&_& z+py9V_3>Jo$H}^i&_v2k4%|5+jXOtMJjf$LZ(r~OPJql2eOShw@G+Uct8FKX3C%<& z9n6Zc@JT=Q)tzwS#B1&&N8POoY;*_GU9fD8*WU^1Q~TCK7?X&f2B+3aGR^wbVtvVf zW&<#@$Z?+$Vr$$9GfDXita>MG=PlaF!x$*xn*r%X#g_nm8!s@m7YmAKT#X}lhw|1o z|B0_*^tvzvtcboH|H#Yvp^WO=JL&fCgPP}aju%?95mSJgI4~9|4&L8|?uA{_iYr?i zlMmv8IW^-^1jDb(vUfHY3@i0fba)WP1>KcMYC{&}(=Typyf$RX>dP-8*~eR6{=Dd1 z$`61{6pzu#-20r2J!n8|(9S2))dr3Cvd= zKA$DXsK5#Op3hRw4_6{0J5?7X+WCZbj*3N!{dOL)?HpxJ@#TY$WC=F>hGt!iMqW`m zcX2UL7kz4Zb&~m|y>MM*g%fc8(2FTbYru`=bA{}j2nGI}BkFq+y_nWWNtQYY?BXIM z@LmK@t>#YB(&d>`{gpe(fsg_R!IKT?k0ngX>s6eSODZ;_bfL6(rW%XKwcI^IT)A?&@A zeuul}R_mqFo%7RoNURPeuvKiRTy416OlWYhdnA0QRv&MtJmZcJ_8{phL`;6{C5Cxk z{EuGZ5O6BK-RqKt&t&?8QQ|<41nI2rE-=>UxNR4_?j4E4ljw`8E zw4YY~x{eN-ecesbN2PFG!}sr{fgo+&uM5|`mxfh@fqRIiVGfoTnU+IgU}m}L&?)~? z3k}Ui_C~_ND^R&~Fr!38#xr{6GtZU`?N7wDe9~l?VURf9RV%C90{gBcsLl6_Y{}_C z3E$sqOMa*CzpL+mAAElTQDyDBe|NQO;dL==au^*BaSz+17c)CHHM8*D&2BgR1f~WZ ztM+)8L!^51Q6sFki+UXrkh|^iYQ@?lg5Rg67f%u+qbXR}k|pm!!l-^apl>Z#aHcM% zK0zoBQp9(<|T zZ>d2cYvt6mvC12FQPg;#$D?OJ+_V89RN9E#lA)b6&qr!9#`txoe=tV)iblAy(FiS4 zXoL?Qq!I4N%wW_>^63NCzXE6APCvWhFC41`LOWJZiE1@Mam6CAl&iyV(WQW>heLRY@N>!kdK89}!uAhyhzW&O#UONV;C3* zYdZ2-gm%W@4peEdo|IY{cr9kFKnyEA2_Rtg6K12_$5m@y zir4NKfQusz?)+C?J8Z&!$8{Hh?ok}XmF72WsXTL3HOk}o?OvPsYOiDbG%TUE>rg$8 z%RqlF2gjFinH|At@EZ^q7-0cv&0@mloofMuxYpVWy4bHBxqwU>LV${i4wu5(FR?ML zD^QSiHGH#?$sk)xnDa3X>j>=&;4Le(HF%C=W0#dkg(Lm^fF)i?r6@P!`g&BmM zxPBKmT8n2Lx_Ystjar4zWD3}a{0BSa8;5-DXxhFk~%P zx3V^+X6Jdb=$!&***NsJ;#(`sEr|BTFzjcE6#_b8Zf_RB=AoB24Y@$yM#~m*V6WO} ziW`}GEb&KYY5U&+@^@5HJ&@{-0t9(-jD3A9mPY>#@wxIm0wmdm?i5r$Ot=Z@3_Ov- z7vI6jo-o&TrNTnIros?5Vd2r1BW_glMNqp^wassQ7ACB}KG?#~YYTTWi&GmotRt*X zkJu5usP}P&5&NgZjo}H%*=6T4&y6MZ;=6l$ae|IvvNZN{U;HM33NgS!`VVgh*J zj#chwBMxhxm9K-H4`h|#TD^6X+lD!! zlu#4VJq4joh9H7nnT;gzm}qY^*VG_}E=Ke2hs}AeW0FMjZOr1c;pfkHDl2JHdP$Q~ zz^e}CMzQ*zV=7=Z*^fEr#|B>YfD^#aO5WsKTS$eIV=9#j^ZbfpjRFH(%$_M+i>S@q zg_hc`Mt^6OB3fy_ROrU4ltl`$YcP(xXq*$-?}=1eM~5o<$}=0vI4)m9v)7x^uzrHU zn+isumyeBTV0JH)>r<1NFC*($8L>s1H?TI40&Zg-m%fM2vd|M+FjDFMGS@I;nPzF3 zuxvo$o4K~>0Ua`2G}65PQ|oM_H8;1;bzh0AZf#KAf%Ak+t-2l-qzBc$zZEVsHQZ7t>%m& z>?$>JuC=SgauqZ0zWcRW?AFZXN;h0M2Ew!78*zUZ2$bAG^n*C&bwHA3Qefk6zD~am zC?Fx_#D#wgM9wxF zUGKWPUE}+rwT88-q6;_!G7gW_tJmPht+DV&nAc%yh_e)!;N2emjd@^P(y5$m?Te+6 z+Mn8?UJFxV+?1VCHKSAY#J-SIx zK9~J5%ek)L1%T0JUU%Q$pknqePH;j~(SbMDaM$JW1G} z)))Z)jR$&PFwprSejs~sH}K&#nCY6fWTE_73~yS)63X|i`&>A94fxY9P43^vh&rse$05LFW!DtBJBDx^xCuO@-_9 z5k(S{QPeM}cme!-50v3lGH;P;M|I|;>R<|#WhPr5zq=Q6UJQJiui}e?;;`$kDxMY; zJAo0kk5uvWpg3&ghbq1zD4re+>!&KdhT;y4zkQ4YSI*{4;VDeuMM>|@;l3X>K2+7` z*;dN!ES?x4zj%!MGpbEfwVPcvFXlodGql+%UYPdvgZ|e~>uWR8x%*P_4pm%aE1Lf< zGF?&83S=48e;Z5z;X{^DxKpYmh`#7R|3XgK+N-MYKv3Z}zrvbSg|}4Uk)Xl?vfXH5 zUQR8{`>L>v@uVTdc9qoyAIyxD@+N+!^y=8$A6>=xeD11bPM>Q&3u0ouJGipAmLQEAEzQ%GdErKbnvxH=#N4Oik zxU*Ep!lxV#O^<~GJ`x5e2bK0N8&+OAa8TKSll8J8g9i>e@Md(x{No&W1J53C;3wXJ z14S!!;H{J$jMLjLbMJ#QpptWw2R3 zzlulYLCLd+ooQJ?Nae8M$-%>HlP$8cN(T%*Ymh#O^E{}md`MD1crjwYkilmTP)++? z4y}azWFqXprHY5^lUxQ{K6GHvbY2rCRO4_ADs2Tb;c@7&p{EZmA2LLZz?#B{>xqW_ zYXWSk{~d4LYO8`88G7cRQF;a*!v`b*j-3^62A*rjr1=dRp&E?tjPk)l&SVextq&Yl zKGe>Y>a6|1vjfQb-=<*PilGcTYrw#ON!Hj0B!}7htPNr7XaEHHctbG4Iezn zGUp6r_@F`O3^-$mg*rda99GVc(+4pbTZ1P358GsA4JsQrV7RTxTzt^vhZPFaZcx$~ zMWl?F+6u##F0hh>IWgX;WRS`#=8eqKFm?UCWi*~9+dza&-7@9QH?JxFNar76_omnf zuoA0cHPIGG)t*y4oI6PAiciQ3SV!{G+!iZ|RTuFZmSJs0Ni+^4LBv3bt(1(0ufISD z{Efb5EcjEBISCnHE6htC9EVtRSp>Q61LOF)Ji?`YsmfL;-&HM6iCyJX&)~bql3rIL zGu<(cA9!s(5#hFaKLfWFig-_Ec!Zk(2>0%my!^{~GSvk-w<5f9(1G(N*-?!Jj5wpt z58rM+!jJ!{D$Ig+q%c+1G1mAId=-r!*;Gn)`) zN}lvKVXoY7h2F|DPexhw4WMjXJ9L3Et;=hRry}RR)lwIPo<*MGm7ivn)W;y7&xq2& z#`+c4dZLiTn~TW7Yn*!h*L#b;5k*WNLqNHKNN2fne#5Fw)?qa`6lws31DUP?#LTgv zCf%_MPwMY=K9Ql==pV$>sFY{{OZ;A_n$zQZpiPe@5y(s1&>?2lqan!0yLvvmzdgiB z(0gVao@zb__?Za;;KjfqHD2dEC?ImoAJJ55Zy#Rgb-Kfr{7yinpx%G)|HQ=irg6w$ zxrRV-r17Z@v;u6$NC8)lXkKtHc{xAZ`x)*9?eI0)IE*L~4-goi_I_)wX`_Y+b=6L5 z^eFmQm0p`s`mkR*w~eoVZQQPRa;)0>t?!|o@e(cU7F0dIHM7S1O1+HNKf{oV900A& zu3-}9W7-`f&eUy0D)gj1BI~Z#KHkpjQVL{pSf8tzBID!GAk(EajR~7u!OhVMU;Lo` z?Sr|0h-foAxO{${(hflj3h0opv+E5M;2o#)oHG*wm*|DdMXuSQASnyR^^byB>wr`~ zF;QA8?`@8GBUWOoOqZ#_0vz>NsxKnC!XojFnZv=!N>We)_|JkR3zeFc*obvW?DCGT zzz`tUtU@l)i70jmTo4T>dl58EmJnd-su38+cS0?8k3x?T=0$NJx)-z32|Op?B6`UW zFjQ0o$lJ^7sK}XfM@xmf`GL6sGrLY~)c3O#Z0M0Bf)sm1ZXgm{CmML3r8|PNORe#5 zrPr>K!T!?gxPxv|fAXCJFz5AqJJZzXc$Z4QhRkT5RAI$Z#?F(VKyWSNJOl2DT<^1l=bT z9O3??+!V~Uc}05jR;e69?5jq%bs}gWY>51Up?^FUBZNy8P3I#$P1Dm3Jzb`!?Sxi1 zMlpDp>sFOk>FGmC>880DJO#%piWZGx3(L9FT6_snVHk)5q+O_=0t^sSaGufrQI<0#OVhnid# zwT5*jPUcJa2yv_s=18Qyomop{rLJdzYDYoC1Q5TSeI6+RLnBPcGPky95Km*a67|LL zG~z;zso5(}RRGe%fMrBEOXH~uh{)P(L^C*^zVv7@w8ZO7^sqW61p{<1Y?>ILl>|A1 z{s53X+6x06^4w4=NHqEqCTMBAxQxjk=1;zbIL+!jg1pk&M*B@qcAyZ(^wbUkLgJks zju*XD{(B0G*b#o&TKJ;Q!u4B5!g_U5wKcM2{3lm~6YxoP4B40bzB&X)u#Iq95S;tH zr8FQ>&j$o1J_K6&c}0zv^G{fmK}O)3{#B(M07c5a0E6l?N8#R1hk z0Ra_)Yd^P~>WRSOXSKGhCZnv{mhm>N-Zw47gW_i#;g;ImVCqo<6lgP7u@BGkdhXC{ z%&ilW(L+JLJ$S#vW|&ta1XIEg;fb+0t=j3n!41N~0Y;-EGq2F%G&k?M{|WPk5aE{G zWM*38{-RHJV=UDXcnsv^*hIqNPNIH9P=d`SK2{7XEaO|9b`LO4W)9f8{>bZ8CiI;( zfyM5K2H)l!{(*TLixyp{XDc(2uG9W)2FzCuV|SZr@Z$c~2PtzKu;e|QJBb-k3~F^} z{{`16xmb2Idyu}ggb3U=!BPP^%M;>>ScmCUAgyLM5_PF2Ue&4z+vtZljBCF(D1;XK zHBH!3C0Pujn7+~OtoSvYprU#262!IRX*}kPq%>E2r`YA1Xa}>p0tjt^S%xLJJHpgf zk%Gyhk0Yr$-{Qi8_ad*~CM%RnTJD?Ga{FCi!&sVG;AOtK zvW>mpnu|v0dMkI!-gc}vS5Wg7jJH^cb$Ii;QK$3&jD6_@w#b%o+ZzvIdoTpOAm~&u z)5^4&!gGKbcj3a-Ay%#AZ?$}6XAdM+kq5!v4~SO9qizcJ0dTg#Use~ti}BIrsaU%& zX3nI#{AYZSDX#$+lD@2RTTnR~cT%%P8yKpbmux3z7JrA%9f2n*Yo9^#?e5&$V!jX1sCH&QP3 zp#C}qU|0YVv*3I=OVqnN=W|cC#Fuyp`+%*bjht@@d;9y?%bJ4PT=wi>p8|#BD?`D? zU+E0)uKQf2a9QaKIq0TjvzWUHs^-rHQtL2JE1^Bcvbd?T+@D3b-3UzG_31>#wEY~W z(w`v&KbT?wsBnscP%l7Lt34!Xk0P!D#SNpBmWiE0tlD7B(!l^h%fP%eg7l5$JJ|iR zPqG~8`3TYgqcA;Nf*5fc?2?P4bo2J;{aHFYFTUbjzai>odoRwFDv{ADWa9lOmocav z;oa+i+lglFD4Y6eCobR?=6A{^@hQxDza=hj1@?(R(Ok*$fGd(xYZVmUBiFp9DANQ6 zNy!d!;)N;E!YPn>OnXyr(8M@w{SLC+GR-> z{@P8*C;fyH41Jl_Po@Mzj6YQ|YW6orkx<7R&))lhY50XT6c&*y12{A={EVt6a20+( zvuY=EB86KT7ygjK&5a9BqVT=Og?%Y}H&qDAYf$|d)TUHv|7HgzLIPvPNZ;9ORew7O zF#h2aOv&~X&eZO-^z*0bZgD$hMbz#T;>7)pcS;WtRu8RF(IN9wz4gschtT-M#OaV(zIw!2Y|1HqL`&&r#uW za$S5E25>D=wk6FGgKd-e$?|k5su%NfDTTE@L;^xAUD$|PuZQVjV{LRK zjvYeS0@J|~w^z8<#&xV;)k;da0yC}5Nu&nTeTw(wRuz9MJo5e;w4T0+VwVM=UV+~F zIHRzFc`!Xi;w0Hqi|y}DZiHtkHWTx}bk(%hB0e=f@(a9I;l;Dr_K%K-cswG)`N;Tc zB9!pRlRZiw&yF02eO3=e$S77k>^d78q@y{tTEH+^a;T=7~ z4ZJy0k&ASs!WqrQC{aq2H%D?5KfvMDE=E)ieALxzQaDtXT|?)-uIL&z9Jb`<9a3vZ zAY}!w%bmE4w8-qGc_aFo4cO^fb>)_k5Wzd~gFh6-8|hFrjG49x4l+f6{R{Nj-^zkw z{?o{E2vqfgb}Ae4CzJ`Yv|Bl$mk?l*_>0dtVUAsk+A_A!m?}6w)pd)}rI_9YoLh9SVqmj# zJk-`Fn0UX0@Xs@=%4)p!GpVTFClSq&<%1)97k?42?PbI?_uBqmrTs;1H)l6cQ<8En z#&kkx&gxXNx|L29Q}iz9x5c#`IIiWdL^!NKJU*YJ7%x^B%c_uCM!8tzfmmyHk0T^( zI9_B%2s9-?*7eV>haZZPox#F>sl9u_c;I=ySkChm1BY=}MvB)05tKXH`4^)Zu+Ep^ zcAbSf!X`Jrnh5=j_o>m)2&Pm^q?-~2a^I5;mQRL{>i|4h$`bm{C37p3W|NI>&9J6r zH&B|T&8wtJ40;}-)|Tc%WE_9>Eex%DMZ(@U8I9cpUy$7Lo9pDOBgJsR2qb;=-d2|= zph^c8ccB&ln>}m;MzZ6Gzy(OVNDLc-^bzd%NzHL`sMIeGmHIqoDD{zNNSQ6|{dd@# zh*<&ReFXYuJ3c90@IB*f=7`5t>p>+kSjOgFqRG%vflxub=2+%r0i?rhpVa)T)zj1V|CEb#L z0tu!9y}di}c`yHSZF_xAZGFx*y9L>wsPG45EYUZu+4(Pzu$S)zIXtf$Q7nqGxRoe) zdoxd=aQ`Cb!Dpm%x;)jE zP9OKS^D^J8BE$2;|M^)4C_{5<$FxLZhH5Y%RqRZffR>U?nX0ZY#shu{mg4a9P=*xdYbDf!KbO z2I595Dc-X3cOPU3M#( zz!U=Y!1V6GBMJ1IMx1-byIbLw^#)1CPO=H`W~vjA^2Vub!Y%E**j%u`wvVxBiN!v_ zRIvatua`T#H>)|@T!W50r)Yu@Hf&Jg3)G-p^J}mdP$P@o_WTeDuRR_&gKLJ@23Q`!2<0- znXFJjsz*zc1K~vaTBi*l;}+LQSdn=qG(J{DgxI;)%6jN6(pPgy6f*~Hy9y%U@8hP| zM3y8Fr#QC9vTLLl(!%7DdV_uY#+VY}?2;&W`Yd^C2sS|5Sg2Tr?xQTl61i@iiXn^d zTNddgLo^bl`zvHg)oU&q(P+n|_C!R8djh=H7NWH_J-5PpYs~bsdn{)DNjzB&Kg~Zy zdMFHe8?0TT%e|`+slI)SY^<$L<1|v&dC7Ygf7Z8%Oy*Pxc z$%E{C%t;LNIni&W*}hfGAh5s`g@yfObgkQ}7ZaYOdj>}|&9ec1W`T8^$Ak5Rj&vKN z=@tvlx=cbWnDR#A@cNjbik;00Yz#1qfFLHJ!UJ=YmH zfwxC<<8IWO%oS{JG;`BXd*uXy=6JrrR7gtyZ-qyTjQ?Y;Fjj`99hcMZ#rj*yq?Ato zx5$ln+5hR=*u(F8t(5%!D&I2x09Sc2#JUZURXHL?SIg*#2YYy7+NWDU-Dn#O>3$EA z@x7YjqO3G&W}__4@d2BsbZn(=7c7i z(~{hOG9^^*Kc||821+$;85iaLgNzY>peTBT7pDG$C><_A#WUEwx{PxQ6=X-Pz6#AJ zB5n_jCXzgZm#xTsqwCdxO-bkMw?aC$n#mLE>PZn%@-#Xcx=XoD2x}eCLK)36jI!;B zw*UqMf6*(^OLI{!HKCK@usDs^VCy0F`(bWO`s7i#Syh{iWKko#Fi8`0q1|tKmHe&M zIk4V?{hn{(X$h~+s6sPQHLs^LaakV3crD49C2@b*E8>P{lQsPc(61fcplQCX|$kh`oS$CH1??LP?odLOl0@JV;>qL!gdTb32BAmgXe+25gIzUH%v5=nhoIw4S1Fa^fq za|QM#!<{j@S_pU{Y4)s1b-1(s4*}CeEC=;&zZV4LCU3J;gj?NL#k;L8aTJK~+(EAm=#6dC<(xM3kS9p|eCQx2$^yMh;5^RI1XjPQk zXQu*#Z$%i)7Wr7a;F1&@>k!!A1yTw81MLD$LU%{aP_qEPw^sCb#1nyf4kkwSCX%9_ z)`BbTCX#uL`P%`S<8Klcpa*UDUJ}a|FcRkSa7i#dLjg%dGn}vTKO7@enNp!c|uN7qWK3|isErZ$q)H8aba#(VLbt(>moC0}FBf=P*?6VY>%5(?JXX((%48p*THBG<%{ zdq+fjjSq>-0WVwTd=zN&eT@8ljzb(kcV$FHcr}85Zd6XuzcC9~BE-BdhkZiK>`Vql zF$VK+xUmOGC}gjNqta<5v%2Tb6YuSgE6Z6UUw7=66%gGloyW_V)&I@K?Bdb7kF#^K z9Id(ADtiQMII}lK^kT|nA0JVxJ%2s3?;bh6Et8!hWeiMvxI$v6B$EM1H{~e0E}lNx zH^u&kuw$IiQ+&v=dgiGpH-Rh^^JC<0cd|r7YT!t-Tq^n3QQ%*nQ^{YllL$@SZrdB0 zX7X&a$+wIL&{<|T@fy8c;*RB*$udZ3sOWFz#7g+v3@gZ(=ET6RhKgby?07HP3$t(M z>9CN*IE{`EXnCl4w7M~Cl9N&$AS2TZH&h_igmI{j;Y5nvNmKr~t$9rR@kWkrj`NRf zJ^smBjo68p4TpWzJeq= zh#;S58Piyuc4m%r$tyuRT;;9@8swd@Xy*fWA1!w=%hmGhw9JS6t}8tJ(zMGho>t$l%{t68CezsA6CVBoLe99QUN$Kq{czh^hG{`bj> zo8+5j##8$ zI{>8XylK~q;mfX=z0`oFhM&HT2r9Jv^ z1-t&Sm{cbZRbU3#gAv+&w{bjJBBb{5riYm;1LLLaSY$ts+d7zsW?Xm$x5LakYWKkk zUM;h=-fXtkCe?ZXECjkwum~aexBB3pF7V&)z+b23HLo|*&>?1v8oEzh=}KFR1nOSi zX`Eo!%hu^$jpIc-ju-sTgBcxSYE+|!8DT!X%GP2?MCxHEXHyMCMaOMQBaEobURy6~MLUX=o z?@fZ}tD@L9vX`LVm_zf$6U}^)Zzk!B>jb$CF(}-;3fvqy7_@DxSz31ao3_7Y8Muj{ zPT$SdcMbY(j_c`dJLL&s19<==&KWbz8M)(;L^EshZQl zNr?J9k9~$!7rSZ0SS#cElwHz@t=w&IX(Y0I8p9N5hm1F1B-UHUl>L_U$<*l(a}jRc zjjb9gWt9KLC=SM3Yy|oA!^>WU_j>bFY`Y{?2~m3|q9J|Hk$c z0z!KP?3Liut3X(ANv^H>#st-2NPh!JP8z7S?sRHE9wF zLo?Z}$t|+Iwn~uL-OL%wA=eyhp2ib7DXh$tQ#?_^EEB<NUyRG|87nS)x+Yf~meZ$`X~^TR8Q=VrwQ>Xr9v- zFX)R!EjYlRXJzPPiN1bzREnbpocZQO)qPeuyY94O_^8=2tWm9}mUWL%SZ6d z6`I`^AWD!I^D1G7p+pcODSI*qQHC6nPPY4t@LrDNY;>EZzdh=EGJPM1;v5^y{I}Rg z0NP#!8%hIV$g;Mz1bZ93sxdHIQ2yLgn$jLkVBd}NA{gZ?AC31h%5LUfnN+>cDEW-P77?y#A$#t3945?eAqHkz zGh3pN`~!6RwwuHpO`-ufH+uq2iE{#FlCb+*NKVKJbh+|mB2F{+BI@<8c`C3*MCk@& zR^zkRbHhQ86S5iGD(6L?X$mDPJocS$UHPPT!aYFSu7Rtcvi-9|`HG%PaMimZ3PA1w zif9ZU0r$E_dbAby@-Pjv-5zU!vFSr;ix*;=eF+*r1Qxh&9j3kW)tL4z)1Wncgf*l~ z{$iEQZVo2|60Z`0xx2Z3J7Qv}ng7LYg=g$uUE9oFEi^l{*mpob?N#GmQbZ{4&BD=< zA9M4Maj^z+L!{y?Hg{o*!mp>;Xl+jBBUwE8HsSJF|2DyBtns&bT9?NSL|rT3@@C$Q zlF#D_FaKZcIsT}Onw8MO>PHuNC~w^@Tr5DL*;USNr~&ujT3#Zvcmen0DdQr)%jRl0 zCh0M;*Xh3XbdAkkArHdX%Dns$UfUmHeYFksEY|B-dHECY2MH+Gp_O2u60XS9y_4Ck z<++uSvNINVY~M6Ro7=v7G?#^dmPs&Yz|ck!%!u7&){|(h zvoNbD+`T@1Ryro$FVj8dUNV6A1fzs?-ur1`H#Jlq%V|;kh8Fce`0-}Z{35|?j*g_a zv@x!QqP0TK0|%Dr4RLAQCtnXJMJ`BY<$4E^gPyApHE)hYc>T3G=yVgf?E$~@KimRN z(E*CB1)N<>q8fe}h1hQz36!ouUa_@vnG)@rvextP5&9ILGNKpZ7Q}NT zt}}jQXt9?iE5MK+(OG}fPzlSsv6ZE@{{S=K7|d|o&(;uXkgg|c5IH5vEvLq%Qmjlz zTz6djg85i?O3%5ki{$>P$QYn3A0aLCu|T|F9K&x!GxG_F!|JYMQq)=?flHGbPpd{f z;bAxnZiifmzl!u}3#NQJ)=^=5*n9oW6vL&2C`h2gnyGVYPj!7@5rRVg1iJh5aWTmE|N%ZFC_54WA48)@5LV2(} z$B_I(2Vgn90Q-dDdL5TDquscS_%pIRhj?WlES96)9YAF79BoJQoH*JSM)uM$_zR!G zX?3Rv@l&h=-Q6YVtR5Mn7Bli~K0v4YnxNDDpp$=z-833B&m`c|sKNnQxxQ|rOBG6P zd2@~1mym(wBWtO}jS;@t&BrdIPGaEaUs{>q9lk^&^FEw|_^+7T=x=o!oiB`fTr2*p z=CovFq#umMgKC@{fKAWv9J4_M)WpWN|W<>#O zsHq905{go(%bljs0kc!qdGm;*xgy6d<&3>9B_1eOSO`-kz;4^b{Tk0^9GW`Ac-b1C zH?szv&C{w^Pd%4>`6bA7fDMV*Wf%rD*D11mbPVOPqe0v11 z=GykAHrw8#s`aMYt5$m()!r>RqC8&`(AD3k%%l^WiJEK4N8$G(5apXiD&48?FVQGI z9${}?%~Qd}s{8Q>d)>cOj#?j$aM%55x;F1{9$=T*&aY`^u!ZI?YG6AJu>4gPm{&DZ zFP|`L)cdgUP;XJ`XBz5c4Rz1HhPqI7_o(g^fn~SAa-kjBb2E-a4$61 zsqQ2fS#KB7Z#o{1=#QVE+86eaS=h{+IuS{X&nnsO84EsBrPI~%hw8X$?;YoxS*ly5 zy4yv%E*pt+JvauLj#n4UAqNV0S%d?xiu~r^LvKa2SbjZ&-;nQ+4PM+S&wkxpw~;O# z&85x@?x>s8;?-$1SjFa2^>{T$fZvZjQI`ADQ+Iojk@PTAq?N6PXfizhR*CAqBfj?< z2q;>rR~WSviiI`irjaH5tl}^FGdpMq}b%+5g9e<7nYsa| zwk(gG#4^TES&=0sQ$|xuRy0m%l8Bkz6%xokITj-n|0ELGwkJ_DBt2cwEIkLGI$vKg zVV7G!t`FqA^tHWwU09gF;fis?hCSr61DOp(1VYSU?y_>E)>iU}W`mrF_I~`hAoXAx zq+nph708|y7UBU*us6GdBHVurJSFYUsFEStZEM~T#Ft^c@jy-$e{02FJ#5M4rZK!p z(?@nRS4G)yk2;dNQuZw*4!)P42?@&S(aGffqvhRJ&f_|t=!)R+-Po)k7~oje^)%&N z{%j8Tv1EiFsiUcX)^jXn>qPvQEajX3h)by@cmanvaWOAs!DXz6AdzE>kb{*(qVHhd zBkBde&6TCj!R{S-`l{d>^zS_&Ln~|)2%OJ|{$;)(nv9}=LAH?(={UJ9ZRJ&LKGlld z#x4Sd$jii*e9>QgS0YBqFUeTz*5(s^c{>XRfp{?o(N`O@L7%R&S`r9e^Ii~@QRN+8 zG{%qPw5o+=k&0kLB%Nt({u0MLC&&G^+N=BV$;B7KTx2c9wIqr+3_N zgzHJ&VB<|ZPXck8y_=vvbYsKS9Svb4tN0wK8t3YJEI}5saUyeKT)sJuIDns5jPy^t zzi|AL+Zs44TIsiu?1&;>%dbLF(>JotQ4eL+59*aHK5NnCYiSO3N@N>+zF+|WcL!hPiuna^8W^c(d zdLxD)o+6?h0Y&>=7&=n6Gja28F5Kip3d?i#cv*O`FOQVG=C@%@KD(KCf_9UJ@xj8t zc@miZJ9GVQ7-Ek4VN*xrOCB@-FKkO!;MV3p)B%P57I9Ad+jOE6xse*|=@adTKMUg@ zg`1%!*bEA9^{~Gg9?hr03x+aLL_B0>$ce9yCd@-9%007OiVgE@D>hrhaGgoic_GWi z{Uvr9BOPlHZfTHt3iUp36M6fD5@eG zB$QLke5catqvlw05jPj%K?By}FP4tAKxtoC%Vz(&K~`G|B;V0-T5JR4Bc_vlefjtj zJ@A({pH#@DdldXEJZgdnot7BBqj-%wh}Bo9)w?u1-rz+dCnMb13eNg4_v7k>yuo}z z$HC3^gV+?9#io{TB3k_E7Pl}L2-J)1>cZ&*}+2NY`CCxOLOBf%xw=-LkzXtrC zYy^`}hzivGm)?={yu;)F>J?5Fn`KV1N!K6Iz?mO_{sR73FMbmFDI1R$fV5EI5-SOd zpI_nqa4CWiAqqlqDJunW)_)<%X7YSPKXyqqgHOY* znj2+rKc!xi%1Zp#q)<8Ddi$vbn|~RmRBZBEc_f<@+Dw^2VmH!Q`?=hB@{_%hZ?1H} z$kSO@Wsf7(T`Jukc#@vHj&Cw@{*hQOJ%?T@&t5789c31-e$xX_XN-C#sobE_QkTk( z1b~zd9(q>Lf0(QO+PNbr9EwseF;VN=vP%j>)%a z(=4*iWfen%DTbNcgG^Wvtb|gTu(H!LVMRpZl?h9wVJ0kFs!Uia4KiT`S7f!?B-K^= zOOkJK^A3|_WxgWzfbotuZ$)Iwl4GjRO-8fLhJ5KWJK9u0F>Yu!6;KOfQvs=5setIz zPX#o`PX$E7&nY|cL7!$Jr%uo+Gbs+zeKna$4xu7G8VUojWC9WbIDmJviYPh@Ze+=X zNS|!MPntmgaE=5GJisB;j>EspTCebWuhn&MFyn2MOknP{x+(n0!g#H2aA#nGj}OU`t}#8Z_`TurP)%OvfA~d zyGb75RONw_O$5~{`pGqy$u#c*IGt9U^NJ1Dw9har(I>>^RrYAh=7gn>0)i8ROl4u| zYqsvgZq&_|GLwJPm|ga#?$K6ece`TX%n;6TNlB>jtf9uwaxs| zHFh+2l-9agMCtEZ^>;0yOldq}mLr2>^}3pcvb)|nmYdRLM0aebtLyf$5)idPjBAkC zX^AligrUx@B9`veM4rtj%(pHBz#d7VkSNc0dr@inEp$}kr& z|K00$xHGK8fzt;H***hPhwq`;QS6Z_0?_q<^OZ65beDtX{4Y<;AyE*dSVRjOK_!(_Kgn3n!ZtK9DU zFIZ{&^`Z%U-IA+q#XW2mQWE~_iHVe72yn!mH0PoP{ z?HTQ}2ebP|5*Zyg~w_Y&PS)DqiokO*$P90+aw*W3&;8%pHKtr8&+gb zzl{aORxE!7$|HT!!C%4fi*3Od?>G8luKz{*#$Q}qAk#ql_>Al`nyoNWxMsiS(KSHdXV@w%RwY{uT3v!XsDvPwiwLKT?BF>g z`@w8e#EM-$R-()FW0qWrC_fd6bP=9bKTH2lF9Xrng;w7;FUl$Hmm9oP?776I49i81w;O87tu2yos-Pnq9oq!yDC=J=U?(8cDcm(JfYO~OoM_Lxy-;a>J zt~HU~>sYH|^S;fVawJL{T&>)BE0Q^?lDZJZS@zV;HCIkhgwL-#g>XA-95dLVaqBURpu)!p!r0J5zr3Jhq8KN;jF4Jtk%4Yzw zrl>@?zHhko-KLoFZhdjs2-bI_zrOMs+spdCsl#~gSaeJfsprv!*+x(?*)~}827|?Y zxaiCNo{Rp8zvzqoMSspN`fY#zMX&zmiw+0y?r_WVS~gniRNZ7Bf)HD@PP6uo5QhXC z9?4Z+qPxq8*)1sC>;f2o`&Dq7kjAYs@M}83tok6Gl>6m0oaZ^?KaP=@$?=ni1|N44 zTYa)C%n1r7!dB-bMv1l9rF0rFITyn<^79ioMsR7maCYl>>*6;fNYR-ae11PitUcT= zY^#J4SVj#|dg~nXE!_iR=1>077Jl%8?GG_#e7YM+_-0AKFfM7K@UMsf%`&NNhhgWytuQ0dE=t>Ye~l zxBefX(g1aT6F|KH!+NAdy9MNbfEvfoa_$i!B-a8-ZgUB9*#x1S;VS+()(pbm$8pce zHG^SkZbc#F9}0R!@D1hQdllar|K6q2jBD3z_S*H*UanmW{A<_8Ez_@EmtfYLV}9kX zT_p@9H^$Maj)-UmNB-5x5s#PJfGyBAJ?b-5J1v@VT{WP8ZvM7x|p3S)1? z$AtFnEzxI!Lr7oB@kSOM5?IGpM_P(Q3tz3}s?|yy+Quxhz1VRi>QrK$DR(|AXn9Yj z)7Iv50Gopu(h7XYp@B<9@VF3J7aZa-FqT7zP)$}-E=A^zh>X#eRVZmRLwqerEgg0& zc|}g*Fx%xP3Hr`uUKi76tY0J2G@1L6QM54fji@#ADV;Q`^9eVSKHM)ffvb$V-a1m3 zll_IHu*iZAuC$6vy&d$PsPEAe4*CWnShI!+!may~v5f^vC>1yFom2PK^bYmhL8f;A z4T`0>Q7;oJ5#ius>2jVM9j}+G#(Xb%4yH|`BS&P57B3`#r~tG{3c{_JzU)7Iv^;40 zX@RS(BCxZjcj?D!B2exH>z?r})4Xwf5t+P*<2bR=nr#G_J%pE!A;tI&iaKrNNfT(a zp8MYZ9Xc6zL%SW!$HRffY=R&)CI0Si7_MfObuVQ#KSrm&&r2Bl)X4~REqVc?SfSxk zFWG1_Ex_g8D#A`{G}Zfp7fsIHhZ%zf(BZ8ome>R6*MNr zCS$7den2KrzL!IemdMPs-&62Dk}X#NIPMvRK?c>hIm5N9_&U#O4(}Y*prw2^h#nAj zvL+a@ukZ|CycWFhm3`rhEy0T&jVAvoQ-nGuaFj+CC6c$0OD{W`)b=i^`6Y+|+;2zz zUmJ^3w(*^YVRtlZNlhXmx)BlczHT@6CO{jzM~QzrKvDqMKF3p+=siw?5>B}i2S1QD zVHPOROg+M+ZzRzWGR-RE3bbeBeqikrblSuFPJ$c@qEk6$23$|6T_oKXfg4t-kbP-JOW!a2U^J5-7c9MOKF;%=U3MI&nuXjk*PrZjJO! zHT;d&+dNJ^MU!qS;AZ!2B&d_ljr>Td1z5){R~@!%T6Pijll<);^{e;wYdbZ=+ALXh z=E{2wDBn)5A}&uWboGB&OxyzBQY}G3`FeopE1$t0N))mAW{3xY^3s za0{{0FHWwp%7NXUFg_S?cR1Oaa5T3{P7ZRo_L!WM#bH~K>~{lZeSW|=*0$iJF7$qG z?#C&&Tg-QQeF7)eB8oX#=elTzM33o3K}Ukgu!TvCV7`n%6~3z*#v)97B>KLKuWVzO zX8Wz#_idq~FJOdb<&$>>DHOT{W8og)#7`?E+-7r{HFDLHY<=f>NNTW)@vq+LQUxkX zrVe!XAye;S-X4Nf!90>z6zyUjDMf^|(m^8ZeXC{s*fzD?d9+k??Qa}Gw&@+i4lPX< z*oFJG`Ai8ZCXJC55isA@u79)(bZypf+1bwoIGqrM_Ju;`VA8Uc2+Bv8c@}7$%yv$r z9L1DtT%4qdHs)jssTGQQwBJbWMpj7{%H_ToAO}}9qr*HJ|8f%JyDYV zmGi9~sfA2Sj|==U>e(HUaB#}FzC0!QTO2(~`&x!ly~=qGY)*TFjzNk}8#rA7^N!+< z&{_*9`^=JP?=aN~)_hEgOu%-okB;GBfLkq~7{c`&=Fs269BPv8ytiTY?3Y&B(rF0# zJo0E`ook*@CXMT`!t-l@o8JRvXV@zDP$k!_R+Vd0RqCnH&0J+`+%zHi6F4c-SQi;= z(8*+tNqXjU^k@;d^`c_4Fibl}zDq|}1Dfxc4J_dX~8*8sgD$9bKfZ@%j0(lWX=Ozn4 z5glb?a4L;QuPU$0zu40xrP+w~)CsGVAh)6K^>nMsxCUS<0k`Lb@F-}8oB%&dg6qMLRH=% zyBR`AozGnW*AtR^Sf;X7z{q_BXH2+-UwTK!Ct(%9yuV$Gy`^FbwTZ7GK-3I-&`UCu z8(O)3y=zLd$|fuk@kDYtsu`I zmCGHHR_)pG3Wvx6Pe54y?(h;#0zp5yR&wGuW7UDQhE7ndqP}iS_*?1pKVOoT^Zk5l zgbt15Nro39!2&ClVs}*{mD0}H?oOs1%6T|#ESgfEyOx zIl+P9-2W3fHO@f<#ABaW+Kz2(-!${r{}n%&~QEgr&fV$3nUF!aM#tk4B362* zFw$IPZ&Js5W*NCbWkt1o4B{+VG_`6Zm1?Z2cH*B9Y&)!cs=MwgS#)VmkwH-7N4DLM z{Y;PHhxPW_e`EqR5CRPYZ?_4$BkY)AgH{Q>Wr_4t7UQXu{92eKD7E-yJk0W(u2#&c6TJWsnF4#E(d%g^2^UkQqVUpAwW@Zu)Skn>1ejt}~te$ zmEcweZ;r+tkii>rrgw)|J7}&3nwba6JuS1n&WUe%hyKnxf?LX=(g}b?b4gy+ioN!B zR^!buIoH?XY{0ct0)lJNa|n4}M?H~39%q#&#hOhkDr>w}-mlE}C#Q<;$mYZ7%dolHS3339mlTOQ_@3vCW z8IIOGUmqHNGO@KUunpw0;hXD%H@=utFW$}p-4^hoOX4(u0?!@Dw8PI91)upsP`%ix z&+g%c%qp!sF0B4gv!yF2?T~Qt@Qvr`(D=H{kS`Je3`pyV)TGP}_YRkU=PPL9ldXMO zZOSe|$o8yfI zHPI6o!j@8zd$w+l?>rJh@9IJ;Ilucn-F}{G6)1(m_qX%DFkvpS(&k)(z8|<=h=Fhx z75aLiu&3pPzMa$OLqv3OtU@fWv+BU?oLIhB&tv(_ZYD>loj=P=ha(u9Ckv8^Z50SZ z#b3FwcVW?hreo1?!Rp1<7?Ndfo>%RAlrTqnJ(rG6`P`pb+Z4y65ut~5S_+&GEuunrO+h`$=Adoc@I!q=lVR^f(7qL3_ zM3d1I0oNs^@}F#1g9ZFgk?#_y+nQNm{iXuG&N532t=q9#J06DdzCTy-9W&Z06Ts=? zeX_Qry>Bxej%s3uY)vF#J{at1!L0UfW?KfQ&kWDsHhrC}JN$H>{S?^EW+JW3JMHBc zT3|lM+we%xbI#}@OmJ&Fyjm@CY-;b*r5^@7`b&Y}_mTq>{Qgja-#T+e8*7L#i2P8-j6ur{m3gik8eU}yzuoinEMwcbj84dLbd>n9VooRi8|9K*jyeN@2{Vauk!9>-vb&e~JrfL;p}d@VyclLg58{&$2L}!3+M`r*}WwDL-iQ%-Zqs%|&PR>mL;Q zW2M?ZdJjG`Y=c_P%h7s2;`{l}{z+h!bRMt##+&h6H-20r&+dIL6ZN5*>Qc*)hxE3f zWPtTOFYy%>SqF{sv(~{>Gk36}uUZ#NTG1!|dYs#@cmE1 z=K=oM!ZjA^)cR`Tt9n+y-pTV+i;`OBT807Bxv)R0aMszqFX){dtSWe+o^=6J?(@$J zEx?&2lOFQVetrFJd|-fhea>p&!0OKnzteD}baU2)wrQSHJ(g*~GNv=d;?y`kruK!N zsr%3V=bUwsT}poVz0&YG|GdEZ?DEoQc&g7V-J1G8{DJT~bl=5IHEh0)kFS2X^`J^& z?+g4zU_E@dceSYnz39xd{_zhxR2*Rc(YyaexGkS~c2QxWTQy$#?X>doFsR$V?>Xn= zZJhG8CED|SziOs(LEm%EO7?b0*V?D)GkafHXrayv5UEdZ>sH&Q7ERi!Vv^xnTH}{b z+O-qnU5NI;`<%W-ZdG|-&)1kYp}(>mot?ijFz}}YUevl8t1Gz%`zuvgtgXTwn z7`cW4kp0c;%zvDfJj);1+0K`{mV0;L3pl=tJF5G0`t`LF=ZD_+Jn&Ez?ZK~sy@w2O zUfOwS{O3hhON9H1!%0NP+p7}N9e8E|Hw0#SaegGCvqFS=8&uEv$ogkPy-o3){f=+H z+R1k1?Pq(Np|e%O+%^JnHVdaZ&TDgr5)v?~IML=)Ifr7O!Qpof84^%7EQs>_@X%fg zRJ$UIneueb0Owb^<9pcZ+qAk{Vz4cJyI$Exw#PVH_-hFf)X{tvd8RWeUJDiE_;(iIU z2~gy6wX`39v^@CAMp5|A;`(E5lO%s_=g&9c9oAM#prL*r<#k&e5S!@kR7%0l0Ai4$ zaGQBD8#I|*gXo3AWi`=lt1A5}tn`v9ol$Sm6h~e9nxXNUdT0W=$ZX7%E1uAs11;K= zb73pAQJ|^LJ%k0>W{!MamJtdy&D=q7yzD%F_`#K?^xh#Y>S z2zN^dR}$f}W$@1ed*jDn*>C3zayfr6}-n>FKecdTEJq`Q;J#^LsA{r zGcBTLM!G3%qOdL5!$CT1>vc;y4>qiNaJ`Dvj*bS!%*3J9(9xP`wdiOfbhHMV;lUEp zry`_MhQKt}C^SF)r%`Bo|1_HKa6Rn)WryoaEv`=!uHOf)S9vx3wdl6Q<5pM5ekbv@ zLH1=Lt~(rYEf;Z35plgE;=0`tSE-2WQ%79y2gDV2h|jSw>pt7zGIh9-bYo*;Rs6Lb zUZrbfb-147fpmB+mX8?NIqDiO>RKo2Diw8o>ZmKV#|Z&-g+0n(+1jg$KC8W-@dy7& zsOzRE7b_1!U9U7L=dbPk^(MTVA?jM#L`eyzIqF(MqOp*=raJ0+%~2N^s25Pzn@tou z)~7DN(xMdV3P*IaL*LS&7z+x4N}-!}WM5fiR|~>@R>V^ca;BME2o(wORC6Qh(}=D{ zTba)tjl5fjcvSG2D|pW*o_hk~348zA_5SftqP8}QOqIf=fO^#ALPtGYeCk;f)g_AM zFxSgYU^G+?6^*T>qAydaNG-fxOGWX3igptsj8;r5s|ya_FGSCil^BOP$cQR}o0am{ zE)CwZHsaj%QC8==p^D_mrRDN8*xQs5Ho4EcnDR8o#bF9&VKChlY1latU3W5$#I5;N z$WtY^%m=eYBwSlJ4?7^c%CEdp81Kwg^gp-ZHcs==BKC#r}vqi-l<%TW32~^ zdLvTdH9HlK--YXB{8{CNeI3{RaTP9!C*g~B&sTc0;U3o+20DINB@MLXCPoI)Q!#e1pF`Dm46l@R1op#7SE-j%B+qna!+Z3Xke+V76^yuX4i#T7EtyC*%K+uv(LpxGt3Zfajm$38W_ z2;X2jZi!DlznjejbBasRS(?XTK+WFt_8Q=2N4mE3I{eAY{;SvKaE5|Nkr%tpYu0|K z3`1-%il-S|HkT_MVn;AD8kL+J%0asQxYI}9dQ=~Atk=ecxgX0DK5Ie_QR=QS9CfZlAIi_i_x>7YWdTR!zF zwb#CYvbOG;yu_NY`Mgq$t{yr4U+EQG^ftfClGY$O)yL?doFrE;mSx2RX>38QnFjYT zUYX|pW zGTT2AU|bb3fK{+q>`E;)E)oy8m(U@8p)8N$UYjmZSTQl;)2sOlX#>&a>1X$D zCHhNT7}ooUb{}l(|;8@T}KAk8R8d$bpNh33}sIadhtY(>37)jLu4`9Mt<3mxv4LGY< zF7lc$|VDhhU(Po*{l4nU%A5mV|QC6Vi5 z-qTD!h0|u6(nuap)zM6uPP1OChk+3Oc2y7rTh-Rr0~3WjH@&-uBY%9v=kTB#A|+m= z$XREFAv)ya-7IlBXd&@%x+93N^h%w3yw=ELO%yf1y;)3Zz_xJYj96E%^OeMb%;)ic zI(f|>>cq&_BKXX^Sehzy<0pi=r#mv<86 z$_z$kjn4`FFx#bw3-Lsxd)t^flUUm^(*;~Q!!GDZ5F*F4D)181?E;J>2zWa)UKxMz z^iee2-Q!irQ>-rE-N3$(ZT_dsR=t61!gk>5)q`kl8Nrhjs1}m?a}Tq3KH+M$bVpZu z9Z%JO^#uYGA5B3?Yp#*z^`!)sM!L7W>~>}7zYgwoZm>w0drtku!BfdR(u zG%)N@sG5teoq`5J@b`d5WnExQX#fn!e}}-BvVCA&2KwbBOjD%k){C^Zh@+-88;toM zq@@-n3lIBjla%|!?i^mK*%Ws;bD(~YnDSyJpGKBMEOTej(5U!HddvIu+wwgT<(4xd2ibM0?yF*4QHHz-lv zALYvdW`0G8Vwp7pQ`k{nwWPzp>xaoJaGT6)EqndwGldEFK$Pn5PuA|-;Wq70w!D$a zwqdgJ<0~K2oAdtkjGgQ6(O5iPnB|u~;>CzKCvF5cn5z>VGv2YJLEbB#p;X zuZ3((9zfpUqea%M@Lv21S}4BlTxDEr57J#X1gyIkhn%|mX5G=U`z=Xxd&KVv-{A%) zPZE&kwKVzlWOL#&JsH<$FfzKkK@$9j@FA9~ES)`@P01V~=LXLl%ScyI4a~hYooE)* zu^R+wEJ)TMi?pYyN6Dw%>~Q=A5x>%?hNuaN#NxYg9H3QTdjtniA}*I|HitQ3=m7$p z$xF>fGCtn&$3yeI)*G`GK)}Zf7s& z3^Saz1%Dd=ObD+xe4v0;*1+iEcH?*)11l?AN)4(FHRYxyt z)nymOTl4>({{IKY_w-`F13^*$#KzS7^aW14t(68oCr;Knx@{RdfWPrV^AIxg%Orew zXoTGDtkc>fBjD743M&qQ>VXl}I!(O7FI<4F>0%fR=K$F=p67rbzWljfPH`^-W0Q86 zgZ4&f1PzV`@kD%9ROt@xOfR(Z=;Cx4wYMco z6zHd zO!E#341Ykrr*-3is$xrP2&l?GGyjdU&tv(uo%bt`1X2wffG|g zY_5g?34YKVjkgzz{5%)7x<60Sf7`!NcDTu4FusG5JxrN>et#gax!mbEHX)lzlx-91 z=^Z`@NamRHlU|$n@m|hvy*B@XvBWqewTZ?5kn*CW?hBKo|GYQ7oEgxce4H!1)+6kS zH6%%}ie2e*E4U}HY&?4UN=``D!5?J}f;h9!M`dF-L6oPQe?ZHQNak!|87PRyQU3#5 ze}WKoE&38+C_5(i6ghl;ppJT=dqP}h4R{PKp>`oie;3#ot)UwlUPunQa{gBEx0>%E z@T(NK_h3BU?LJzK5oFRw-&+UCha%h5P$>GldT<^UtAdKXVkHGBHAQakHz|k}6sSXv zu^fo9H+WgQGj-e^BxYPWLh{!J-OpVCSH$mMk7MoQMm>(Pk6-B#DUAx7^oXWSRLIsD zVz=$#8ccRIzO9(>yYVShV>V&K^!s4O>sVKHlU@Nu-b(1L+JTbsPe5e9E7P|49*Q0a zYI1shyhwU0%NA~Dbvl~0=_L-Z>xWt1$+{R$U-$%*y^r1ZBk>e@7VjnK-?#^7+^%@- zOeA*Yo-oI!`YR@CTk{1cGisPeTe85b{~l@rfQruc3GKwAi6I9IGLr`Yv3H7 zY+>v0>g}-V@?gGoSan%r9B4-`Ew~zE)f!_fsQWzhr0nRH7x~&dpBLRIUbK2xWy-p3 zgP*64cNcOc7Ou$B0ewV|v~4`NnUu-w=3w~56VYfEBS zlTP**PQWldE?GEe+qWO2zMT}jU5Wr^+4XwG|Fv{JQGQWthDDA^4;YK=@7uC-z`v)E zfCje0=$iJhd}K}YD$8FMo~<~);x8ouf3aUxo|B9f`m6;m^-f%|VzeDRpx`<+!;@?S zCH$@7Z@wb~%#aI-y+{-!e@B>&FMhBi%<*@Gm;D{#L3V^gxcE5Oa#d)Ey5Xjv%Hp+8 zH?}FLcgwB0v_T~;_Wj^sMK8`auUPhd2)~nTHz_Uqo6Q`bhr4!t9uC4jBOd;g!m>ZB z9r8(BHhqwyO-$v~yAq)A@!Q!%{QU@y{eKy#Aa#ZmTimA;j^HQY?oy1kz?~@I-nEm! z^<|C1ZHO9W+h+y;`!KisyR!oe+(`oN?NVqmn^~OI9!OWp(0th1~gv7uKCXtu%rX_Sz*4khXaJ6ijN;%n8ue9^#&&ZlGAf=MY#Tql*9Uc zt^M7U-^}4EF7Ml!&rwU*!{1Gqr*$VJ6NqHi69Obvh6r)jP4@FNPEk6HTunv+9ZsGh ze}fJqYnr>?6Z;nUhZXfJVZxPjSZM%SD@?H6YVWgs-cAfyDRaIt406RFdB(Tp3>7Jn z)B?qk0)cB|ukCcg&~@Rqzrr?o8!pS;`071QPTUEaiVR{Zx&(}Dm94 z7+A>Gz}*_Yq;wJ24NY=unD1&mI*d2VSYvC%vq>@l_n~GJ9}nn{L8ERt{kI&?EGa&t zN>6b+&m?F&II#S1h4y&KI93Guny^b<6^btru|QYmb&k8WBhyieDn#bU)nQng9-R&+ z0)3sbKji*5BI}+l!^1Ne)$N_DT@V5TTFS0frR}N%MLkuTu%h-r;rE@YHT%DQh5#39 z&k$nsXdEHF*EwU2OVv641gM<_l-(?)p!Jy?>;OojUjU=69u&Gl4+@Cus|zn7Y<6}c zemO_7$i9s#3$JJ*W#O0PVQ68-+UJdf3cQ{@#R<4BsjC@8@7L>F=>2+f^M*=0{vcXE zba=xtX`2`cReozQb3jjeE3uz4jz*t{MkU`YS26>qmJ`o zZJ7CIYVT&QCLo`LUW6vs#uy{zDc8sV66r*bpWDZ) z^|;!S_|>3YMT%3LB}b9M~mlTq_Jj?sZ!cIvI?S-)wBAZ5WEKh6v5b%&v|7^b67I9x zVS(0G@^YHFi|kv$)>Id#>~im{2Csbk$M*6%3MVvM^|g1U{|4=yxEa?j?v(i8;7a@Z z2iMy<((LLKpr!uVrM?2RF8IDUOGZUmBv{5~YJg96mKmFogv}Efj>HUuUBx^t_2DDf zWBS_xzucXSCFY&hmi+GqKSIzAx&^qKec8w5@1s1eyBH0$(f|Jd^=1L}j-P;9k5POt zjUJb_0Ch3~69Vo^q||Q2TgSHFA?}fmx*JvT{1}@oJO;yE*+owpjx_=@d~o#FgS#fZ zO=tUeIooT)bxQc^t?0^-Z#yUISHGLSwRvrn*=QR^Zc%f^#M2|?-;N%rG# zkop-0oM`y=#G1yXt)bplvNlL4*r!Je8bon5Oy_x`f;Q?%-<;=F9kN36~bBT5ecxY{`Xg}no7 zJSBu~p4bzs$P!c+E9ur*(r?8oDe-4IEJamuvX?mA^A>x}=Xu`A);Mz{v3=2Wd=t3e zh3&~7f@q!DqJ>Y;GqE%`N|ImAGwQ*c#dcQl++3Ek)}IptS?4c09wRuj&XrBTXG$K# z7#GP+5a(z2`(t3u&zq2eRg4*uZEBL=)JhVMYNAtcO|k}!;kc$UE)*}TnGK&f<18E% ztdSPSIn0>Qwd`$f7=(Sf`OrR39K=}PK+6r(XArOoBP~3f5C9*qBY~^9^iL)jOuq zU=VGYyGP{nq9ysb^SzGyBj0LJbnyTxZ`#hAL7l;vxpwth;8VGe*W*Q2)!DY@{=)0> zAQsUYHcPYwYfZIyE9V}}Vvq7#-%mrJ=OChyr&!5OYcL{Ji|*~**;>klC2sD~ec6wM zPWUo>mR@b=@(>{i_a-{v?DR6z76+B{m|r#~bk}i(hYKb{Z5R81^O(?nw8=qke+NAl zQu}P@|2bQ~_yOA*$kDK?xA$N9l3Q*W%Cgyrx*b-l#%Q z3C$Mgm<{K^TNAF6a}nho#mLS^_k%j64E#3tiTwZ|!8ThE-FvYZ?NSm) zwP3;}n%V|TXxp2&@eycO#M>V5qsXZ(y%uk}nsQ755`3dGIDo((0YEJFTJ%#x@k&bN zxxaLnjRf(qE{hhB8m=xIWgbxU!&--UXEprdFzZ(el!#Trx@leR$eDAM3 z74TFb3V&S6ib|f3RZXTfhvC>3VTlX4F=1%`GS-`TTP+v*Ehl%_a+NsW9NgS&%-@jn zk!~GFn)t6+5%_FQ>;R~lQ8Y!>su4Xn4Ep55*Ml5>;fGaxn4MUl?+VP+VV3bNGjgiV zi|x>}V|-^#L{zTl%v zFrKUBWX-&bj#ggh-V*8Kt%GPjS968HrG!i2J7$Cw0Y zIg31-Q0ik*HXf08JKjAq)KbsGQI>AOPzW1V{UsO}FCL6BRCc;OumVf&`ck1sAsSI!81LfcD)kW+_=2`tm&9XzIT9@Qb&q;QV{`gl~+m_L-k;zBbM zK()o|pjWInps@o-7)>2dBv(!(A%b7-DH4Kd*9-IQLembCesoBMneP?ymmkZ8-cytg zk)A#$LVXOclq(r2gnhey+7wj5n}_V1X9WQ2IM&5wsMK$z)UUmi{!bG;*=biZ_Lkh$ zP8^anYj|!IJ90YV7KTVo3`vFFvaE<^)Tn^Dw>(R}@DMPqr%njuO#m4`z6_);7>SS% z{Ms}aQiKCtDuLi@Wf=v_#t>S>vaW7{aC$wfg$^uXUX(A^6#3%X+xuN9rx$95x25l_ zoUVbggE{Fk9O%E0F1uv4Xcl`7C?i!dmfN@i4c;FVn<*Ks0A5EfXD^T76dg(l)1fjl1FO{h%n!sBcDb**#GO~2vIDA9!Yk0gc6&2t z6sT_fj?6jsu(v-0{qITz2IK``FVt$9ovhHVjr_rTg^*^v=atlfG_euJ)m_)^K$@W}B3_Sf z4Sp_w0LG*XJrxe;9fm{lpd&%NQV@Qio!d2puGohwhA+;?%v)b~s~sgXgfDHd0B&PG z8|EzT?!re@jA<0nD)u45!dt@``b`{CwHRs6cxo@n%~@s*0TQy|L1U#Xw7^@7e!zOx z?;D_bwlahgBVkzaI4rd=TEs`FuZZ>ICgxKkV{CZ=b@}nfHF(c zErME#kWL)7gc(0Ha$vf>%&bBFi64wZdy*JQoHsJT>_y}q?}W%D`gtSqP1~Y`8!GdJ1JA% z_j}UFoMaF4bY?z(tup%cOcGa{a_*9p6mYS!tKSEj2i-&uz)}4XqEWRV1kC-!VbSku zQhiv|fDGi@*Fs}@Jre~84OP-mbMu-)gptx*!r2><(kSZs9L-;WZ;O zq^~oj^^oXBkf;VE8gG$k9Y`b`Qlv7^tR#YgKCG}f^ez^#qKN>9R&e32QgSNUcE24G z-6$lYQ?o9Uf82vZqDj)ert~c&nki)iNEEOGhsE1u2NmQLMNRAF!+k$?`k%FuQ!SamE%ux-{d5;bI~P-#zHFOypmPyUr>I z?vB{YwnOZDg~TqtZqE$&h*d03`oRew!;(xKtdX?`MYI*9>^DmH<&$WgO(vf`2z~L3 zY!IyYB!w?s$urV3`-V0UyK#s~RI9=cnFPV(9Bs@Tfti=N2VM@!nGc5|H>F@4wuKEa zj>Y{b(`WC9oh58+-xKXy2(avCwLk#gKN-qLuLjD$0sqzUYD64g$^Ga>agWDG&I>} z23JrT$-8xS!)&u6QDqzZ&KwL!Ovk}EA0a2$1)wvHC7+>`@D~C8^-M9~?;}4r;9u_p zzZ;WvG-v4wT)QS&sok_H(o#yEMt9R%0`q0HkglA=?M~4Z(XSdKE1f0meprXtn6zjN zx~ioy7NeE8Jd`DzFVnJ!YbsWecrTo~9Ngs{@mY3~hO~yTYrDd)h-E)asLAHqhIpl*%r!4_XpJPTn% zDb)5C?1BQ(y>K?yD7fM}<&LKLP&=8n-yq z$jJvZ;5Y*gHFo47P?%&X_=G$1KssNbzRE^9R$__2_OK(O%{K2Qv{#J(mJ|`N0(!}- z4uv->Fnl2^C%P+xT6X$?W7WEivShr#CDH7}@wt%$PI==pg=7~=6?KFcf&XGFnY5;m1{iW#(f(4h_+^_laWZ%{CL$z>!4{l1h?m84fjIkE^amcHiewqK25r1&Cfe|h zwA0I?Rf^OgkYKdz_omQ)YvPfEzUMKBvve>lcLdW;vpE<;iN&>To`X>RSha`?4Y)Rr ztpKucl|I_hIjFP|3<7U1HHu)HZ9a%2Qrn%?TrPK&uZMA7`OYG00qXHkV?ZxAaRlmW z#-JGT%*KHVsQ3ZGg(E9?kB)p+G^l?ZLM~4|4%NZzWIfC-v%jkYsj14YrjA2G+O`&H zx5nKm*2$_nuL=p2JE=%pZL{m5R^)P{{*j2_3aKmdZO=sCM`R0?6?KHOLQX=JscN^n z(pDq55v&IlQ#O2eJgp<>+pyvi;2PWTfqE)6*A<-D$JXOHYQ+K0&JO$Rs-eBJ>lH9( zF}O8wPRUIVXTqv{xv7v^6fGbkXIC?|iA1lZ1i*0BoE8n~Ni!%6G$x484LbdHGE^`q zbz_CcP>!>Q5DllKk>Ob37hx{n&g}ai&xO_;{Q`6cv`)72MHj1!Zgd|yO-MRGd(y;4 zRcShaS`EN=71}vs=Aq6AcMsd2RCnr6ytMwdAr`Pb6^cIkF58Bc+fXgr?c#eXGx7jq zovmW+08MFvKczse9IzvFL=D(cc-Gnm#??x>;g%qIao3SxAm@q%EzG6(-hpmx+j8R1 zcbY!G^EHcTtqx)Y@&sfcd1AXq3%l?s_beirI^~t#IzN~ucVPC;GBfXTZeKt2O z9u}o2{~sP0#!L0F`FkHjIam1$Z`F(|hSlj3yq#ba2CREl62@8&wbw&kLd=plqsSwMPi^D*A@r1^;cTpz!V|NJ3Xldr@2Lv9fF zWVkQh!O>CgHxc1ah68xcV&cz|(!)BL%qs8AA!?xpb0OU(OjodP-k3KAlR61JtH~+p z&jc`09#-XU=YJ7Qas?@{nkD?O!{OW2jlSK`=-Y1^eR~awuEKT?4SFlbyr&Ij76h`% zFwZopA>3$DKDopg+9r-!T@l~DjF;<$89NYV>}4`+K2&qNAG6}vVrL%_HuoaUh2{_8 z+cz40`*x#m-%owpBN%26Ej+doYck=)1c=VXfB_`ADM=;;ha_RuCE%sdkA)r~Z6!>F3D*>X6_il^E+wG=ytM0(bV!FH~3-nxkoz^GFF1evBWHA5U95{MPhYe zVsQ&MMLo@(#gKN?GjFHU-q!vA=P2TOEL_qIsUJQrXv^(y_rPYb^GbIzd1SV8o-n5l>qTKmp?J;~5>dk=_Z7($IxuBA`7 z6gp0Gt&rKHzH^18@)P;AvBF%oJCwE==3TJxIJS#vL(0KdPl2gRyxni~a@wEIZjz5P z*0oqI%CBel|Ec$)L+^SoI-XbW1(Z^!4RnrWvIk~ImVEvaa{7@tUp!)?sAZYCro=i( z*QT(lU~K!C=@)PYXo`PboQ>|8;ZlY&{t3{tMt(W>SpQo_t~Gi@mMSlW-jn!2$at|* z4iPqK*8ajGtlynk`f&laDD|8yEB}piwfgqPRtfh87nkTu!&aV0}68>!{QPm&$!J9A*fJ);+4aP;JcI#v1_s=* zmGwsRs4eL2wfxM>I5kX&6@G`@;x*NG4W=>MP6L?(J3|YkP3e{O+FoeeKFwrRAwFRO zkJQXfOKfJnYVX-L+gy>iCvJ_%lK0|s z)*1IKUhX9ytQha^#G8(HzDrM)sO@t6*R0$Zwtczf&1NMBi`~qSO1y7)sPI}!BJBz) z+&ZG79?-6Fqp8+tt{x`CpuI?gtKE8x8^mTkUoy;gI1ZEjx*g8t^DJPV1{23cuQ}N# zWr6nu=MxxaB?qP0FS$s^aS$P30rT0D`DF7p#yLr^sWl%b#n>J7#w97fSz_|{1yOYa z5UsQzIbGkcn6`Z*kO zzjMs9{c3Fali59D)xs(qNBg05`eRJDcbI zYVLQAsr1`_JiCX**`RTAebkq%LOi!nb32%VG-6zi_hM zI49f5)lrN;knO@RrdS~jI{z{e93p?I6}_@3JVb_d@3xyj{G{lw%<(nRUwS_?FBle8 z()H>{Y4lg%%q!eyNou<Zl&LrFh|+tBy;L2oBm-yPd80xL7u)nz4vY-Q&8xxqHaIsPAS9v+Yv zGZ)D1h=>Kcwe!r^oE2>WX7o6vxIE1a{u8#TOw*6}4S1vSbP8E=;T^xOvcs;76`B*u z+yY=R%=#CRRTf{RdT6>ifZ+^e>0JRs{9{jL6s2|))!!F*KJ>%;-X9uh=7bVp){%^Q zI&F*`&Oevpz6=^+n~*Dt8KZE-8`*|fqRX6b`6eO;q?WKjjb`8Cqi^I$>x$~(?gQ)- ztrGEL()c}Y3VE^0Op39an%~ zaU)lG;FaK&V0u z>o28GGRT3amezkA^wrVt>OGXOR!8(!Qi`o#GqnF=mWK=4f5+_-`d%)Rx+#dj5Xnl# zdYeQH$eu*ohw-)6Kr--zmR6>vdAEOw{XIEhwPSz~o|fnIGr!glJNc~ZgkT&Je)dWD zqdPHpJJsqg4F*0Lv81UU)I**Uw>HU#9a$H_1Z4ZxAbWLI)`Xy_71fSNm+KiI6Uzs#)3#*!x zaU>vgOG+#&N&wI5CcZmnIE9bw6cFnt*PGk&z%}he!Z&JKT-#_~R}-DX+|sY^yrwjD z^BUiuC2{jQw9dR>RWA|KU;J?tQO-{U2BYx*%|CpnUj2EeYVBNG*Z6If1%ohGqReWJ z&%1LcyV0id+G;0qqNLq5*?HzT#FvHrNHIAryM%{A{uc7rUI{#d1WZ99PWnJO7WXSK z>xdJuTkKfmwSMpuXtks%K-+RLxmy(@@$#ndj=Yo2kea^{ZQx={&3=tiIoXeHT6vt; z;Y}~Evx+NR1JK15s@mdsZo_ih!Onf&NbC0NLf3jBjXxfC-jX}brf4}@F`XqBODTDK zQzzuUI~ps$ZBk!p8otZG?r5Be0 zA@eDsn{fReES671USCWCME6_VAi(q!B_-7ORqwJ@_aMfnt9qAZ96{B(M1kxa62${e zA&OTot`Pl65@N<~k?nCVxMq=lgSjYnwI!H`n${ zpNJps$Os;ge1CC|Kx|;vGR$5#7>=cz{}Y7)H#K$0Hr=S74(3e-MObw)RVD#GwfK$H zFe(}yiS(ewm9$7Zpp-b|dV;QAwfUN`0V-KC+L#{p2sOv8<@SA85Jkv zuX!04CHU;dDA!G6Nb|ih%4H@G!L_PZRrldRUU)*Vo(vPKLF23Buh$SI!2j)a|BEH7 zN5BYOc>A7}r7Dk^gMszQ>?GKcY*3h-D@daPC*ZUw+r)J=UfR;*_2iSFp6wv`2O3#UJs=VmHV9?4pk;0J7wPIE`3v` zLez0h1rYAKsj$5w?!s?IrL!BIMi0nRauJ2~oT7^}u=XMO#cI{;SYE{4*sViBy~$d* z+jSBuk@KCIW}8k{;&^B{72P1>sItm)=AfRV2gU_Y_1!`>dhR% zHkUG*GK#u$#80z}YHCq{Z_F~?f1lznJ%?mLtT0&Z3cj?fZF{L`0{Xwqg@@mq)5LD4 zImy2v{MWEws)Q5Zhay5TH9;AHUN8bTt9!ep;SwEDt;&sU;$g1uJC9 z0;v^gwiKUn2!^Y@G%;F8#*v6Kq1ql!`&i~?hlzklH0+KSyt4IZ;7CD~+v0 zu$^%(+2Ixu^j^!#tl3AM4Gq&8aiRMBCY5N)f<7yEO_yL;3gdG~@-11>t{xIxH)TlQ zi92p{Na1$obw8q>m{E%swF^__c4s%D`uKr3a-%%rR~Or>c(;-|2AZF9@-x+G{_S$O z7vAFb!s~H6At*{I8nwL%BGNq49l>}Os=>Xv_~Rtgyc?qJYLddb4O0L}(*{!?BY9uT zy?wzd-+uI#f)}crD5#fudx4G#ZxUju-Av@|7KB&Q2c69$j4?Mp(8}b` zrvsGbC@0({zmtw_9GR;*!MZCliD0?r!wV3~bXrr2VZFF!u)A~nH~f}Js8Jv%KS%f{ zjbaQL$$4Qm4sxUTH~iKps_8V8Uu%)%?sT$s#)wwM30vhsbY@OUIy}6q#JZsgM2JW- zfk1*M!cd$8ko*fyR_L^Q)62n}F(bgq-`1F(c^+rTuhO*J=bGs#nW&XzmJUV4<#2U! zm2_R7rAZIKigo4CVC2~D>Tm-?uv}B3P+Ifhh2Ya;08qz|Kf|Tglgq14m)h@bpTa)` zPf6ooY{0C(4FY;ck}_JzuR)8;*)gYzC}7^p150La(EwnBXY5j$-hn*3R- z7q?6h#lDbf4p)NAeLk4)gP=Jjn~GfkrKM?rM<=n9Wo9!&p~_z;8`+F>o5n<%ULjvQ zob@Zbym8dYBjjh2*q?>&&{Eb!fN5vmBXVme6u7SfX&MS*gK{Vf0)6I6XE!Uo%-OVs zi13Z$C=VASwK;B4^KIcSna;8iueEtOU2tz^HZ+%xoSS;g5gEkBTpbfynJ4;$-PE2Q z>@Hc}7@+k|2Mrv)_`JKhanO$CaFk^s@81GiO5*-%AaETUNU$LMR+4boL!V+?sK%y& zNJgCUv~M zNBie25JKdb;_F|{(-<3SSzn83Sw&J@b>B}Qq1u;(1C1R?0ZO?+*fgZY%rQwW9Z4Z) zjzJrh#Zw-y_yT;mE2DxFa~XR?+LL2}LAio5a_acoYOZtxCF+pNPuIF@_tSj=Fw z+W+>^OlvS2uC=*`j?eJ2kH&n%1`QnPu*9sy0h9gKOk(%c`mNNB*4qPm_>&Z5-Wp&J zPN>h*3aQi9tm4j&_e<=17U!u5D%5B2<^>ebH0bCr6Lo&O`wU|B_(F8Rvh$OG621@UEigVl6vdAB3$3^({6QxcGtVn7QviK zd@LTBqfxXrBl`m7u`p)F+S4(hQHt1=LY=Dk{ixINF3U3v7wzVlQYp?h>Y8CpG4|U+ z0zh+&SVk($s07UD9=o4`(i33!qrKYU2zarf!BoEvK$!eLH`y%>CVREDt3dkovG74< z%sZwMXcm}bM0u&etVO`cuf_iWU#Y2&ffHYw8x3dYX?7t1}-NI%T1g0NLnW6m_p1;AgsauuUzABIVpQwC-KpDO!`IShUzUis7`D1D#aW zeOT~8FyCi_`Lg<&a7!jUA$7voYAPPZr&x!zK8ZO@&@or@ZjJkaoA-R~kAo{ZCwHEL z?pX;puq=l~UOzM+qjIwMvh1b|_ly7rA0l#}LPHCE7))zoZ-;}cms6yrUq?F~Vim&D zTm7yr{M@%4OqKubeNAA}DFCz|e`!CKKZd!!m@7_=yMuYbANLExbb)La>`+c$Iw@}( z?3)GlOBw_FmMAbQ8EOLyVDcKzi*y!Ygs?90>Mlap0C%rwCJeVX<0Q4~4|V(o#CW&Z zzc*COWcNa;0?ORd{xp~ECoKs zI4Jr%JjmtXK`NG3$RFAMrPruTm4P-}llF>g4F@4?;BMr|c^IfOIa0+2x_}LrXB}jJ zhxhRpmbfMJyNk1}wtdk>$gXStny((eQmvd}o_{)P!| zPB0H{!+*!rI0ui$~98sU>Nc_(Fnwb1dm^ zu<@u2*7k9D^>5(OmBnRFgi^zgtKrSTM-RA<4pMpucei)H|IurF)Lba0kMcA52$hoS z>E?8aDr$KxlB}50gmf61dm&#Vy%1Wd0@+`KR&qPh3a$mjosM*AW9!`Mbeny6-N=Z#;clI7}_PTu+4R<9jbjhhqpFrZi{#e+s1nGvTPUcTLgo&-@j#B zH3{Y!DcH%9^#ORU#!TfmY?YrAzd%#EDxqaam@kU_-A53e*%?@Dp_`_O$WiQvUlT8z zz+;!`?6t|}^SE4(U-2m2$r%0EIJ{csP6P>pRFi}Z>LK1W9@89kvlpq(e}fX?uS6fQ zzqJDVgrlq*4m~PTJNZ;?**>zG`wfWwC%lJLc^}Z&y>RQdk3OcjEOMx(-;)tf-GdQ- zmgVEXbFvo1$=)-w5)KFE7J&oqg==GOk)naALRqAXTKR8UvEW^d_!&!daTdGb+sk&> zqM7-_G{$!3A+ii)n7kg*|7Htcm4VFm>_hir* z_55Bb0$z@4%$Wo??-l(6Jsjl%9v|1k+VQj3Y`<Uug19n?$meZGGp5KUVEGa|7=Dd~6WijA5MNI-$)G$Vu!^KXK9CIs*{a>A z%;u^h$*BZH>Lu0YmNaDRlDh4;GFudj$itZHZW)2T;661vTcU> z6dy*9J!B%M-3&u?pq8?e9YpGyA^aV}Z`sKXP7>xEwthG?I=aY_>^F%X_V=YCCAIo> zLbt^Xwo-r`M^vlx5l>B-{tr_NWUhE`{y)enJk!J2nRBXp)j*hd<@**NV$Ij44)@Vx$365DG zN6HcIHHg8Er)UVRx`9{^!)XA_xfU>=p^iV?Oc})4xPr9-wH}Q)R90UPzPKFghK_)8an7jIe2u~4*UP$wp&spbZ6k0evh5`ekg42LAI_^N6 zA=1pmc3KUt;sEq5k;e9X3nx$8z}$>f{P-8S(sMAsJ-Hrs;GcqAi;hU^P%V$iTZYR} z32$4s4%gvC;;#dAvV>b;@B^l+0KO#r;h~hjcDGrhjc6jN901}ff9JW?La(KHKWXdN zfnF=KYJh@n+@yeWtUNZtv0=E0TfkWI6*6X+}5$t|DH7f7&Mhc8$< z%P^N^3N_&iTD;K=lc8TOyV|dYK|EVD-;%mZ3N~uY@$UL?b1Qu z%tp#swDB<(ZQWp?G&aVfeL2{Yoh5YYwld>~Xk9)IUdtv~sI$;m3!yD!qfyhU@78gw zt-pcB0r%C)EkMWDTbtY*^U<&x%iS)+wbnz_DFq`#ZfCi-4&au1U+iV{^;*cUu9kVz za}E&^d^#jXyBJ80xps)uf}d&*6Kum7<|9uR7`1%rCb?#RAmN6QN`GKF)Mw{U<0Kz~ za-|(`D|3s@-KDfqN7;!yZONgznKKBqpXDYwKSsxo`WOfA%@80?Fn11jb6w!=aIQ?U z;Z9|zc9$}42!bRj5Rc0-&)dm9Zeuwxndy-VUK8IaYS-f_)&pC)7@O(CBx#_+Yh3eO zBqYzRKj8`1oLBpoxfYzXyH_^JD+;`h`@xx7ql0s+w!NuMDBBUudo*$; zB`jh`-8-)y%2@!V4`zJq8?)13?#Hmw3(~4gf9zweTDF^zcp2J&OtWM-29-$ZiuCyc zp*=k|h(g_~-KE&sz zA@5zvjafIuwUHxGXYt02Ot1D|l=#0Ds8|lc2iW9H6%zUVsJc`G!ih|%bJ9w?o^W>pAZv0uJ>B%^}$oiQ1jfPI;tuUw7Ivk`fO;k&B6ULsb z%*`0!vNRt_^*tAB&skBsb$yCh(Sn4cOhO9=cD)ykN*pf?qR~>=FnJ#+v3YO zxkC@%MDn+yyBn^n)JqH)wt1K$aX}jjA#mkzoiIMtW9e`_YaKPbltzz{^-f$12>>8k z-n6mFuI5eO8bo4D|B*0y9|cx7^hmNbDHG0_JBbJU?`9X*SzbT2Sgz8I@cO0c4(UFw z<@N8Rvstel3fCGZh3+TH-PnNZ&r6fGGLMvqJ;;q%$lqStI6RPv{;CGNpQU_)@uHd}*ETzljW{ipP$8d|7!trSs0f?8(zk^f-&_cl zhWXx3k^e8XuQg+B7<6D8Bv5t&y!k-|!qfJtITa>B4%Y2}iaunf*qIAz8 z*}+SJ>~fh{GReiS5vDfEXKI!BrusYS zXq?QQujtP1rP^8b^(^jQQdyB0T*!)u3m=ECe5AC?e$WxKwHr9N zXJP(okN~e$w(%>p32tB$)cHqOjIGQy(Zc8X42*s6uqjvj+0w!LQvIK zzG>T)KW}K*QtEVwkv-~zU-iKg$2p2bt@kN zuqO7!KxQMx#*qJqQmfq{hj^fS9crjnW)p#}4l!Fvpw#9z@4%_H6|`^Gay$U+ojzc{ zMA0BvT|!QA2iW6m{V{cWO$F;{{PJ5PtsEE|Vylj=Qt}kDfKq0;?Pl_@GVj1yUhBhb3!kI5_InCG2UQ=^asFjc3lKgAX0|d! z0ixvt2@Ay99d18G6C8X>5nP7MtYm-`-~D9GZ)&I91RInS*g0udr^-#`j&1#J3I zNPy-72j5W%ryNwgO4Y-#I$9QY2Qn}&1abNM>H7vEaF z#qZI=$7djEWB%g1Fci?hk%S=ZWgECj4R~G6nhSNTOvVs@#{e>Vy$tQ0@a}Tk6Y2PWHbuPrDjVhBaO}ju!iwx5&%=i;oIN?7Y+eFyc7f&3i08miT{7J z;v>a({x__6ElV{&Bl?$(v+xtjF7TO@xj1qZMnVdlQV%rSt#Qphtp0Xu*zIRm)cDMf zlvtLL19o##P`G;II9GHa+FSEjnfaI~h-|>zXL3d+!XcMbL~!N!I*fQgJQna&rF~4H zPp!pn*vu_7(=72bwqC3SVrGaRAV}piWH5DyE$`%)`=Xdio3^0zvAFhSGjlL@CYk1i zSma=xyDQDyfr@Txp5`i4zI!hZ;%W|uH9~)s%eF?wCWxlb#!JS*iwnF~1!mSj%+HJ> zs$78tfEO55Pz=t(N|{qWma?>?&><2NJac~&l$xe#p>6%y+Sc>cy7p{Ze+?yYOT?E} zu~UOiX3&Y0^(zV6q~N(Zv2k_&wu%k%4l>BDtxPL9;7lNwr;)^P9abtG;@4r8S71I2 zV$rQdsoyT%3AhjB7Br>aU+dQUhx!rCG}*Z8*u7nn-DKU+p93N+n_f%tL=5|bcBv8K>udK!AC9PPeWf}53 zItKY}fHiNJk092b4enPC8#!=i;`3|w>HgZ>7>H%iC+Zzqouk&yt;_91(&IbQu}?Il<&Vu z)SyXDV$_8-KEd5GQBIA-z${Ac1Tw=UN}?I8?9D@T6`yUchZ2y*N67Y&0dTo3(Y%>% zxA!z(55aJ6e_`7PMO?o74S*=qiz=O0;tKKss~JM7GtmJMnO}+dOed64L_@eaBhSo( z2rG(v@mDC8W2SQ#O7_<@T}zED3O@@62m0Hv>A-JPX1*Ju4%-@UxH$6E4OY9rQlFjKi+ z*ozrnKL`cky(Dt<;ZkAosA51N_>*mJQqaa1V&+r@q&GboT#h+Q2~arm#f`EPpJGGO z7nA^yJARtf2l2#*if>dFB10$Qv&ljcH&)S$X5bL z3N$GxHY*rub2CcegYLlz)2Fi@wIiIa5ys3xK#=j!^%3CYVZmSkF9yNAWVFx&tWF(* z?&HHD2p#PZqJL5wi!qVR9LIA8_dQb?7&N>J^NQ1fS`U`wBZgun<+sucsMW$WQ__?S zvz&pSZeEgs=SP@TF`ZdWfbrZxGQYu>AM$C{n}=M55Sa)~F~`N2M8i#p|MI_^n}E7Y zW%xL?sMI?I%unRQ5Sm+l0Pes%z6k5odE0Fo>py!bYFh^dx63or2O!=ojmITgwqF%vZsr_4M{F3&9`emGK z&?6>Ur<|z4rg`+77}mDCsL>-onHf#sk5?cmgg{;<$`ZSX`zsmCN7|fId5u4rc(I z(>1Dp$*>cneThR1;5}JP#T78@OvFFaiNaeM3tcQE|7NG@AV)JZM<$}Z5zSa_ixD=& zS3CA3%sO@oBP^o$X-$Y%LRdlAw}A7McHk+NXM!_#D6*w4q#3B<_^ZYnC>B-4SNyGJ zhmxN|O_TB`aB3%4yk-2$Wg|i*ti$tdWjpmHnbqE2e*p-+aK*B%T{h76N0bCBX|dDm|4fbIo0?KoQEG3H3uc1UwDTgY&daZv_FYd1>4ayr&JkS|vARS;w&= zXiBGq$gwFpIEy>CQ^9`fTY~CKTk!0*3RY1NOLU9aYD zxUh@oewocF+=iJAXIAB^-Y1jFl)4$_5@KxfCJns07{X$k-Zf!nwfM_}po<#DC7Q}g zH;hRQhB1L*#N|T3KuRyJ*|p=SNgaoU+?Q?~V;hX)UOSFOZXjP@w2KFFd9xI1umiaY zXGxB>pUbYd&brKY1Mx@l{;nR$PE7(!AO?)Bk_k)xvPg#(O@V~GZb!Aj>8(B zGXs2e<}lfA`xxE@`TG$J0K|sO%xri)wX)FxP{2JJzrDkx`M=q+;o?W}G$D6>!1{1i&O#m}B$3wO`foqyF0e=RIe!Lk>YcPWc z+zejb;SBDuGw`P{=f|7EoCZ^v=cZ86$P~no9Q{iu`=S_$aD8z(dMxP?rC&gNd$~Eb z2IjQ^PPCKO$r3txuM|SJO0|#VJNa)Q^w(0SIQl?s-foJMxJcH7Y%)X3(q?2ekT)jh zSfW~i{zP>j8z>t^vA+)+$|g^^y3hM{XAchQeofNJT3-2-#xU2`hulOm_Za9#yaXD4P$FN^5;b>>u zt=9x6vD7B))F(H|<82G`2x;!5p`O7BKF3^#_3m!_+X*~=ksKf&9$sx0L~3-3l|`LP zAiK)rOfnrWL#wM;gZTn#O7kUtE=Q7pwqyVzM%f7TDPY6=G=XDJb16A!$)APGayb^o z#4QC!$auy0Url2-{jd+cqvXx4cIu8n$RAG2N?THuSUu?SM4{hgL7uE6n64BNxd3!^AA2xn)zTT3Vk0sEj-qL-UD=3AK+LSs zv!U1H3LspvjO%LQzFv{V@7A$V3)(2)$04w=l-x)dj)w6beq+nNtW(Bx>xX*)XZ>&wXwiP{hkMX{;RzMG>)S|@W_zQn zDcSAu>tISRW>tFaPa-fwmYLAJ7lUeR9ymtUyxVG@(8d<`M}-4{#3s{e593p6q8IM2mpCJr^NZ!6_@&$ zqNC#9Y{IHZ#5-;^$m{-+#fGN>Y(VqP%@9Emxr{*xJz2GiyzUNXo~&ETu4pCx`--nS zUP+_SMNZWH{~Au`O|?b+D}n~x?8DA9Wq64j8}Zf_vB>+F4cupI(XU8Xnv)i!{YK+U zOGFnVKbUZA1}Q@=j{PdYv5#z^rgJUAKd38!U%@S20po+*p zNWmUA4y-f*yocCI#cMMze(D>CS5lZTSz`k{65lak$3J)lPi&hyxjhEO_`NU<_%$FAMo}} zf#)R;Dc}(#Zq`KfMtAk-trZ%BJX-BwDzT1W2Ww;A8K{lDFHV9cC$fKfBYC;m2G5g} zh3@X}Bok>X$g;lP>b~yu9`4B=5LFcgpE@MDH>yN}Wf(R37`TVT}8eI9j8MRw*Go+7d z^~HzS9wUQP*oW1T}^wKE|=f2;*1- zYgdMPH#e*IS+5;^_AA{pzJ%4nnXtzP(<6UFMjOrg|4Qui8}6%h%Rj1l zi52`84w9$&PD%bH){x||3j5ugWF1pG(+HBS`_hGj^0c~UnvP8h9`ZMx!al*`T}-pA z7-qJfLzuOD*_tDNUJ>N@3q}3k6W#v24Rni_2lQtxsWQwpAc1UQ4ui@^U1;$@;Sbr{ zuOso=uVifU4YAyGID4U4YSpmNUY*r1^|g%iFhj3x-9lH!D`oa&c@x;xs0%~;Ebvsf zwu%(>HTD-k5+<1AK)b7#t?b8AT#W zK$0+9i89sG+*xe38|G~ZJ1AB2U9*=E%GjE-WU~3aq2PBod}E7#G?D$T#gIG`#QtWu zi+eUY!dLEvgZ60hLAl?4>^n7bx(r!n+a1)lvYw?;r3rony|oI2=U%v0)?)SMey6nJ z<2){PvfzMd&&GjY3qSnG2n zOAD~a6)I4*UTCCN6~SM!69d>D%go(FxXVU7_m~q2c@N0$?25(X1XJY?$gI>tbKcgyv@!vjcoSI5ez+%xa4d1U3|ZJh)O_+#2)c z@9qIC?+e1uR>j%7q+@f5BfHbV>mZ2tYwMj&m}V4-c!}nzZe!W_hx>#5_yt zl2$~NdlKRL08Y8-@W5G!f_Xev@KoXbfu}<2UkaK$u2w6l+nGbKIL18uPIt!(Mc+Ly z4e-qLl9+i8^=@~)g^NG$YRpuP=NK+ydrHsGkp4i!WFRkF@sN3}U|ESFN-Si-0}sB~ z0ai$^MEt`U-pt0D%wu0K$0~A-;+RZEz=u6AN5J>YjbvF$c@Lyk^1h8y?jB(J*ol#% zkt-!l;(CUKmT)!ZvR#o-Z!E4BXxF3{dTsWg`so1iQf2^%o=;Em7mhsN3d)Z%Zk?82 zO@|U6U_$7d#vqEF#RB}XRD0>v5srSAr?F;JMj%i@!ldk===KrB=?CvAa%x#Ev{TC> z5NM%~`)Qf~)0g>Lt>jk(M%GGRna(1AA*mTAnr;`F$cc85DRPVa7Zy3bFVxH-$*N0k z)9r4cTPX03Hw!LKV%C>qZn_vWeG;v#716N>w#rcdN`*8G|EV^@Rkc#wgDrF?AnRqP z4f&j)laha?=JxX6mj&j_5&;))vp8l>>IG1M>+@+PUhY7ocQVK3c*i3oH>9@Nk>nR)<=RB2^6k2f)0N?`4{k>?f5qJOZ&vc%58kQU zlfP(;@26GMNlr>9ZvEM0C^vuZRj*V`>>@XW?xowS!o>$URqUt=7*s(cgUUAN=6R80 zQTdOsGPzXnc^Vs|7JjcyW1C7TgLSSima)35f?1oXxnj-#S;p$Yz};Rd>a#5NQdle~ zm-uDM^u|bB-H5`@C%7MXdR6s7DV1od$v!jd>t=N}v&uLap7JR|tc*#K0!CCoXEkZk zGfYQfX-2ADbX{jlUP%`EFXTyUBeoxyt`Zm-5pYy@a;A;uP6!znYWr*nLtmpGwZf3P zvp^h)Iw+Pn&B?am+iL->6_KvX$)j0Lco+KDh+&n9sUQA6Xzn>H6mt%KojXy6hSKc! zGH;9=LW8CvQ(;_nCCj0$JCj=^{oI~dVr#iB0$Q>>FTjTw1C#n}7z=6M(U zwwZYqD??_R=jZbNy@35DJQA=;-Z1sDq3S z-oEicUdHZTUVN~Z(VqISr8z@)AR&LN9P4(R^N2KOkz(h^*&&YRaSyM3e1Jx~Z=^@- zA7z|#@qe&rIxD>aJU=1=?Eho$OyHxcuE#&g%^N1e8WwQ@42Zag>>(IwU9dmVYJY+n z{ry{hS!N_%yQkVT_bZL0>{wZ>g*jo_}0*0pNfi`KZ{Qf=HVRn#QZN#c6z`rNWUf8Z4e=MgXh2>M(GNAuQkev5mdh{es43;6TKpy^H0~|f{WUH z5Gn=sm{tyYPu6L#^*b@jjM~}CxSZob3G#a$XA1M=(Lt=vwz_r+`nr1%0VG8HPvCsQ z9d@ZZB*XEOb&Pu?^3|XainKcPZj-R9qx=z@&UHu+1^~8zr|Tp*Ox3fY4CB1@gw;0~+}`ioho3iJ->LK~$*pVvi|dR)25i?(Ocg zdVzWJ?jT{QT@kn__da054SVeL39F2xgosXMC9!(m^9O|n(M+JOW+J>QJ+&;w z9EmC%MwKP%Kzt``mv#64Lt4WZ9BN)@6TdBp=K6fdEtM0>DpIVhQg(>N#rDg~@UZPo3{S#F2~lrSx$eJLScsUq+@~D`Q$i%&dq-;@rZD#m9$cUi4)0@VphBkRyyF zmJ5`-T8(f&!JG=*yO$yIOHHtDi~Bkr3=&=FODGuO4u66(;wJhIMz{(z(iblwN%ECi zT_^`4t>0v+1N!Zv;k-}0_KegZhTL@Z4{HNYsTsJK%3*3dn%s*Llqq{ml3M=>lUdy6 zMEan#M5pHpBHg>(LG39^^be>#$FU?udwAXQ7Ri{+-%_!jzAUQH>zBiE*2&eiXa)KD z>$ny2;hk(4JHlYhq1BZJ#|D*_0jkQqyOy8_x>X4(-^3aOg!Jt;8Uu^b|PTE2H1 zcY*9F$>DsvC}E$Gwzn=1$_0N*MaTS&c^P8s{H*e(PYF%yjiP`}vjj^Ec4pdeJw0 zO9J7ML=;N}3%H)GDsyS)H;#Gfb3*FEjy@Hz%tzpnRuKi8bm} z?!uRdvyocqHPwkfmT+L4g~+U|9}we=OO!16o}V~m9*lHc4Vw5ree-Y25kW2zSKjwL znfk)4ZaW6Bl|~*!7MzWJFO#hCM9X>%+I)x7&US<|hj72dMqjW35V(LsEoGxHjgb};ROqmA?LEACUaW?G&e8#(9#vPW zwISE7XvPm4X9+*S?BNmku!f(PnAtr^4!<~Ns_UfU{3~R}&`cKPX!po`UYjnju|_wb z+0?3xM^Z=)F88qX>Ea*hWDyg}ksD0!*(=C+Dp`f;F`fsv_JHXmJ-}YD` zxnp`ydy|gWZSUZOt=m2+ZTB;Wf=Y+aHV;S%*09Ghf0Ex% zYt}DFpTV>3)!HTOQy1gNpl6_IKnHUxZqAjm?X{<9JG6RcfZQ0VZWWevH>^YpJU6Av z-BIeY71-;I93Yax92G&`$d2JEdc%2b}P>pXJqourUW7O0N zaY4L39Etz5k$5KAMl(oPKr%t~1?e~qjG@hkG4b@KO~TDZ7O71l;PZx<_`DflbNpmH zLG>&!-3$H%tB*-)SKbRTO%&XT0lUkk)P8Nb67L zLsumEL-%(3&;thj$C7{NA~x4=z28rk{~gp{*oSwW+BS|2k8AQ>X8_|M9YGExXM$oNAWFIm!9o{Pw^wA!p zMPwhr7%d{<;HdvvV+kOWIH<|HW?yT>f_Q@xjdNRclgQpAcU7DBFt-y>e;uwkds5{J zxyD5g2W~zJC4wog+68GhOH|ii8+mlKOwnuF2id-f*9zx5aJ>D2LKlB&6o;Sf6$)B; zASZ+;8?$I2iCLb7<4CTPKQR{wAkT^`^DSs-Sx@NjNC`Cqj-JJp{4L?HFN+J|WdQpe zPF7G>V+Xv7m3;4jcKy9Y!ozn*zhV>vYE4>dF`FTK{JZQaqjE_zC-o3bTC)v3r8V1z zEya428}W`Bvl@T5#$Z~$g&1%xM{;3DpU6G|^3wJZHPOQ!UzYD?5WPaz;CkFM;~cmG zKbVpy5g`Yt|83<&i#S69qmY#yvLnsDe4veqj~<3NEk{ zIs*>!XNlGvvgj%AQP9?Ni72jYnY-FDY=`Nlf<2K9jt#%-#m9p{h*^$?*zt zJfv1OceLSI?!ly%QY?!tvJuJXO?{{ss_r6s1`-5%-GpM_(&Tc8dL({avO+Fxw5=i+ z66aV(0>cXkGOo0KrtTqlRDM6Q$S5ek9Y~ZJHSR!>T5sV4&b6+N@E4qsb?@X91gdn^ zs!}TqoPS%Yb!O+WaBPJ*u)T+YLobt$?UT<90Lkq-seW52bz%MmBh|4TE<&CoTia0o zDYA@OVdw1lucl+_K*nO`^Q%Ka_9!+uo&gg1~2u#)#4Xbc*T z9k6BOQF8qA<8s7aA!&4d=g`Ioq3AYWLF*3N`$dQY{6qhLP_uDl&IY{x9S@99sR%O^tC zK~3_B`oy2OKjIU}@A8QW*6?F{_{2~6M5%QU`D{zPU5I0{=$)_7RImiSUK@J*^<>BAf%^PFOgs zA*s8Kh{FFTygJS=CB8?fYs9ti{iPyxV;e=bl1*W}@cz%7*irYBU+~@z`0kImLbRSG zTIY!lY={>uQD$4j`Tsa^6z)qB;y2E(>P+~c^Ep^D@VzV=`0LTYYsLycg0G4NLQLo- zhUGtE8NKm6OG?yj7^eVD)wAw5;?w5rWM=WWU&IeizBu3cBAkK&nlIX+j-uW{0gKZU zp^u~LWGlh#V*6w1o|qoCo9);U-cKvVeY2E%6V&|@h4&f$=^&3-iJZ95s! zmzKShU1(MT&2IjmQuIT@Ts-Q1ydt&pgXDvgoJb!nr|S*Nf_#S#u43>*4r3#wf1McV zY)KHbVOfj$+SLk|SxFb?Jk!wqZUxIApRGZQI-Tqzp-dh?4um%AQV<(>DC0N_X(`{U zwGgb{0VUq1(y*2y6#ipCskgM$^xsU(=HSn*L1P4h4yO!-Kq@`W&^>>Ox0+z>EUa(x zzI5t#sl{}=OVvcs+<4i1TSOpyYdM%_(-abTlYFz6W52lx1_m`~G(fqhYBZQuc6g49 z)@woQBxqPZ`62=m$Wwn@gwOjbYr;x>_jw8jg9Eji=IgF5i>J!bI-xCEvTn=6la-zE_}bfk)=!{7N4jW9Zpteh;E#=<3&IesH#j#I}8( z#E3mCSc1phV_4opNP#->ii@#!y^$R&+XdD%;~4SbGIk5`Ue~(?CTzW1+`w*OA5ZB0 z)8)v$+8v8lOxFV*qvCyhKr`E_-WTrX{50Vl4dCMgnre2{^mjL$ve!5DyAQ)-#WZp@ z1_%3)rJ+4Pm5qb4QnFLoa0yx_0E*cqB0Y&$d`*$J>s=*Rb5CnX|L0|3bzk1pYyAnrMBRzx=REI}qR0U^io z^g~>>jPDL&!?`EUFi+nWGPra(r>OT(mYQ~)F~S;l>&ASQeDFrC5%rP&r{O5?$3{Ok zw#G_{Sjyd2=#S_rr$P32%?S;o5~=(RIr&^Ex>$_mAIXpNBwCaw|FJisCO9vurjJvw zNRbR=B`o@5q6YWnr=0RQu{XoPF~58w?po*YST2zJ&z6(lC&CoZ;k)>peJs~2x#l?g z8Mahmk#C@OFr1fXk`rY-WxCYo;&bzx<;`3K`5Q#B_Br4b1+7B))G_+i*Wtplo1DGE zbhSa8|0MajW}{z9orU-GZY(3voks5+C!v!W?N{X29%piR-`OR=ptO2jA2GM@a)ZWY zls&kK4@7LiosNJIu?2U`jIjmxbTi%-tk2PWTkxa5?d-YX-|pp}i?q@6o=a{CN@gA{ zu0OVZ`D&-mwnp!BGMB4y#%A&)^@QHRnz(3XL+r5s$}Z2gd0whnMK4R%b}21l-|f^h zA9fcKd;;{^!jYK(TPQ*rC6yyP_`8l9+F1et)qmPzibbt4=cFapob+@v(VU38T)P97v{FMaxH>U>q+s@xo`D;D{J-om*;NHep#vsjWtxTt9gO*%TgNZ)tLIuWT z==NNhWOJ)97Xz|RDI^PCk9*UHEqGDCJ`qUPEhFKc9(~K^3|_`939ISuR80TlkKNLt zJHtg!BgPk|4dtsyt`XA~4nKpqE!7alE6WjN$1{%G*ab4?z*UV6$vxLR3ZaQ+b4TAu zy?i@7CcMI~jG&8^f>s<;WOAQh0`=iN(ng=`G?eGWk%?552FAaq0wYi5i}1Q1%CLqOMMh>){)tfYp`AmOnm?3%fkcYBY;pZ1gi8r3t*DeE?BkaSL zn|@2zXMGQ6PdVbeOR&6vK>b_$vmBC_VKf&twN^8uL;M@Mb!}L4k@6x)L2G%b)+>r$ zRuZAPdP_8=pyKuw+#{b*d>ttej8dniw7+X*{P_@O>m0L3(H&cq+ncQgI&& z&yqM$b5znQU--bO;$zSL%Cbn8v*`}%;zmwt?BY^N?A+z7qElCtq8=vF9o4ix#I5JF zHjdbH_Gb^n!jh_2;DvG!6Hq4#)qR9lqENwS9=S0}okfiNBxviQK@xV4I(3-&ePKVQ!?KXAbJ)ONJ&O|W{^QUv zj8QkGfY9b;y5`;|l7;#lJcSU!DCvx>MxL+|^*a*K>%IA6N(YOI{qM_Yce+k^!;W>4 zVtE_G04wlSaq_)JR-mJRHxC^JI8nq)#D-wZ0W$G!6jpdQ-Sr*+!6$x}RGE1la0H5L zQtdp_?kYKzf`jAy2a$b6GEI4)8e55Up)z(1hic3Y^qJW0l0!DyCUUyOjC}=dIwOxV zJ^V(4H|_fZZ>50uaeVO3)8GjkZ9-q?luvV!dkK%ninBxJJ=WM8t%*<4P@=mr8h_;@ zpp}Kgq-!pGdSmMT7-QdbcE-O8UD?HGXu&T0fQMtkDBm1y!u-OQIwOVqqtuy=Ix_Z+ zt{34RS5S6MnMN8nuBDRY)1m{rg-sM7WjA1_!E11-2!ug-YJKDEz zgjviQ{h0o(-t{y)<}zt0<}z`;vdv`^5}V5qR$xvs&1Kf`$E+dI7EIS@whA9`d|)!r z*m=i`!A$$V^=vRR{O|K+;?noDr;Srosk%DaImZQyR>=tGN*#h9zw+jp7$A1J?yNTYn{{E5F)EB2PUx2P3vx*Yh&N&H1@IY zFj$HhaMt2B;D!C@UGdq}5^uY$8J4;~Ql351CfC;0(3dqMtf`z@pTP*&B9&5L#y1eB zHE4_$oX%r+b;K0gAjk}`ojImDnQ8$=SCUenVuCcLI_+VOuvDUz*dX~%Ye57jR2w>Mg{%szEorPc-U_H zXVU1Iw$NM$O50wwjp#SZSkc_wSkV~QSRv&&#aI!WE*xWp5I}1r0o(!s6i6z9{GgfI z8`(D<8tAZTAkstu#e}u(A_HkHX#3+9k-;rC89b}WKr9y}P-xf(?Gt#1O$+90HZ8y& zqbwK9eGirk<6-a;5emW`VpuL%NusJ}LZ4zAcQhXoeZqJC9D;8xrVjJ zY6&wx%OA_Ms%wD7!Lgm-QhCW%g`*h|q+~ z?hX7gjSnV4Y&@l@$=loQY46p9IuJvv37PenYC`e$_0@-K2zAz<#EL=f^chz%h%OL+ zp(2EVLh&g%M$^nk19TNz0=}5hFclyW`VO~-Fo8Yl06G7B#)dpjC(T15xU-8rv=~hk z#EDi^`AXH=G>vsg+K{-A^msY(oC=eLrez~H&KX@q-Qp;u9HN$&g#K5e&=QvJ*wIcJ z5UZ)_JDhACtC?Ul%vgrvt~GgzyI{164pKW0&Mzw4XvLira}=v4R4n`UHZq-hnDqv;BY(n$op%}~wY z$PBv2qKAa+gr;5-u??H?-lDG#awYri7_G3g#_em3Io2wfC(1HWXtRgOs~eYXuu4=D zR$funiFz)RsMl6&yJ@<|w>%uiMEtZ>dYlbjSk~6{ax*W4B43aLUkRQ;$h9vln?X~3 zT-~^=C9J9TW(BY{;u5uXS^QP5j*Z4vd+%^H!TSmCeuq9v&{Yx-T^)(h#e$De zh4vD4(XZ+8ylIrOGB+BPB05LnQcu(t;8f7X`437Vj}hm{A%BiKSs4A_8f(XCnhA7( zaly2${%dlC*EY3|ATvj$ww>xki6&}1%{A4qPB}N)lCIIc?W`Urk5Gi-@6^qG!|3cd zPoSy8)t&Su(K3P7MMk@9bl2h;ohZjQnPRPXc?GF`dvC}&#I@){oQ~acZqbaRo_kAj zGVn-*c|O{int2nWBF(@qmsz7oXWd|pIu=D5wla;*YwWE;DjI~<2KfGuXtwTIWl8k3<}eXRu_ttra5GX%^^$h!qGazr%BNu1oav9n72^*BRWJu zqsUrXZP*!KZK$=t&hf8rq<=X^erE~4o`5)Cs*jajj!BXlGidNDXOB%1??r9M-W;hm z6dB4^8*;AMmh^_$6OKh-C>8x7Lc5ld66+7ena6|v&_36>`or-O^?DAveAxt=33)|U zQy-sbjv*`g4T%x1?NAsN>7 z*yMd1%>FyZX)GmkM*7)dkb`#g5|`%lJ|o92Sqc#Uci6hdNS+Fj3(qop))zQPjPR0H zv@z(Vj-Qx{Y})B8Oo2S zb3Se#ACh%E@^34@<-_c`U!o1D0*|XnQ$fwgpqdm?#~~Se)wC9UgnJ3kyDIA-bz5Vz zH5GM+-b0=y>aB{*?zc5=z_EWtmU`UN#@`b9M8-Ky_VI5d2z`42n0zfX9;v2tdb^)C z`sNv^pt7xf)RW>-audRZeK%9zeUGRc(1d!x?!nxC5f?-n%V&lm8I$j4q*~ZP=fhBy zWu}c$YeaL<1Rf0(WOKcT!W2l&zedQ-DzT1ewX!nPs0Jy1q3v{&g{np0(5awgDjpKK z_-jl!eBqzs%5W~I+DW8=48+ODrfW)i3M=BkIad1q)~G*NgKo0Yb57y;k`~K%onG6IvO(g%6R{JN|^-Ye>8`^$@CgvwmI?>ys?5Q{2Ucy3So(XxV(eDczTs ztl6ft0b&$fO=zqvt2cVJtZrkUVwa_s4tv29eyOb-zRR9UfqQPj!>(G0(-7<^{vNwY z(T`(<-QDg4WxA{UPk`h1n;cP(k*Stu>QD7PHnd0K^E#aQWU}o#w~dK%th4D3(qp+m zk7a#dN(^J=oIltOOB)vfjv9<+WVEWIx=8Az(bnjl5E^#l2JsS>O2=3^nzVgk5`_CU zwO&ROCF@n?c*wg$m%>O=WDYDuU!{$c`Pt1N@0EdODk*rrLE~fHVB9hEOrEuX91yg$ zOU!F&=_671Y~{+?zz3Gb*;v}m!P1R5q_NaMx@A9;VB+^bvu8gk!-v^kf{WWb9QrjlmkpGJfg{yFLTu8PP>{?9Qbg2I z>KzUH#Ta<@lD&E;0I3bz1~}j+!{Fy%$pi>-V>9sMq7AtvHcdmhdrAH+C-3>*_N4D< zjd9|(zvwlYx65So37PLLtc@%eI^5iWS>f8@^4a@rs7AN3;7m6A{DpBy@dzir0pHo6<3 zZ3KA{)W?#7=%rATg(Jr81G#=Gg#Vg*`Wb=p=uSC$JQ3>6NOCmj z6UU_kk)72<8a^26auF3ppCn~N5%CcXEVT-^)yc@WFQK8~HaTi|a{#nd|lwL!2IrZhN<8-P1WkN=Xc}lWM7Lw}zZ&?esfq$p15O_^~ht$LTfZ zNCy-bb*){fGpK6Ss0ul#q6`kl5gQ#GGtLWjfKT)?X!1`q0d1>OnnBA0m?13nfVdLe zM(!cdPO*(9jSeZ*-i7!7$dtP1Xp4akt)u0esd!Nglx#UWsrGts_$cRGdcywzD}UG& zw$g+X0rG5Wx||4N;Y(9m+ZIzAc`qGG3rCkrSrO>+K}--B_+saQ%2we{Jy@;BC)%fG zQovV@Xo*QK;rKB};oDDa?jje4BJM+zgk4>m&XIIogAU@pJ{{MLmm5l^54T$syXjx#@V6)w-Kn!@*LPVQ0NDW9(+*G~XmLd}ZNQx$E z?>M-%u?cR$q>E{jGchJE*$B4+E?1|cpC7F5OHC!=OnhweG!{Cq)abk~Ra8)FrgSud zsfoqMY{CR{B(uRmNR+crrM1{gSlEQ1*8G-2S)%^m4KYo~H43$`lHQ{h`-DTq-Em7s zxq55J&DKtrSVJaSJ1ww=TxHyd!Y4o)X)gQLV3byd%@X&!$l7T+|C+2lQSHh5LW(QJ z3&ZUfblS2Cv;)ER?-rwEB23WcA_#Ny@1gU5{h}l)lI9uNuB5n}Nrh zC1iPmUh=W2a?3w^Y^=eW?{?a&0qzn#Wj%kl+tlso$O?Z$dpj5fwBOb`yASRfo`NBP zh=uV+l6N2U@CH;6_YEw9vNO0{nQyGzFy_LLU8x5ND51RQ3&xjvVhD`L7vjlbOFDflFvgUS5O#YM7)Ri$ z^XiFNCW<9uN(5b?$VC^dC^5Qz&_W`itD*MT!l4l(VfO0RE9_Fk-4F$GUJ3<8OMe47 z=@5)w42eBVed&kd&Zy5c!VlY@pir3k9Rp$hB2>pZt+=NYIA+)>r6*BaXb-W7FP=x{ zYox{v0HMW3zSY#&B72I+b#iTCV^SOYje_Z*;K(Vj0b^cF z3~oq7i<>1whT{@5WAs-ekeTc3cIYI~UJOIWI!P_iI@TSzBFT!S2BBP?q(YJ%+A+`i zo!1_BN`u_RVaZP+kjFV$$tHPMx}?AK<4X2;gS|;kab9|kZJsuMwHkHh6kIExLo;ob zhTG<9;(O5Zn0oN*w92(l^yyPX^-pMz(Z-zMfK1ML1M>TLRh)ppd*O)=$n%^wZ2drd zt{(oUwqCGHGliXfc<=4(n`8r+Coof-P%Fxc9dItPG(5&4@irbc-7FGzjm4fV5}Rc8 zFBa`Iv3UlZp$<4rSR}?d>c($v14++n<-Sul4i$CdDUKy&Uk7dqIcZvLN5Qu*OXO}_ z!Pl-8eEUKQcRLEcpE~a}8)J|m-t~QF4Em`M!b)cdE;#1{&S={*@FB*apAvh0zBUGZ z5N-@|Zkv_pzWop0CeqI2_x$}fIB~#@I?@^S{>~&AHxn}lZ}**|cz+?I9c}7AzyU_4 zfF!8~n)kOsBpx87bAf|I7w(tB;l6HLh5O}ha9@Klj9l1;XxF9p)`r)2+(zU3S|@9* zi|^}ox&cCH2Ku(w8_Dy%hP@Z|M@~AMVPGnyHlklV*^SBTIZD0AR?;)??gd22HF;s^ z(s=ztH@t2Pr-ze!jnlrQ2iV4U-Qd0gG03IkH*7JeXUz98+*dmCl1s<;0JmS;lmD`m zB5QJVxKA}%{;9+*9cTH+;TO0RUqi-xzY1CYpUH1YV285)0g7=Fb=m8&_JYbbm+sm4 zz2YGdX;{@%2ITj48})T*VO!05FfBj12wjuTk>IcSg=z>RYyO=q|p_%&~MaYAk&JLkK z%>9@HWwAZz7ZbxFR0q4i-qws9=Dc*LQ`q1M%(I8FLhqzdioEoMPhL8V6X~6e(J#Hs zevH}7$ivt5dT;H!oe8ip4?8>RBxkUz*->|8E6@XcZa}BK6Ju+eLP$Tl7#aAZz20ei zAuA+9B8B=UNe-o*&!%^pEHJ@^Ot^KSwzHV4U7%&$nZTwu=lJ z`i0YKd%Kn2jxh3@2qV8ZOFJs;!=1)YIZXI=nDF87)2D1Ee7k1Chr>^wa+vUcJ1?zu zURuLT|BV;JTKlCn`lbIy!?w2DOMf3KhdByWalYS?91Btpu^Hb#>ZNGat=oI@8(xEc ze~5n<aaS#ES6oCkiP;Xm|SEw-{v*qVVUP@!i(bQ4N?g}g8Q7ip0EY~9d z`3^E#;_941ESCBs+3E$JZ&Er9JmM93+HySg9$B8H?jfr0k>xtP>j5GLhp2(}>zIiD zoI>6uH6&1Ci*px zboXyhbblRAf1ld@ovr&jjP71tF5O)t`KY~f=|e|z<!)e9h_cBfH1* zb&u2I^*EItuL$pPN_3B5NDuWE=`yL`Q2N-ORgHDzDueY_{>pr-eyl?pW*!}^7dWeF z#}sRVzr>KAdvm80D;FPrC2msg%`sA-EHl*`ag&&rUHzF>p0_lr3--_04|b0CAX7?0 zl~{$|khNQ@RhVg1>Kf00qrw*cJl`*Yh{<(4TotL@RZ#RPv1WRcLT0m zubopg9N?I1KMP~{A3H;6M7_31t1 zQS)B$9_$_O0ag79{bq#SK9k(uHVcGA;QdBx9+ltMPLK&n>g23^10`e%kUn1|?8E%V z_tf0zaBhf{BQ20sHY}&|F~R|vDy_-yTSIn=;wSbe2I@}`YOa~tn1#?R(o>}5EjpN-4rCWDeXHiC!RUmdK!`kwykMI^G4 zD;pu6+xhCEzj3lecI7qsSJ0>iDb6|PCuV8toAjP9% zz_N>aVJY7DF@^B0ikx9_0qPLp)deVAOy8;ieaC;17`l(xA9Gacgnp>S8Dz!5h|Y^P`1*=oS} zCq(m|E?^ST&Q=5H$l?S5C7_+H22eQPIYsYST^MTBe5a`!-}&Bv`G^c_vWJHAo$m#h z4d{+qx^{`)>yDDNu%c(G6XjAEJmI@mpWx?3RBFFnfs?UpRJchyf{uLr0#~R(YjXp2 zn@Mf6=M3F4x}hl5MEXIaK|_hElicp2-yk%%Kr#hM@GXo@z4*UNc%@yJr`@FMlnk7LorjhNS&D6uOVJ?6Atpn0(XX}h z8Z*2iNV>g$LIr}{=a`TvTtIZ{#Rfx0rxP9DJ2G;~M<_#-#3r5JP2{DCMKY4)zDs9o zRJG9({ENNAMk$OS3>(4-dV`HNUJI&K8XN0vY^>cDv2m}X9DQeyKJ+HE0!&h`Vg(?f z@TBj;3;~kYjhtF~rp@VW%T6H#yY_4ji1pDeIcfCjqY#@uIKm=qGk|@7CGG!cEqs8?B7p#4gwtdx)DY;PuKl82g)>EyVTeo4qF3`a+HpuxxE;gb160H9ue6-h;dPPPuDYbVi=Pm`fd?)ilczka~`2>5f_j-*G^F9P`GJ=Xah-JAbpKGa$<&{oZ%;TJT(2!VYi&xt^(m@O4U- zHS$V*SZJnHk@WrP;%5E(Ec`R*OnpKjrcrNOroD=kHOZsB-&KY(e z-`ahgV)yYMj?|JA=K=~i8c_AyZZQP|-BMQaJBbJ`e@nV$v(h{}x zH1%uJ=?;D{ak{(_#|?tgbDH1kjuL)SSxo1wbE!;zgmUiNN+;ckW;!^XnGFs z#t~Q}`f*$Jz8_mSi|FPo;Yhs&XFqF;h*iVI1jaPZ@4$e$xJgsl{iI&97X%MS zsP*%uip3xw$Aj~!#quGwKZbc%X(GSE(wZXm<`P4|mqVZhL3 z#ut*L`%J1q>RJkCvFzm2AKI^;uU{Rd)-ORfbQ*7PuA+HPZ1?@N!4BU5T~R{?^zB zxkEj-v1iI(CdYT7wcQhz|I?@=+ZtTL_hfZs9&7FSos~(kttHm*Xxf)XkkYqHGvNil zRn4(mINh*1lG4v(TiVTj7IjDVywMtUU~GUB59z+%U`86z&3cWQOJZRryqox#*|dJ* zVy3sK zS=h(@@Dgih-(^s1_P*B6FW{O-#5_dyepp>34%J}y z@5^%B=ZO8sP4wM?k`?;mP$}Zjy8|g8F@_&@WQ;UTnaYMMg?edw4QhSgF}5MktfPoIeqK8+>M3({S;f z)nY`gh>?!+<0;FU{24}}4w~t5fS=?3oUU#;k)jCdg)}zaKg=(Y`FMHw3~SId=4HN? z3tt`1D!hhAWIK8TVL%R)8yASIv1MM{n__tb2PCS_XsQDNUy&egsCX4cjPPf;_Q|+r z*@?EI9un=!3A`;>^@Hk1HG^zd>2QPa zIM1JP=U~kXJYMy`up9iIlau8?KE8!B!4`H^&)4dt>gu@xKbV-ZM5F3qfpo+DaonkO zaDV%XzCwN`xpYRWwi>fiKg3UTmRe^?&i!kuwdX&{1MFKdI9-g%L$d#21Oz6Uycla^ zHuLj0IRom-3C}IxsuMI(_H}39j#?ej2yWFp_R#@bkkce+2K7pPi4-k*Cp9?{r124q zwDJ)?ud~#7%QtjU)q;K9LHDqD()MG6dbiq){JuU+R2F|oJ?w}*4d_T~JM{&IcG)gh zs~^yI*~7Tu?RgC8x|&uz>|4mMOoHQGLi*k>b*^YigUK`wRhRhN^z9Eqk||@Tx?rFz zLT{^}94Ty{FeyxHtGcAH($3goSP!7}G$rGpvHPki*xWZW zZt})8BW*q%yvPh&sYma?rPSfMfWJ%l`?*D^t#z)Y<8D#RLJSA-$o|?h1I>Ioxe*7e zkEJ@2^!LGn)V)MmfNpqbrhNyDM%|D@leB1ZT5QSr9}dB+-hLXv|<%eY;v2JLy%s4)t-@;Vz7=bQ4LV zH{ESEZ9`(jXkHX9@rzXRb4RE-cB{%XVdzc3dJzrQpBUokyb7haM998U10S*@Wc8$7 zGYmBZ!YNO~!(@9Mv8g-xeOD(KV+fYjcP}4i$BsrYaX`8jp71l|;!<59=ksclu7nCX z6H>Hr9Hx>98>THq#?-e+7V;2P%|&Vhf)ACP#LY>(@PGD!*!l$e#$A@wAo+n3a9}wbT_W%m#SciQm6YQv+4QYHzc5 z~T60sMa~Uh0=mzA2<)uXo4z}8crFQD7mhYZ1>v} zh%!OVmA!M8`fa>P0+-k?rfHkd;|oh@dY6+eq`UNk%|~6kT) zY{mE0!$m{Moh}V!7`NSq2>iz=LnmaAF>wFAtf`2Dq2#e#x6sXFnebqkaC8YD+PaOa z>(Ff+EOn$sv!NONn}cHNGKTuq;|t~Rde;!tc3caY$L92GXr#!&B>fn{ltTHj4#Tl_ zy=j?Yiu-h4$1c7JuZOQH32Vz#57(4x!}oo-VfJkJPV94ygG;Ytxium`7-naYnD6*v z;6LH!mhQvExbx-gGTe5haDgEw4ZxT(3~%*amR=3a*l1uTr&!xLIa&W|1G5cT`O&U| z!t7|M_Y)M7RHm7KDXGdT+L0?=DM-q&`=tzfSDHl^^Pf7Eg3h8+5Iw6;sqbwz2e-|s zPHJ1K-|9A}Hacw>%dZ|G$0rE0t7IIBD*f6Nopl)$K1>E3L1AYqYL?$G>oa>0$R480D;TA{3-nrF z7_wIrr|iNlQ@?Jo1NT{xxnTPeZiwVLpH1m5++P9r4h}OvZCi!=>uzvgl^(VUy-HP; zzVYKTYwhavXf&<~2j|&72IuB(;H(}PhMm89`W8EDoGNNAk=-2*&ZB({&Y!x0bALEE zKj~ZKJkSlA_JJuJpAeGQDij*&-cI$-f-Lby7>WX;-Ti@BoGCw0jZ;VH55o3d!c%&v zNXvgD7Xu}Jah;Yjjt5d}2xm@0GT@WzmWhE#zmX|#P}!LfrD3?r{<_B3oc1fJdmx`z zzZ;5fh0Y>Af+J|GkMQ<^&E_Lnz9*$kNcx~K(ok{O(m-!9oU^^^Zixt-NSQ6ltUu$$u5t0&AQ?t;QqZl3L6{7~I4C8p+N(yErX8s+9hiC! zGKL`jLzPOFytHaO;%{Eac<&_d3NL*tGkgj&e1IVKX+YC%_gtm!nSukp&V)g2bU%}E zQ+=Cp^M9Y1msIwfF9`SA4|my37FsjAUpTOEcp`7nf{>tDFAF)5u)oE z2AI=HyeB|>Mc!uF1UrX?%vW#(J{kMvujDHqi_8B?!W8VzN@+4ewG04bP1PlM@NUd# z15JGB{3Yz6AVak^NXQf+2nH7d6ZvW2xe~+hjz#Y`)k}eRX0$s#0KE$zbT^SeyAr@m zSKll{n{+3*ih&-1%0Z7t=EjUp{kazwNnl1Yv0~!^IImz7vjs<|DX{SkS+N~b08j{E zOGp8tffPDpjrIE=g=#TCKgGr%&H(qOGTbjA8k?mw>9ujYtc_bqUPRE^vmTB%phm4G zKp@U4@ilGUBH2>RBzKK~53f22v5du{YD#phM9XrB1Jk{@X-U;?ju%6q&U+STrj?>i zKCIO85y5h-cH@%glD)@yyq!9R*cnwOMaS{3@~PcWPW;?$ia%FZTT9)&g4h-{NrF0$ zllstF;@*QdrYCx1oXV0njx=wOjeIg-VK87}!(%hd%1%2lx}Gt~G2yZ|IT81(J;!9rl7|4@l;E)+w~kN(pLu{W1k^$4ZtZ&0qFV zo4G^9_Q0E>2aX?f7(Z)|;_rr^^?u+9IGHi2e(-6}`ZJFzbJ^pzkY{x(BWhr!P(2 zC50bBu5`k;jgkzmN$+^ubG%RCF%)H~->e{4?U;)QHH5hkQRn?_*X4O=mWU9xADq+6 zUm4z|A}Xk-po{(BTDLcrkf>ph`is($^y16Bd4qMWqEWBqP?ISyUn#waTknw9_|R2Y`%| zt2L(-8MsN);fF$p-z;_Mu+9Ena_R6kp~J8FioLp7V%=7^No?_jOxc-aNA9-r6RdC< zN`e)BfnMQvujt(hm)84HLPD?bm&u`)#Rk^H3O~bL;jgIFpY^ZsWbW|9-^tpQb+wJG z+z!1&|Lyl7XZ*8HC+3r7)?zPFNL`j_oRfpGt91@*u~({IZ+~0VZm&^Z{^6}rvovQq zD(&mh7*CQgUG>s(UzQY-X-x@PlMc29zG6)pqwlte5O=HG6}!bC9ION~lBj%#&-IE@T#<_bfhrTlW$z||@%Lt-FC%kL^v zd+5q^2?*%2R@jd3Gih;Q9o26+Y7SQK56a}@a>sUj-^?4y_j3m<^ss-YDyR0ma&hvo zSEJt47Q9zSRP?4gbl>TZHQaxp_=m2t<-+~R0Ig{}0AzEXuh5lN!I$QO|)>^~QqIK76 zxWZwd<2CNj)ztH9Um7thgr`ifX`#{q=SgFe_=$$+*1oezRLYt5DaR(^g7Y@u_%Wx- z+PW043Yw|6mr0oKB^2A>E*mIp+qrG5+6$e*+{o5codo{MqzSS+#jX}HK#2E%D0afad$|gpqngS_zWdy7vf4u4(v8+eG&UL zO(L0Qb5fXrl7``VI<#c6O1#F;#jksz%=4>60E=h2ua!$vC~eSqaUyRvPl5RwDt?2` zH&Lj`A!Gy20!F35SI<3BAZ7&rARC0J((FPpE~eiwnEp_-O#PTn9;Q!04oZD*n+j{!F%cFMAT zwwcroiqwKpYw-%onL{C;pSVp^$PJV&kED?Hw3IZoo_=*2ait3p9{zJ8WOgSS2V0oI zG#gWz@go&ng)vZA*FXHdlVZ|xkU6fyF1(OU{-wp}EdOv~rX-2`Yg!xmRtBp3PsD-B zr|#n@Kadi>Mtk|tfJ|Q8PVzqxbN}IzCa%vX_A035kO=# zI7La>xWTAkSssJ!s+;cWc-a~IXR1Sw{j8;o{o1WFc1MC6tG>aQErVUnV71`I0Fl!c zWvR6Te5G8-7VtB?$kI%j%X_c|FC=p1k!3C50Ur#nj4x9))n|!t^_{}V;>vJTyb+EH-BjiSOCAMfrGxhu+ey3X9QihfEP#$1>oeP+8*7~~!(97_5prZ~@|+eiP_3&M1$RTQ_@=yV$K9a^_eiX@<)=-u6DGP=+E7Ei5F zXnwg3ax^n;t?z> z1}_baw^gsJvA61L?Ss)en=G!i4^r!D%vK%$xgndb_R+s>vgvB@{ojZr-|vANs6A|B zv?GIt(ZZ%}*Du9A6Zh@ZMxyk4;0Q5M+RODU*ms)7)T`Lb^j&2{DXlp%`jf5lZ(=#T z_fNM(Vvm;4qks3bTSPw(+dcY59`FB(sKthF!m%iF4Sx@8v727YUUy$4`6TPEpv^eR zMz4eD-_dm6)9+21p}wK%-qAty(W?(mvMaXUNj7>Kqks1_jnU7;rZp0s-^13}ZCN>c zT@M244vu)*zwaf*ZqPTYxBn~s`<`Pri)mG3_v_#HTsvW0MjcQ7>EHLl)$Bj&eXn2M zNRD067UQ2A&^O2Dt$jS-+Wou7lX&cVQ}4%T_nm2j)Y^t7lJu@g?~r(9b^ij<6?!CM z*>-T)h8ST#1=(&pJ*b`fDX80-$L2vBeqbs*cP8Vn;kZWk=re4xe}{=q{fCZCJ#=gp zj76#%wjsvdzwEj+2wS=g`29;jt|_&b8q?%Sl>di!qkb~Lu~gP3e%bwG zu|#aVwECGdYO`Qikko0ADq zGMvXFvi>wmB;ZqarH9v2Jf1YqFZeelCFPqTgXIrDJaVJ1w!*{zldGyjp2@ZKb)kyM zf%4qK+~UIWf`Y<|KrkmeSYDKqSC%&=m{*xoSYAA3N@4bt>|k!;V`mV5}>JBQ0MW?FRQ4nsmrRZlhM}AtqO+ZI+X`Cm2#y#9-x-1 zG>@meN1iP}`TL zrIBXlg~m*|r*8C7x=8ML!*4-T`>3x7GnOW&OV*bU8k*Gw>D^n(lMs>Z1XBN-E8xySO#hnVKr37~0&YDu6r-o8@Vj1nHDXl0T z?%gHjU`lZ2vKo-(IYoD{EMW&pAz6o>fFO!j2^a@xFm{axMmW@TAQO9831yZpBuPnz zf4nv19-UKT(|gg?k=$NR+00&AW5DwH5Lp%518q!Zr&q=NKoT~hr0ix3LbXviuA0AK zp5Bm{o~})3etl>*ZS9Q+?ok*1J8ELP*aUra+n;0-?-j(It#>7#U%em|3x2Ox9;@Wd z^j6lvc=c=2ilwm>uOpX7Dmg69UBn{$-;g!RtHw96{s?4a1CzZWbmH&{JFN=5n3Jrp<_q;?~*4lIQ{Wiwf@UX?XNLzU)LZwv?l z7cD7%KvQZ3dfEjLb%U3M{^lb4StiWL9#AOmfTRgapIqK6RhG`g;_T{zKel7Pdd^#t zHUNMgZ0OWq`PK{OY^3rm{vR2iSD(61me%8Qa$zk zI|Zk8dN}t`zbRro-Qbd>j!%$3a_B039Bu+WJY{6gp7*wfL59|;ct+?cJF`jc0hs! z>OKue6EBRYlcpWvO>SwH0JULJD0Sut*&he{CR;-v)9d|AWvUcMuJ^FsfLMKk%s5mH zCjD`fEO`2b>G{T6LsMsFID1+Xd)h`8-(c^do7i_plKVzN0}BRjs=>zwd{%D&FVkoF zDRIy8jy@<%6Cp~0%BluimlLJ88SGcDEG2K9=so_RNNl$qN9w)wM|!O=_*OUnesol> z9xePB?dYwd#yZMR;fZ#31T9bRBI5HXb+G=arrN*E@nveJ8r`aK@-K8ka-jK&6ToP) zKvp$*nat5a=V59Z_-fJ!SQ>9qlBZaAlm$#_jiQ_dJtY6VYEY*4dnlcllsR0ie+=9Gm3_Sy-vw$#+lpY1Ls z*%`a>QM)nE%B!j|ZO)!oQ$5G-$lXvzq*x>U3P&@MI%cR}h13L&OS@C4h8hp4>=z$X zhpmZqgaP7@jWgISc31BritP2cwfi}`!RbDfVky=bwXxCHVvU_#q$$=< z)hmsi)}Cl^xrYUuqKhe3u6n(ZFN~)+XD%5~Gu7`_h#r{d7o?-;`Jll!oU3Mmcam3K z-59j?RwGIMJo#~JZv*z52JB3AZ6ksVkle(_QTD#z30V`L@TwcoFxwpp6#J-08rd(e zrRJmLlO|*S>`hreR96E1^*-GAQc(Q?ss6xcD606t+2o#< z5Bv)aT-XQl)pzoN510Fb@_|cI_y9-o5cN0Zg4Hf!%2 zHL4!R!9pP$+UJiU-@`|d}WNffEr9LnKoN{PzE6dyW3yUJVLRzr_kdV zYJiklQ`P7!s~GJry8AKSY?+8q_za)p>(pR>9tJkEYWX5?YY!jA#6Dm_0RN@tYjaAiT~Q)#q%^0EE5YI3>K#Tq9z{k;t7ziQoZBgnyw0Q# zPqBvimw4427ynsdNU+9DVAexvUJKHBCUwTq8k~PoYRij3^V}sIYd&7e=+BpG%O9e- z;Yf0!YPWV8Z)H5H+rCH5BCj=4UA83jIm%mU{6}frv9yT`B*~7Y?hN~y(9C*;ecZ7` zRJWFTQoo&{)=(#FKyb&>88X9nsw@=QA@#)4 z7Qy0Gq^TEQg9Eg@+w1dzgL2mtxVZ+!Z$z~m)r;rTQ;+v&RR+rI=gh7P)mF?atDcj2 z*kMQiJac#L%94pANnKS1Hf;~57e4OUy>fAN zrhI+s)bPfcd)YVVm(`vSpx2p!>dNjn7gty8;hE*BuBo0~T|aN0XF(0SBY@Y}u}6Dm z&))yYBlkac_RK?$n?8HivA>u;d$woN|LAA?X6F6Uv!}LLW+nlI!)vM!=ldmF-qkeE zysBUzR5d@qfmnv_nY87ddVVpttU6RP|Ddu^SxFN5o8~z(5KPKo?I}n^FCGWEi5gAw zOiJ`P5&?-?nxQ3b5r^;vCkbENBXgf=nNAD6R+5EAds&v(EDBV5%I3|hshB!d|Cl=U zfSN@~n5n%p?OyFaKbu!mUN&#q=JNoJiarF?VO%wh)fHuRAy3VM5IojXpO-826>xdM z9xl1Ts#tq_M3Ro&)RV^FnQ&NmOt$9;-IqJ}T{8=_6Nc&udFl)EJ+l@s2pm!w4`n@4 z&)zmiq{FFGO<$Uz4D&SOf%_(c#X$nxo3jg8h(pOevhY~2cr=$kdY0ZNVy;H}S$SE- z38C7uih$<;_bLi(w+Zy?w3+6aZQwT_a<&sskHDJtp4rD8o-eq{V}A1TWe1yGRXuyb zJOG(^*sO_WU1nwJQB3^Vtcf{Aa|?szmAQG96=k{E*#&uJWz#(ouemd>-zJz0+#>^_`r7IPYbpcLFNA|sI3=QQ0jaCMtgOh6VghUfU0z-k%qy=b ztIVw^Dk>=I26R`iQ>RAu8U@}o&z?B=xC~1V(%kBG7oH?ZH^(n1XecV1SC_XWdrnnF z&ZbH?nrV3&0u`S6DToV(d3pBtl-CD6wPlU7^X%r z7Lu4X@xY1u3mN3m1N2**TU?x9P*zk>QJGs-TvRmO!~F!`on&)&`kXqIJ`*&p3(O08 z5MQgR=XhqCKQ2s#=6<2MZ^M$GUtE-*U6@;0kW-wWTai1R9oz7K(;5-abb|y(uXR-w zb?%bQ$?m$Dn_pEoy8$Ik#DyR+e8;mQ#_FpIuZ~TvWk;<2BY(QeIOt z4>4=eY(aS4yee1{?Yx{lQ8EFn3h(`=g(nU`0hvab<30VOde-6q&lnPrBWS1D;IloX}hm zZm0axbD}uw?NYo0kA0ep%eM5+SjpsYKSAf3|FPg5 zO0_>Rb*lM9f;SnmyV(>Pj*?Sgn1KNdjCPGXw<5cuvM7+3os*jr$So=i8#jEzajUc^ zHhY6D}m6XLRBLznG{W>R+>DCRrkNA+S+6B~X@|Us04drLd?n zCuhoZSX5m|4@$%w=XA73#Fuij^(vShNsaWDS4K znDekzA;X#C+>Ksnd?zO-yRfLNptztSzp$`ea1{wkiF7;7BYn;;tE@!K(JR<+%Sg^N z1?nna917IYZFyl{Zeek-pg6lIyE3P!Ku>{wn5;c)URhov0V)kS^$Qvo<<)KK9wtlE z6PzFN5M=^M9u^3OJV#c|nH%yP7|>_lqpDA+M!NOvKd)*|^?dG`gMiGQy;bmbVGwn63+Y!5i{r3%!5_(H6yY!9aE>)@_*RFUz$^eEeVC0;!)D@*Hu3*7InE&vcQPIp)X%G&YW~ zui>>tT^m3x&#>5B9gc2uOl?&t;Ao6`Qo>9U88c=F2WwIl7&_)tFFI}vA zFh(HBtqo0agr(x@K;vv}6qUnRL3SB2`<%pzf`#SzdDA`a(JtF1w}=9IThJcP%kh8CB5!`nnz}#*UghSLy%~Z zEdb}_&aEM))%jI47tK+DkY;6JWo3C;an5v4cmw;y%~?{^qH=D8DmlG?K zd(a~HsC^Q3CThL}`YHQlY@c;vDq>;M+84my=}~oe;l;sEf%X%SWmQoe3>1_HvV+A% zQ?hf>tR?Qc*Yi3}4yYbNqibpxqv;6*JX&d66Aab`Le3%n=jJgjt19cuIH}v&I1Z@} zGPEjjT(H40he-SR)Tvz!x{bD~dO>~26A%$uKJTfi56O+XP+6!xStq+(c--Q~CBel7 z*~KR;*({BaGgPDW&08k+#x4hrE*ZbyiK9n95?99PIvFzgHIAs;-TNf2OG^Lwz(JZL z`nxtWho^*N)@js#KIlIm%oLZd-kuL^?N7fG$7cEAIeJ}|r0Y;(v~%086Nff?6=Z80 z*R1ZAOM5rW$~pvhH!-vwB?d2T^umH%gP@Y1SDcqyQIH#`%&!ajjmoH-9EFp?^e)eW-gL2fPPIQQROc6B+Ak~0&nYZI zAuSGd5tGqNRBwVt&Cp!Dem9|`9~@N|733Ba7FOn#lO8yjQ;GB+iE43narRLtwWc=e zr$`^JS4>1hqaH2R2a|ZqahAL6dR*bNY8T78EF@QPb;VrPBVKQX71{ZD_=T1i<>sMy zHjm=XVia(az7{?Zs;!wfJ2;O3uLJo}RgJTd%^f^ls!(T)GK{HH?dJ(~r3ZKp^c+wd zC_6!S%Qp_@6D8*TT8%K*t)|zVg85kP!P9!F3l?Sd)|(Byato&9mFE{|b5ai6(VmU) z#bcD#Q>Pm3bT>+p8AukY;(u1_&y7|bmn@Gy$=Wm=|D|rQCg<#%Pw36@_|Mf8*M=74 zWfyPO*>}?%nc{f;8CM~3`rD>_|7LB9_g|TKH74IdOS3%!KEpQZ-nan%ANQ>4l{+9j z$vA~W!^Mu_yH4D|Aw+n5MP;BMySzM5SeX~d3rM(;dE^9`3B95tH!PGsrcQM`i7>`? z^{p+$aB%JKU7jDz$tlXMD9+Cg6b1?^jfGf0jq`e;nB5zAX>M+?ESMVz7MB;~yX4M!ryr~K@ zLAGPGbvy^Fop9sCR@^=g39?PPGbJ!b1heceJQTZlnBw38Pk1q8GPSsWmjxk-G6a1n z56^e=D7IuVO^3DVZN!O+fGRO}yYV~8A%ajr(VSpm&HTpv#o3|4d0RjOMiT1g^tkOC zL^bKTwB`_>*}8tQs-Hz5(M2lrQQdzX%R%pD=0H{1CyP&L$aN8-xdBK8g1aR{x9z+TC zRKdL^PtcqGP_tj-p)$CIk%qgnO z%`Go4%PGjt&I#J-mi8ef#6H-GYB0_pkk%x7lGRORdo{1cu=6)#4nNrszTx)Vc_+3I-;@b zj<{d`7tXOqRipSLG*X-_4-bSIYidsjzlD~|?qvV+n%WSZ99|Q$Z}MY*B6JU_KB_LD zuXwb7Ls`|l@XijBnAQVoYfcDM|DtLE?dI{l%Ei+cF$;B`V`}Q>RUUxL!wJ&w{s&bN zk{J?L(L?IOez>=3GkyMo&|*}aWtB%%&s%(O)x1F6;<^wHo?VxR)sWq4W~gjlz#fo1 z`meI;N``nyH564Do7NybO2_3RI9G*73(Bp5Kg}(uEYHsm1`ALGvB?GU*-G#ph*Y*mbVY!#o*ajq z4j^V;XSlKH|1gt%!udrKfticvmy=q_gwAyseRrk_?ucr8v<}6eZZpgSYe>Nh(>Cl=`aZB` z{`|5dYNtap&TZ3uj0dvF52+M}=`@u)kzY8drk)K~whwnpnqEhSA@|qe_4CVN(&mq5 z-ba#W(tUgs448EyNvVDziH;n@-GSsdD1+zMh9k!w@}YsnKZi072<-3Rz#bqU3Dj0q z@Z5vpuPo#?Jh-Y_G6As71P)`n0?#w+(Qrtj<3pMhgHq5`v2^`36I;xwk^z`V&ED^@?MU@dC)Z)pNIB4#z|s7 zx0B%BhXa8_v9057siVPmpNstWZ|xe$qNFNnwBtkwVyQ*4s#wFWU3*w-(QKrAi0Rz` zriiVjoZc*NF&<=Gp=0`{ncc{cW^y;To94Gsgw>4sE~~tnxuutsq^sADTPfA8;erS? zRRAZ)>=8Z!{OWsMEEfQZ@n8-A<1D|sLx+v#%K`!&?6ye=$h0af+^ouwe52ps%-+p~ znZ9Z8R%K7vHOh`%-}lNq1Ns@foiWnNnzC_2>o>3z=>dZY_X4Qt10f{Uf$LUj6tJSK z@jrS;yDqYOL}07ut#roFa&Y#YWdKn91+DOiDrdPi&8DD0@}=AAk>)+@!z+1g8@YP0x0d5zfnCt z`wexJnV)#6U*&!U6@s9S*l(ma2xJktw?d8VLp}Qya`F~B0FF!qqeIvvFR&mWm z>qH+9e%D}tkHMg68x2T?pG5CqT$0EO%9tfC#F&=_C45ins^~iWDRsNy5Z?(0_=J7S zgC#UH9Nn5jPH??7Of%JAIM)n#$@$IbZaD*J5V8ijgcu3XWTCanKd@Zt@wK|)PMmk7 zg3S@_KJq9(+7Cw{V*p|i*S$4^Ehp#3xF|A^{di`sCUrXssP@(~kyb1cqcv5;OA zZH6+M)J-H^$6+4&RZ>(D;L*s`g_mh`Zt?JNxblj_VYj{}G-`+0ZdL1P#%*lB=-a0K zzVAlN_x!jF@-ks)zf@09Kq4|l+Hs@6%e=yrB(Og+0<6thevnYN@jEbSLnt6*7W9%L zbki^j;VUKdG_r|)qJu3D3L|+q9Ik}J;)rIOILB<{9SjU;By3Ntj=U6rY=y@>gb~mM znh(e7j-(nx*__cn>j%I(^kX;4fO{CG8PEX5HC|uD1-IC!*Q|#eA8s(>VC<8~m@e zL$kjP+6`NnGwF~!=h}taUP8@D9;AMTL}z%+UEsrFyVCPg6okdm0MgGXB3u#QDf^Zj zPKO_l8=yilz+JUnx%*()6VUIro6d=?ZDQ-bkken>t*RE{4hZ3|Y+&4mj-a_~ol9qD z>AucVvrkOM)S=&1Cag2%M(&C8dOC-N9IlOP`WVBq&21b`jc-3m`-=0Z)i8!bp%f2? zLMd)FTF_EBW2bf=DYa)y%}Tf)1yZR4)b=q>9*mBrqw?L7to%ZutH@eBYOZ&+vrF|D zT(Pjm6R5@kjyClIqT&^EEI;&)=uor(42e+IDh|->G+NjCA%@g4X!lAj!--Vf!$D#J z)K1tNU#S=G?8JM2cH(_yPP|s0LApR%G=?sYtE}PYa@}5En3dByI4>-(Icr+z?N!rG_CdWbg# zg;5dv@OTlGgnom)wZhpJ{oZ**bFl&;4-GTBSmTh}{8nA8KFA?*_~FVFuDE>7#Y)G* z?cA(uOA2Dz3U&SN3w#F6fJK6=zT~SB4&Z!g1|;b>)M1M-9BV z!QPidTJ{3}(^2-YQJo8ZfSD zT=+#$7t+M7Zm_?VY&5Yi=?(AtbGDznf#`4?g>f#wLEF+2p-XNVMk#aT z(BnsK9U?r~HKQEE8ut1scJsKbK%l}YaD<=`ci3CEeXoRg1Hlo4mtT-0+be<)$%l36 zu_OZ}6&7{p7JJQNS^GVUSH?$#bELN6;L%1%gyb8Fm{&u`MfN<#qdHVo@w? zUszof?tsC{3Ivo?0Ha{cV`T^lyn54-YybETKJ+;}>l7hEd8*7!5%A8+sP-C})!t;U zeJx^A+F>bLQm+0zU3FWEt5ozBg21j}x>8FIS(aH?Auc6~qBQj|Th?#0zu5MJDqA4E zQ3!yV5+9uBGp~rzj3|#?H$*UxXn}s)ky_x(jY!JHk&3>d$rTh)O$o)N&jQbDCid#B z$7+d`&}wPvO-WKngt7u7SOnR`nx?GXd!)7mfQ&^CxU48*U}L*}n$~#)4lDeAq$)z` z1rCC;Oj8$X3kyS#W?`(chaRbtNFB3*_?%-0&OlKYl^!ise&tBjB%Sr_fyjKA?}=d;(bYn|s0gj`R}#*K@=;NRS^+vw^G*uAjs6rF`Nd zsX%Km!pW({aFU_5!y&cqCwx<(-D0Q}lt5Pn?sPwhm4Bp$VwljtFW3szvwOXTn$6O( zXzr)OYT0@?4yxutMUD#HYTqewSQ{=#qrt3(;p3CD^kU2sZL;Er?!4hYyl40G?tOAR zy0fwSq~R7!(v`AIi@jT%`L4Z}$kvl<{~ETQSbJB20A%Dgf781_1fT>kC`tY`ve&$z z)cw@3Ry=me-alKd7YHJ%5RKSmVfDAW`<~s2Y8IP&cTBUkdk5kV|0cBVG?5@*NPZ|! zh8p^9I~Mr^>wvQIr>)CqMrWllIvdRCs=08UzQxWA9dFmo*wpSlin?%w7Po%T^+XgV zj~RvDjI?0F zf+<|}F3d-~JNe~Kr|r_6rj^h=CT;9=o*T5O*-<;pqd79$(e^CNf;dPkU}+Rtoxn`6 za?jo`AVx=R=Nm+2SNviInV&Fr#>%TUr(e$(uW`eO6BzG_B%=@{?(nn}VUol$KVZbf z4Qnsi6x6x0KIx4OQ!2Ol2AjRp_>^s~!khc-CI?PLJw_ZM1a%^U{M*6?g9>S3&4O+s zH1x=Oe)sB)2uJY{j{%NARth72h??4Ix4%YIu zEIq0}X_pRdUkryEs_jh(Ic<-Y40)Uh0m@|XiR2Leoj$kssCo5l77~pB-hA0=kKg=A zcU0E|>2ar{kY#)f)r1V=GGs`VVqutQE zik4YawSj9RxPEB62AyFArvRjM=|u^0BvkEd9i)PjI+-w_Sf)kia)8H@T z`4|{0pQU>$FOH)!PLYS3gkcHa$?n}l02TmHpf^x9F8K;g&upCYw*ENn)WGgZ+nVo% zaY0UP581jdwl)3TanCWP#?fCSU1=nY$TZDMHwZH*=y4u~Q3Q+o`fXdhj%_H-Z_;e| zeG9g|kydM>s~JiT!Bgs`HN|uwR5D25;90xN{vKvgzF~PPNz^2>YrQ58ZQ5eYL?-&f zH!mI{U61ekZINQvf8NTUSzl*#?lnj+h-3K4t0M4n57G=bNS7ReYFWD-tkf5NH#bW<_{c$ z>j|B1IHc0(3H|9^y}NOp_PeKj_qFeV_C3_TN80yT`<`guk-FQ|m1*AriPv86^qM`r zYEQ4*(<}G%+TkG3O4IB2^agl(3w*r=zTN^~Z-KA3z}H*g>n-s07WjG#e7yy}-hx1H zLEr%rPma+g9I61mIz#-OA^sMpg!to1s&f7Fn7ml*`250PAU}jPT|f4dSZOXlA(MFy z{hcCiQ~nGR8=<0ARaJUfoq=}B%@8Gs6nk+iWg@9yWaVvk-eSALt_Nep=G-Kix62a= zmBWhuxWKwW11<^21AG^h;eqen1F6A@$sbpiB;GbqF*JpN{W-q}IxBYVe*?gf7H7Le zogd^iGNXzPaukrhEJ^+fEs}>RNBrkllo^Z1{YaR*Q2{VRPyrnF62k}m2h^jyjzCYJ z$B9>F6lw`%K%RoRdN&=NL@+d7HC27;#j>MFGkZ(JLnIZr1BGXZYR!O)>mh=S@#C+! z^jP%i{~~l6-q#yT_VtoEPEZT-;6*4&H9^)^WL3csAys)10#{rZ4p;8sT9bi?VbiNw z8{ndFv|rX;Rfxm}7;74qHNvO?lhj@o)zZ5{os*Ar`ZAF}hAS9e51+nnbmGA*RXCi#o{i+9fi#&K>+^wk*7z2!0ypsT+nt z?#F;a5o{%xBj(aQ_t_T4qh-WgSJH2M}mg4YPf~ z(cso^lZ%H7FvJZ*%FT(}mMX3fh3Sr{PfSA_%+^yO6C&>^r3E!?Bs?*oe~r zfrBaPfML+~81P#s*Mwe$C#$kX{$&O-BR2-*939H##iob=-JbE9=#Y^;QL1bTS<7>a zQ4DjvDD?88%s^7Zq@)pv$Eqb%jOUF7II~)KL4=_HJSH)f)CGoJyUy1$Ej78Q0MEy{ z#hcAg3Gl!o!1>k~mH@m(E0J7)D1)&DLW$b0QdL>HNwpOGR-j~8IXLX4kvHuG-B(X zP6#LxF{Ef_o&!2E@UkQanLF_11&AcB@dolVY5hGd9WE1~Sya}5`cDBy=)#1=t!W>5 zVWw;XtJHu|2TVz#xd*;Zr^g)@O!|m0z*PQgSpiqm1e}8x8W*UIN@XU@4T@J^hS5P6OKSq#vds#7|!JZ2GXo9v;$lDwcRlz&+2Ud`y&zbVa&y)usumsjV<7=Ps zwf}7R+A=GxA}B?mTfavnUCErM%{Q6VCu9+%jk+)#Hupf}iBekd@5iK!NrQoUR1YF} ziCvc8qijXCn-JababkySGf}GbKKQL8I{+}rs=qNr&IM?z8Fpb)`$ez$$zFkMd=%S&lu)|o-6+^C<;b+a zeIC`%qcIZekY4CTqP*sCM%Gn`dz{W{ki4a!_+@J zAzC{e9_j5Zr}4G}d>~jOBrVAi_UVN_3<%PaWjNrRYDkoMC#w>VfeI1$Ir!H@+z>bK z>|X76a2a&NtLbmqwe(e=D3-2L4Fi`G!qRYjt+FHtBbfa30!%Y)-Og0ISr8yDFazj< zmy*S1n{rxzK#~G%JV+2fi1`|3ur!HdyeE$Fo|kDX4j4qR2grm`@CS&5(Pka2`wSbF z31!r#bMRom%MsIaFc5v%76Oa6ZuMp`g#jntBV3j!_ho_xxAA}^d?m?MgpE6b!Gj3K zo;W&-C8%~(1~3`;L?Y9ry(t69n%e;H(ia z%8i(kw2=584kbD42vjR*cB?sW*)g`#jwYS$l^jbrTWdM4Z0@P*NTRu?7Ja^&mQ^bh z;Dm$H3E(DpQd8uf98EI!wDMrVY%RYd*^VritrhPfmScp7Ap9tV(wL=?(5Dv5JG9?4 zeUw!85$;m}OPM7grH&bVg-4Of))ww1lw*K67IhxFprl2%A7ZUKveSG_-C1xNi#nRr zwA64ck!h~txbo6g&yj?st%@BbWg3@=4yoNbL&|6fZ|;$FSX&bh7L(?}PbnkKweBMz zL5GF-AYdATR=Uh_csQ-zx^3h8q$51tEX&fuqd=7)BOXkO*g5n7Xl~wKq7n3VIja+w zVPX^b-KBPxmj;K;hjeA`HolMj>0Vi7eSAwf)Kf;EjOlrNNBL2LYZavEL4wRW7KnIX ztI4&edb4b>KG<13+v-Nv68BiszMsMPT-Hb|MA&Tx&0)_qy+gzL)@uUZ;JSvS0f>3x zhlp6RuUBi;`>jPE%*Eh;%n1eDbzuZ<^$(j;)Vma|5BIJ_+tXVvM0*i^>(Ku6Zp$!^ z!rU*wU0H?|f>@z$_if|$+Rdxb_FQMWZ@UO>1@5s1VN6K@m0M?-UjVZomWn;s;P&n6 zU4l^%)Nu;>%_?w#SY|1pD_D}JC6Zexw*|9Hk3>x>#@9W3XhnuobDeu2 z0{0Q($Po?rwbf@pnEDBTtdna7KOqH5<6*$J7YSmAJs>7mIF|sKwR_KMAt{{WNM8VA zHUNI%13?rW5Por(VFeym7tPv*QEf1}7gk1l-vI^A} zph@1QJn@#c`iKsW5}>ktuOhI@PvJipy%m>Xpz>v0SgKfMlO*lCD5J+f3Xo&p7#6uWA z5_Xa@N@}>E2}^)?5AiOF2zQ5P`M`tsm2wgybNc&t(_8lazw`3l_XChQUr)cEvFkC8 z68GOD!2f$r<~AVyHZ~uOr+YOUvV^7ulo+X{@IMgeJ^ge9o_CXGv9}EP(qXP5^NRzvVDYj>7VN-Weg)ltLn5pM z*|#H0lLb@B0Wi!t0(Lt4qV9&ouF0 zPLcF^M}sY#p)KWCcyqY6iKuHW+ZzF~`2) za0EbYBAXQhK4A&elNvbB;FMF?EsHKc6c+q+HXQOIAcx6jh4UBZ$!SAYC6G)va#h$e z)t&(K5~bhq(BlnZ@+;BFTSdMS2*(MdUk~cxst)3a0)UY~4eWRcelbG#uL9q%gwP7> z#0kR04tgEXh9-z>MubojAR!#K9yOaD+sr9sxq?vV6NqPQSZ{94clC$c;jQ^#H79AC-VTE*^Fy};B2yIP6`Tpy-ZoaYQ%@U9 zIZZDEQNjo3C_r)$jFmC)61Kf;Y>GaGbS}fn;*4rE$UO*nL*xlltql3NLu{$?nj&A>WJ)S|g<4_@60+s$kQp1ba(b;)6 zhQPHYsYpNyE$HnU-Yvfb*w*%z(Z2u`I~d4fxXws=0X>Os7pSv?0smd1&guy=d}Kr| z>M9=2IJBu`PXx?W0JM)Ji@;6n5&vy-wbRGjqqbgP;1m?!w!D7Ck}bIX0P5#7{C;O* zKThnYkv^Si{m!(0;yl?!e&+&0!cP-v*o0P|(pt6ov%<1?7^R+K#1Q^rZUCC>&h&U# z8_u+TfWYSRzl~BBfNthd-Oyrc=o15tB50ln zs)8=p;VLnU`S~-YAFHIVVdbdNH#pxmqaz*H4Qhobbu$yZ@3>qiNF zOY3fStYhNZ6950}Q_$y}a~uG-ULCs#+@XI{1Z)Wf9aq;B^zFLh0`Y2#@%(m#01XG( z-qYDVEJF-#?z*0X>)=QE)8rfOx@&JnS~$Oid~k6KXZ(9IyPnhWM_^dOx1K8BdMteF zU`oHa8BO73r}(!h0Rlh-fJPsovMwFh)z!y!Z;k7KnV##DTYfa2jP7oL0!61RzHSBs zzHSBsX^>L3RX%y7iIvP-^gui91_S*%9ktZ|XggphfMNhjl_Fws6jRioUbRxUwDoE< zO|>Xy%i`pR(N6B>GZwEoLV{r>Fy;-0aTlPM^OvZeqmS_;~Na&6KYj}5kgUTOD+eU5iU_k^QP zK-&lv^mduYA(7jH#5zwvJ+pOh+hsy$j-+8{1Zj@8x~gzy>8`xh>*Qb@3>tqT^|LE)*_(m85V72q9IE=$3}+ld)Se2!?>xch{3hs*Q>n=QnF zgW7$`TetMxhsx=v=2mkIQ^YJ$nMY|}fSe_AkpYS9HVWqGUwWr*R*lmzq)Gymr=m_2 za-QCm`pV;T^u$d{y&`dAu!LdP111YjtGuUdOJ^%W$mcXmQ^97|zF*^;r6aVW3g?u@ z21l$mtFAz>!{?@_d2_MKz>tB60>sLI!2*0OqzAU%-p)*vUfDh}%M~JXNygB=M2Fc_ zy@bu?HYbiU-RmrjQlLxYzH?$}7l{~i&VVXIg}+&m0#`gNty_<7^+NT&vcCNrS;Y@1ft}n6Dp<9_0c7BmlolH;F5L?Ha>@25hi*M34=hu9OzBr>FgdQbc9 zkIVVuDSIM+P&rROEpHLRTH?Bh{cLW0fv8`s{U4B_h{%*bTM|%{njZa*)6%EW-E=kf)+SQ6BEF3PBw8Ce9NDWXuIk7GvvwN0WlDAs?S@WG zq^%16gXs6+P`?eo@6f^v33VXK0!t}xszWxXxr)4Z!3a#&kC90I61N5_9v>GM(~*ej zkWVD)TB^QyzdHwp({sa#r}rd3QfYu6ti_Ewvt+q1EchAPeEN!;>EH>Y@_c~Eo%(A7LBw5LT*uRFYlPvbG0^X95caDcY$HPy$ ztEV}7o2RuQvY(c58|!v=U$gQ{J?(TF* z!E!`zrBzsGd5+jBy+e4FJOg@F{(XT7!$TL6l+TQ|VU7Ert2MgIzjfIS2JI1C#C{Ni z)SP?%-S!e@M+j)qA_`dojF+$=aA4sgLz4Ui%kk(igo^dHx}Q7{imN{E5B|6OQEety zY*MZNct0sM_^^YE(x3qU)TGg848S7*^fg4zJmSLyQ3(5h8EuBJ4FyD@NSoDSM^5J? zQ7akFDsT&A?!sQ;mPG&W)E zIw_cLqJViIFix-qBiu~3e+MOR{e`3wwd+>d7^DY-x6?KPJ8OPNgZ(gfqp%E$1Worz zXOK4R4OxuxRoZS{4bR>*7>T>%STwD(v^sNZ7wiNBY zIh#C#6^KSpbgl*qr%wsmx1nL&BCM1j#;0V#J?wr`zdDPB|u4dP2!!w*z?*Lp! zK>&1Mm@X&PDUKfeoHHYW2WOIh7++I;FK=-kA-@R>#c!rln1ba>=s$1sNB2ITcg6i@ ztCcLJ70{PJA>Ribp;W={dkV(|&MG|toqKl-SgK*G=XU)Q560&l0_@^{%#IiBa>$IV z>mOUs4jQZr=kNKXx@pYV=C$(&?SmaAt9aiZ@_*lxt#{k^K5Q+u8lYv(N{Kcce&)7a zfH@hlcBEa$&c|_uca`Tf9z_TT9Rg3sb9l6!)=i4 zj!JL)YI$ga;|DcUuW_ai=yxNEj%s3OI8uEl4K0!PtYS1jeERw!E^&33n=_GKOYqEP zffPiBR76mQ6=1=E?XIdGqg)y6PBriduM(;(f(+J@T_bLEr}G#Kiy%TMksEmli;?Zg zuZXfLSPMYHvtLu2D&oNRlhDU0#I0&XECEyoGNGM5P61d>EW|mBl#We_}u zap0v{Qn~;(Chj$kWkc7^r6k&2fQo^vLO+LongF;pty#`Wr1o~o5_d`bY>0ISc-S`7 zY!%e20PvcZ+YF;E_Wq7`bs98nW5@ckOXi4!Ctx0c+Y~Nl0|WR#9Mnki)o<0%EBBX^ENuEPt5 zqptIs&2GnY+9{s1$r#~H&!+GJ@L(t$)Ryy=UkJD9@6-9>=LrHCu?Nw9{u5h#oX+0s zKedHCDW)^<4p2IT{1JaVsVYQG{X9qd1in$G#D{!*qZf8gvzXt5rh%19&J6Ved=O8U z_~|*qc6oZqv)Ob$XY=Rm0|1TZ&fDn}9{2kn#*_DRrR2~B6K+Zx4^l8&9gzboL zdaX`+PJTGh-(^zc|K!OJTuQC*n4Eb~U?!YRZ=ON%M+^m<=_E12Aa+iHSUK%pc3j!; za<$}0Tt(L-e4oOQut3i;WI5=8mdfMMJW9tpc`H0B!o#NF50UR|RXI~-@a92X}r8@hkcGz19 z^g5cn_0B&5)!tW2f2ZPIj_YPWv)tkEB3bUZ?Tm}iR@+=bI90ODD16ONs^Ey-AMFv; z#wxjQUINwxFn4%91U~s>h3N-GFE~1b`~|G@Eb~Gi&QBkxNPk2E7_)JfqRf>^b`Jw> zJLXnHY+t~W_2J%;w>{l6`1VI(KgwUbczZBQh_kaQGc^7gGKW^69bz9*^vL5O+m zBC@*7vyv5L-M04+-qq3*M`?HeDmzLw%@M~qu1Be+XVo65j%}7gniORO#JD7c!>FhZ z9BSLHvXVb!TvOV)d&_<>7PZ}Mhj2?gBoKI6T!(3bRPWC)+s$o0+DtcBakN=(uHrZ| z+*bZJvpZ+NLi9XXfU-J{b7IuA3VORBGq7X5;2THACG%fqOMSzN(Qjqq(<60o>tS%z5a-U_!|?bfb>sasy(M(;mLjTjvf+9*F% ztekC{G@V57)LxlaK@hls8zBz8XH>RqvU&eFMF*K{JE(I?&#yq3oEBvehk*+zbDYkx zE&h{CAZvvOby4M~QOfc-_nBLRjH9=UtWB|=Xq!1(0pdT(gOJrZMu#B;r)OB~D;80y zrh~1mv0J(_Y(@0=IP8zEE^maptQuT1<|a7x2L&R*Ky!{w!2GJ#KHBnKt!4DQY|pb> zylvr@VU$&6kVj<_6*$|N-_|HFwtQ3L^F42Ad2X9G^b0phSyd)^fJ?}rg$){x#LP0XgoG`ghe2Bch?E_M6QbeHHQ^VMx$%lGg~X$2tqM~A0th8#$QPUQMjKVr)7IJF zgw1a*Lr*}Kp^Nxz7wi>%)tUqY6fRrew^f2!Bne#?37d5sz{t{HrDb4xYE6+< zc{`frf!-wS+5{~wIuPq42QFfRUze~%Gx`CoVu&P-e-E@ zjCt_)hA_SQuuKJ5&rRXB?vXhFH^_*3@WT(k{P^IT8NhMN2Ox%_VBZJcAn^v?gKrop zg8VElq6a>RH~;3Qe{+Lxzdd>Y^7qIk_#Wv$gW3H1|L=Pl@eN+sfsbV6pscef^J)az zyMHUMmjf?4dIKEmSUIWWu`+Jw`i4Ys5bi_BFU!kzODII47q|?Q_ zX%)zzezEB|0vT0C_*;N<>3pcrbpNQq{(L5rbC=RN#?@$fH(JQxa*Dur^td`6OGkL; zDnTi|a2kK8^FsHI9x_Iw1pqmLO)KKu5mJ5*Z(jg#lw!c=_j7#xVLH8Y0Cs=FWV}9I z5-FrADB~qhu9FcO&+|p@ydB@N>J>8Xc-q*1v)L3yOlSEud$B|k8oC+WLhpItep}Q3 zT}~JI<);#?Lx}aK-w~buLq0=dHB$ek%ULO6*}tan_IC3l=l~OofDp(IVq3-&r1vAW zsjeBvfqlb%TY?PYS&q=qF_@^)6Z{7_^qI^;lsSn%A|Vm@nz-vdWhh?$hWrY+3>M`( z=LsVIXN!LzWeSL~G?+8G;~x^A`6n8Yr&A<3?uickm&XGZ$*V>@U?Oms(C8pE3lsa; zIKUl0eb-4OY=+PmheOPt(F7xnY~ksIhFtAy=Dhd)aY4IitY5Abn|LP4pY1LD2kgUbg0NCM@1b+WgW!C)GRKkt-U>ebb-t^U>fh=mjb22178r}TY%OpVJm!)wE${? zD23%OAapq{_6j;S5?FY^5ClzeKIb2#& z$5ia>e(4lTIvF}o#Rn=1@M|o7jm58ln2GQclx699EK7>etKlGSz(kt%;bagJu@GwZ zSq1WRFJ@s-#zlgzpbG-igYZ10;fivJ(6175gM-r{`Ed*iL;9ZMjL%Vy_?N}(eguT> z5heV?M}$-6tM^^-a48j6rS;0s9a~S^yRn#TUM6sXL~lM5oYgV=bO$g3ychCbe0U|x zILop!^I;|zm(=lRx4Ii_iAQ)&oVFdvww&{0)v#DNH*|uB>IQZ&`ST;GUenQhI8=87 z@=Dz>UQBa7XXs0J5FtW<${0s5xTkqqB6EjLICha3OFwQ{kidt;*E$xM9B3@Z)?T_s zq~xn7nT%abO|U?64>EmqE@GZ^4FF?}iL60Oy2 zj2}jHGmU0ZBBVZrRXfVlD2GwIx$3NdByI$!JtHT!ltn8P@dEL@l_fOU{a^i~K_|+jN!smqj7`vk4&|N=@VJ~mwm%OSDly;`v zBfuR9Pay$Mkwfr59|Zs0bR<0(3&He$pA`_M8V<+PCfoXoFxi+I6`q1dz9XfWX-8!^ z=Q>Y{MjKv5*e}qofJpqT1BFUI3ymPHv*SZ8TuKXYeUKV`@O!UQ_HP zXYP_O#9bnIuOk8LDhz$X5HuKc4M8u+da!PGnBL9F>To~emIq-R#Dg4lnruj>B3EpR zE$lQ5*_XU3st*5qfe5sdWx{IVRw0Y?tg2WRvWW0kI(Kw}{dDg{*KYwuwm}TQjwRPK z-^6I%a+)-Km+O|aaz9Lf-dEL!ep36npBBEG`#HLCwGXA<-T<60Q^T(Q-2;nx*Ltz( z<>S;Pd?sJjAQV8524_l*Q11%U8Nt8Zi7Y#27n`bSCYy@tPW!KJ8doqvvw#&rSR-2| zKiM>1S?*Fi>@aax3NRBGeRV@nryyoR&Jy4l2*P|#8n;ICbt)!ZzHTFrZDpk=K1`38oc_|D>u=fM50iT<4+u}d!qkcAU_$hAdI4mtnY>#Y|G%F9l8=*lHj zBJ(l{N$euUAkQ#YJHA(ae^L97ou>1RbJdWAl8@vDE}GGt{pO5jtRCT;ly3(HCbX$Pe8Sq%Jh_!SN~JqOy|oP8?niU|8Rf*61=nDJx~ceSPX1)Qk&< zR_}uslOLChZ{G4V&YNaQhUCtQh3hM&@8mB{U&=3@uX|3B9d~o%gV%ML6i{dJkL(_N zujq&BAw)r4XK`2oa4M~G51IGy_R8CM51Jb3q0zu81ZN^*5>k*}6qI2mE-Axsvm*CX@j=OY$7w^z5IU+cD%>hMo-8Tyeh0E4 z%P|5mSTJuS;bRq)MT61HE}Yi z_gAU;d> zu0A!o`j&pBJB<(N9Al|nE1cdG-Z!a;KWrbDu~MYXty>>S*=vKIl_5d&# zbUc^US=#Lf{e|^~hDi)cy9fH^ou)$5D|!jt3iK;$9TST+{_uy_4_C43JWQ|Qiu9h8B!`;&7!zZUdu&UCo|i<_XQ}$&j;k`I~U=!-NtTze~I!|D=NC^%)SJB}-BKi@J5C1yBBmCoIN1WO7?iTm3 z4d>OX$<2M6>3@b7Kpyzdllk)QPOu#Q49$)b7FY%LG6%p3uj(K9PU5^;yu+gWd4gmD zc0HXzX{tnQ8&BtNcP$&d00Aoyh5})@u&XJMHmOwckOFbK@o~}c@VwdwWzhkt+bkdyAI?rvddkOazGJdnL znL#ru$~pmjkq_T)=mO70`V{rMBp?bz9yqo(lAOZD0f)kg0Z@ccf0KXwg_TIiX%0+M zN~(}i0y44RakyvWg`nJ>ImoZM&9V8+G}nqSnD4nyV9bU?vhIT`u3>KG2c5N{&90hV zfV7uiN$-`(M+^wCb(Z7E3~w=pRuDSu_TC#S^@G()pFQM(9$v_8pG|*YX0ZS?!Yl!D zAK5@_z$Y%y(M#wWP2Q1A zg%x`)*NgbR+l-V<0%|*{ofkMg$fo(OO8!CCkjNxLW}eLA^VGLM z_zG-aKIKMYfkIE>Xk-usRIm7UrVR)+ML}Q-rDp|Fg#QSZ>YNU`&`b*(}X#3YHl398FLmy<4YInCr zv2DWVz_-t?!AzGrdpEI7BO7}S==yTKa=>T($*#a`e}Jv!1y9QxZUmzkdrBr2p##?Nx)R7C#T55Jf`2{ zirv(k7D@I(+0i@~eDWia*oHOZl@WmPlhmyO*k#DB(O&MX8<1u%E}ag`*n4iZ(JXd7Mr{B83J2GrjXEbaL{4Jw!b>L`pNQ0;gu zg7;Iq{`p(yi`tv@PnnRabcu_(-m(-Nd6F?B4SE`!J#g@cBp1>m_BDkG70i02ZHM(K4xOI-$5!yqo=#B-AOEZjQVkpPhLxocmLZo#SrB-BK;BTUu;J>LY8Zlr&|?*tThqLX+%omBZ8s|!S3g(7 za1Q33K@fvJvMQ6vPbhW93tVh{&DDeaKwKI~*x@D~(VA!_!r5B)>srRuLG9UiU?Dsc zVX0~kD|-FlFLdra^ax|pIMs} zDqc>n9pCkQvlG1iG1C6X&3^ivm=URj=;<853DE1jFayCJ zUt=rxY+h;8<)k`EH_JIAHlKd`D?b;<0`h~uH4jGsqBI55gPUf-^ngfSNI*sqxS@EJ=_*28WVDH19dD3oi|Tod16AqK z5|Cpd)PI%$V7ElZLj^qAJjMRdx#Re~-K^7YXY(#S%{y!JPpLq4j9n)UUsvBgPB6mq{pARQd^yfyEaN!G{uM$;CJ7>< z>)SDrLIJV>c_>#(5X^RyBs@$^mm^rmm}5zq1Ywp13~91C5~uVo#~sJ-Zr-Pvi14Qb z0wiQ`DY*8!M|)ABP!}bl_yBH?3>r6LUPpA0QoUPHVb{lpwyzs)KmUsg1wBSaNL=Aa z<0qBpMM(ET^W@$^O8TGRMQ@>#d*^KT5p!ofQ zfj`9247|?Vkro-J9?uXnKmqUn`N03D{1X2Y$aBJCsVGs19i_t%MGex}R(QK4ZwhDJ z&=Pzf8x?8!PWr~78$mAG!Jk=r_(bPu2S>`rVADO`b&m#UJ{_`Y1gAWoh`_dPYUJP` zfs!XWj^F^g_V^EcUh#kQw-!Yxh2$jqrJ+vV>_^5C!Wehe>r*ViE=)@KbtX6l=LE;+ z(~lD%^Gx5f$?NeQbDrD~=)nEuC&UiTonNQRo9ZbTdfp>EeDUNth<8f>bKN^H=h`35 z&$#FE_MG6jpuj6)YMvqkfkz?Fme@CrlidcWMG_xzRLT&oACMsqR0{Q1K3`nj-xeTnlE1u`I9>vU zh-aK23z2UE-Tg)-cMDW60;-@ya+#uXsnUm}(~q~5vKEoHR3KFeSa8U|l=%rfH-Yjp z#jl(RT}mJY8reKE95y%N;3`TN38I8-|ClhXRd~OnXyK2Ce%=f2y+10rBYO(akjKd0 z>Py>_eR706F_k)Scu^N%6RX(*TllXLIL_?=SHE`ToV1mPk*+ehXM+eZwVOBC-EI$M)Nx zNp9K(FWT&VSY#qT6C*y$z4+<$6B)+eK797@33r`&0$V))2*_icyQ?V3GDHfb6@XW~ z63$}n`eU_>*95{bT5Vc7>&x_uG-H;3bp99NBb~H%wbo8siP}6*S_`-E3x-yR{Z#2k zUMy=D^N_o5!KI31^70*{Y;w#(U{?jM8+Zuk1I}&*(_-h2)6PSpfEoWrX&zD?&`lU8 z?lDkFq2^P+AEZJvF2st9D!oWlZ5foH4#TKGymVOQxmUucE{+PIHf>E9>$xnepbG2D z88#Ku+P4$KeO6jEsD-NxX=iS=b864znxJ=J+$9sP1~4?KUe$kRpJX1>8&)o7^YL`@ z!}xZ*xcpQC00?JozU>olTtjGliqxKt;?OSDE<+m_VhQG97ahb{6qo!v>K#P^KsrA` z)Jhsw9NAXid$wA8_9FV0mHp}cR!jn@Hy25PZk$!A2t^ZcM8dI)NOJPgI<#ZbcWJYM|5yzl zd201{r@!Tk&{tp!I!8d=gECKM`*Af|-i;PhIuA@|oD)HL_o&)Mo$~eWyudEs{?*C= zx&JD6Yv;B-)C=Gt`%#g_NcPOCh)9;U5(3s%96<`~RlZ#eSc_D%!l=vGpH?$zzsC=d z1Tk`TJvWO$Cgz1@fmpUJw`%MAbeF@vFV!atdYZ7GFaQ7`0vUZUlI2w#)QF7jDEZbp zwVifLvz@iLJyv586rmRZ!7xMiR_Ptt$Y^iv5mxO{dd<`h`|3VQ)xA>SIJNXji=$L? zfK;iHsPJ6B@cb;xfQq}dR5?<^_08BQeU4ODpOiXMHTy|3WWbj!PAdeUC)l2`JGY8} z@#sO(rn}h~%Crs<=3a(AzyT@>6x~V*Ft)(7grxw|{EEiW-MMVLcrX^%yX4JJ_AX=N zqX#U_0${>!8N_v*7j;=|zcek4*=o62p6^>imPhwn77@#H=2da&A(aj!H9WxDKIQ#j zJV7EY9RfHCGoOk?dkCjWT2%n-2#X{v7y*lb$8__(W^Mjx!$wF`)-CG#@F^vJb@dBfqy0sXXFAls_EyO(9!nTx{;(Z#Qaw z+sGbUWt;0l6mc_?;i2||j)&U!bRD#DBuT9D3haql>IV@pItn=T_-3mB*iPA8`+^B+ zCSh^ZAxq+-&cPX70v#O9qYKBK5h9e_6!>Brj<(w|olG9P7$E1kjF-uSD5}HQ&tNL3 zfYfv8h)esu4n{QGw8k7q*%lEV?eILE@{{-M{teOI#xguB-3`E`2wjcT zp412IkK`QU8;L21#J1~%d07QXSk?f0r~(F9mYsJUQ@1RBSqZ$A@h+ojIn`iEh4ZCo@p%ESmcxf?B`u7-PB}d<2j5Qg??SS2-F0v#J zDzIRHqdm_s%U~edWp~-Dt@cTwwiXu|Ti{(xYrg;%8M!v?Tg$FZ5g9SNA2D{^R9u|R zJgA~+h=3g6$na ziX;j^jgkATaDyZ!oWiYkiai>)-)>>8=;%9!wKl^z9^Sc{Q@Pee+RMF{@Hht z2x;a~hOpE;Wbh(Pll=_>DTR0Vlp!v;8xWZEmM@HDG>Y{mD7uxb+vGsh`b(XKWi9mJ))E-d5 z>I!kQIEEjsiDuPmhxX;jtIq+!m#~O}{gGqe-#(j_Vuz}W%B$Qm&O$~YVcu3<)4!ay z8`mOEe@Zt)v{LFzH{Pa=<~gyps@Bp#Ql)ZX zWd(5wq(IPi)qt6TgSOSj%qz<_Ee!kiZjCCj6_!BEO##Fn1Qai(T5N8Vu|tm2q6D;N z7^5=wJXZJ^qW%_H=ZC3PUuhnEc+P`A=fThKLHmK&_eBnZ4`L>My2MYh`($ZrqkrXsPaF1L|99H!!38=Wmw-@` zvavG&|bO$IYK0HlJB7RqZyKrKaN2d0+WCqkIpdIif5GQ4nRRDbiO-leBMqc9; zQ|8{5Wuhz}L;+D5)G!PdEYCERwXM1-mSz%-6k&q!c>&<5e>Qc|da~q;wv*Z?WKfVe z2e}VyR3DRCPD29x__&ypIQNZ5UlEFiPY} zU1OHh1wOSX`<*Xd)S^b8+U$qC;{o$8QR$PdG&rVV>YK zcrd_{84MbcDmRaH=kD}wJ{VN+vDSmZbNcuZ5T+2oIHTha5+i6{7#CHHJkrPqSz15` z|K=+1VYy1>hXPRm#Wec__?9^q0MUPO60jHG6LL5lI+uoG?nnIAB)u z7`&tssezahFS+A+>AMd>QY_}iGAfWNzld zPK>B)IOL5bsg5>NYcG_B0fC~X&*y4(4pt#Iq%a5CsS@m&-DY#m0@w~1rU%%Xgl{^4 z2GpI?EA8f@hWqPz=nD-Da2;8FB=bp)5)Cg#Z5PoM983?ik}04vEC7J{34&!9U)hzZUOngSPkz> zSmCVSVtuGF;*!nXB&=wRk_`6H9E%_dz-WTKY}1W=q-4qKlD-jTD>DeiL(eEGc$#Xj z#AZo;-IXaIM3|hWkXr21Vm!Yc-Bs_!ogz5~A#t$!5yqIj^LOW0>bw9M-TrtQalJnh zF)dBE;o4v@o(=}T5`zctyGAf*$jrZT;U-uKYfNL9+194+%AQPuPN)eK#D&cg`)5AqA7Z<0 zg1w&1->{lC+MoGG3;9Y?5IO;tjE{<;Zxvw)UoZkQxfH~u?bpk94}>V7_V6Z>;LW(S zAOwBXf#gqC13VWoaaj=iYCEB;Tt2ntLWw)~6KNJtN&A-kqX1eZ8qx`eE_ywkzXbZ~ zPwbjL03GhUxS8e)2WaWePtKLd%@g@+uw8(5P>I&Io-ScRlc;C9p_{K{zDq=`b+|^l zXsYsjX)3|A??Cr67HWFtm7tvk;JEV-=NH91gTv6=DHb!voY{1`P>6hlHHGLw1}wdb zIh;fq{f`8~kAxHD{J`@1)eODOdF?rNl=F^_uiq^kXdFZ_%c^Ubks#`EUb-(B#N`-R z!DNb|k505|H*8jDYuH7HLuIHL4$%~v0%{JLiMFX>#4N4uR9TB+5_BQTJ0pRBS{*z0 z%e6vv>RxZ5CbpCe=6*V?maT{5plU809SHKU5jm_O7jjmQ#?>ch>BZd{iyyj^hyMVm z;(7NzIVjyJ*?rP*3ufv{StfzeEzW$`-s@!R8Mc27ThFe&tALpec&LiI-MmVK33xc< z@~@Gr{r6MDTJiX8C)fM4)p`K|UNLO+N*4CFyZfHqiE5Uedw0x*qd;DTDbn1)Km41} zy3;TLKYuNuUgibwkaGJc$7tm&$t1p50e$qOx=y=_7=ZO<`60aOv*sOv< z4jTsetfR!xsMIq-uEo)g49q}+pKt|;+8;_XueT5Eg}7M+!wxll~SB!L;e zpP2mcVjUq*&U$SjV7i)SA`tN|r}eMz;1+$I15#{qO~Bx*ze%-w<<2W{C|UVcOw-Fx zcYtAM)wAi%bONWX_>0QM1isB*%`RbSP(O>}H(Vgy>19Q#xVn{o>DKUkx`Z?M|1PHs zrkuPIB~4<1%hQ(lc(q)-s=4V@-HhW6L4Ff#+Uw~URXv-+88f|UaM<+Dk*^G9upgK6 z#Z&e~^?`grRDxMl;<`A#H8;MXBLmJHIF4XrtjT;zS> zG=KfkA>nkBgEsvcfwc^WJo}n^1tl9~H$TgE#Fw`8&Jkaj{EG@)YB`esz)|SN2~3T` zsi;JBze!9x;-|s@vQa$PJrmsAy~*%TE{et$P7)>e079CFV7d2^H~@1&bCuhD#nE7+ zf#0-tAre1B!{NHmVdX%qEwUa8k>?992l*{{!?`)n)Ts{ppOB#e+JtZVEYZLi_?(0G&TXb zV47RDAbx@U!W@Il*P+z5q@KTxqN5gWtBJ{2hMjkq#`QTEyq*5YouK^i)clU!r7jU- zUIPO>Wj;JHP|c*bv?dGvw65oD;fQCIv#Q<1z*E3W1wjG-#LSkRC>zfYS^S@^JHUCQ zV&eKc%OM9&6GPYBub=8*$y_2$njb?<3$Hm$&akK6Ef>yL8g?C>!>-R^*I!xKH65iW zR<`BPYFBS-E+OyWkBCvr5&1Pj_`@o(fC!3~GDh31?Z%W1u@x$=LWOQ0zS}EWvU7Yz z8`^LtPdHo3z5?=ux9Tk1illCIPNSlmZs3NrCQ{!L*X$8gR)+^COyjsH0Z>^13(t)a zWZJo-W7+Q7?s)jHsYS|oz-1-4h!M$tE%||=Keg;pI-WFQD2NkhGpzJ(*(<&24gKjN zXtM!jS|@kZJ^4I~#soX9Ods5U(&36c$_e3kC;I-g#@;7g)dy$uPh$dq@V_4jE3b0N zUxAZ*{m1)B36sp5Ge6_~MD~|1i`M(g(uvai!L_&jNlm}B(MGO!2ohzdJBIn@%$Eq~ z)Gw=iiBjJeo7iyp0;x9*p8&FSc-(tqk7B0|xR$6ejj@w7tt#$l86Y#-vwn;g>KzdO#6{T_kAP+qA_*2rs60{B zC}yDxv^Mg!EyXysE@WK02>2WEqY5`{cY^?p&uc4RDz$wa!^Wce_tnE|=#|(9S8>1` z{F2mhcFA;buXJ(>x0wBr=L6IY@f=~0u83_l4=Mk0Md5eY5M_k68g;NI*pb)x`yIK;PWAZ>d`f73&)uGP)%YA5tvjq)rgS zwWhF;ZGaEK3Yx?g!Z)k(qF_M^^gdSCgnz+hgyl`XdqCA85OEuWw9;^j7|HJ-U}Ruq zkMas&5<(PN)Tq7cDZyl_vw7`^JK>I@*Ux<0+VF%aXNdi z|I`-pq?pc-=La(_GW&SR_~QxS-(F6Bo&#nT-*D;42jsQsg`I;czp|jpbMzw5WfU+{ zrl{{{&KOapA{0@6s1Vaz8EX27VvX=m7ntcBy?BmZ{0gEM_ui#P3m`82?pVEP{X0G1 zCf5TDHKc4k#E>Gu>6Du$OCe`aW*Xcmb9BYur3{$2y zB$ET2LO@5JlXO=jJdFY$+KEYk8lUOgBzm_W%hrZW@jlbXma&fJ7dxc--gmRwzIJ&z zYeAM_vp(0?0Qq|L?ZTNY02W#=oHraC^cnDo0Fv?Zrqe z`BQ?Ug=;XZ%P`GBfCbuWpjuA>XlI&iwlUG19jld;jQJkCoE4BpvaklgjI9!D*H~)t z!S>;Te;BO2c%vNn;xS15i!O+G(3+PvlbJw$FDa`WSMoU#OC({Pf@3XoqYxM> zLYn2dMN0GhhA$kpC-oQ#Y$Z40FUs+4CwkFK6RBGDBi~<1hf# zM+q{v(j|UU;%{iKn^%glzuF0Gt2JYZ8@WY=XsE0PqrjH6S|`tTH5ZTs6*|Fl^D-(3 zJ9?}4wT;B)ia}`v6EAw$i_y0pi)uIYT~?>$bjKBQ-`eY{HshuWIpfSJ)~4?T(erD<#&xNI~6 z@^x%0HBJzXgnr9vEaSq(N^UFd*~`~9z;1gH)a8u|s(4@ikYUZypOTnRCD z<(^%-W<&XiBS%nL32ddP&OE}8TrGdMX}+O~8r=0|0)-I_%2i4dX0?hPyD3r6lZPG= zG!yD5KdxOcp}Alqb|bLXwY4;N?KsvOt3jY|4I306ZM zlx_mTK&`{tSLyAtM1%&3v(R9`4?}~&`e8`Nd=$Y?IGPeCTCu#Q!%~1hX&!>L5T_)U z_NOwY^@-nmgh@*cglZKe7xBl4_$?HmgSZ~K!Epr^EJTD-C=f`ZA-bu-eUtgfji`Yj zn}xu|C_xWa#1NO%2&ykPtoztgzsLrfzV&!@{7;$f3_E-?fmC_2U-jO`avN?hvi z4oOmW%*F&R2*i+@gwQM;^h+#M*_i$*eS+5H5EyY?M{ZPu>fI+qZr*FB8YGNA7T0)= zsG@sqc}0M6^@9S;tO$`T1E>SgO!l7&rdn7OC0M-(kS}l|#(DS@wXh;(EWm!AGo*}A z96pbrs~DJVDyKclK{V0&hbg84*D}Az@%Myu;8*3(ceC*aAX>xuCrNe4`O1wCmGZg@ zIoHL!;n~{e#infHyFc2cI5GzW8td-CDz!Y<=eV;kqTW}wKECa1_Y^|z1Y@7~JlpsB zR{7rh_O_?DeR+Es)_1o*Dtkr?<}-Gptsqm3(GJC1$LI*<8>hdi>_tAiMt~s@K3CYY zHe?>#`eyg!V_RwPm#uM!7>7&YMy}?$l#&1tR=*1`_!Sq}I}a%0rn!0`BeQQ@5q7Sw~j*IQ~bbnc>K92+j+cA z9nuvkqrUm^!Qs(s=NRw#0(;2|u-DA*>FW>E=^e;2^BX3E*6GsUq0SW zXXV0Q1*j7Cr6n{~B4Dbxdc5IiLJYA|bNI#9*XX07j4JzJyh3@uDJlh;q zx0T7w17-@`&7BQdF7seJ1`v6YmLF&S**!>On;}{0#65~q{IieRL&9*#&32Lr2ieH; z<;}u*^}bDgR>_YIw}xzoW*f!qGPM%iq!v1j!*d1{jmD$@$Itoy`5^e`220@K^_bpI zgvX^A_B?APc%VUa4&?OKzhBeU%Zv+ej z0*@t?Gi89@+yL%iG-tm#BSfzO?V-I0IVh~9QZ6-gUuJgBU;m;E+;eXGA@*^Cm3X`x z0b6&>FaX0Lm6Vq-U`o<*gzJOLwKKNOeW$ANf6ANbd^uwyHu>-$?(gEIQ0r&p@BZ$= z8a18X0DXfsY$F%W7|`<%UQ9rg`_0>LiLBrag$r;*zL3meu`q|F^qs6=sWOLozHSc# zJm1X?f>4SOISnp=*^(#<$^`U%bm6ga<5yuqV*eiww^^xjLJWs|jIWv%IUH*16&Npn ziUGRd9q81~+UuByTDTd{U8>kprGS>F0Gt?F#z+ghq;#9L_pY)_UO4sS8@^`D_cV(s zo{D^xNEAzHN*p=N3zw6Rv;1yEhUFWcZc)W0*q);pvG%1KdWcr)-tyR7-FFZAo7AL# zN{66Y?xq&TjPuiDaZ{vmMF|xQX%%ULm>+TJv2rbvUEjHxmN}*7kROr^{x=}5m%ls` zGn3o@heLHE%n9lSP-J|76F}wzAu$Mzi}>&*v;5--TdbD}^aRm?l3(2qK8_dfMrDp& zVZ68>{Tpr=Rsq)ujgGw(IG%`!%M#ZO69iou?zOOLtAe*|ju&^U;O#(wZ&-r|JHO&acPx! zh3{u+R(f^O@S@XYOH(;6Asi4q9IR=#b@&2VVTj1M5_t+`k_0soi`#2bo1dH+*gW!& z=ow4f)KsSmW8p*bqMtdNShFCB7+$m|Nj>HT2}3_1aWO*_u(*T@+N>ig%7TvDmgc8% zp1NTe!5!XqbcwD}z?DLnfY z(hD9mk-r!G?pz9oTtn?EuOPAS-C}VEH&?z`&Yi#GJGT5gSQvry@!vlo^!U?aJii^? zRqsQ((ew3NJP+M71q|Embas!1yI~Z2dG1zqP{5UkydCZOR^^FyjK~>?^0GXOJ;+`+ z0FWi3HPI2go&37N)8RDIqvFBIQ@)3;2o$|DPo3E2^yB3Y%wr8C%i+c&*ha@STOdRMco1z+&%O=o z;z=A_-Wj{(j9pU6B&c@M9|61MEfPClRwm9qYjiG9QUF;l)-S?1heJ^o*Yd@$LXRH~ zrFc}ao=^km^jgEngad}2E`)O!;8Z4aB zb=62+QuLG58H^0HV+n|V>|~)#jRf313p3>JAmb8=1kh%9PUMN3aoyd9uJ3`GZ!GE*gJrI4mywEC=ElfEjM6Hqxw?Czk=nVr zE5jtEf^sHzl+Znf%39nhhRa^zE<;vCaaM&$t@jfTgN9S&iH2;iChKEi9Ps|Yj5n) zk_%^kGse*nbjw{-I=yFgf5in4yY1v>b}x6}fp+m!;9Q(XASsHfEK719Y3l^{p@sH7 z7TXVR@Nh_ekKvG<9_GgUr5qAUBi+TlaN#^{ltBAfrD7y*2$cmCL}BJuS>SsfVJBc`nj1xS(8BE z1v$?e7}cN%U^Hp61mtF3l4h{rWqydY-MK@!D!zNr`aYtFQ^Gua^8yZ;rSCq>=lp}D zz+fO95`)2$ISzMZB>tHax_Rb3%yozfK%Fj>rxMhN43(xO;bVzQkN@8?{pWWN=wEoK z>4RS32o(llTEQ|6Q*B&TIf0MK3VA@3sP8y6#bJU)m}gZG0T-|qP5`_$Jh~Knb#V#i?ZH!nk}!pIL51Nf4U0e>pMzn**5IFLP0 zb0GWa=;1Oc9`b*rD;eJ_`k{J=Q4gSoWg$l0XN2MecZG7%e#PMcm^E?07sN8vR|D_F z!2rEJ7<5hkgTWPC0Hl&%!T~@FBWv6N=p_&Mc>h0pZ^9eLmF4-yM-kA1Vb4@$#lEop zgwfh1w93**vi+t91`(^2Ei#kNByFi5{N3O0+$FZm$V{%1t7X6<8FAz8_uRAoPYUFt zn*w!Miw?SdYk@^Z3-qp*sQ;7Wvy0W)60<+mk zA4{#jtGp~Hg!mj6^YgWRWlA2OQm^xGy17@nHPVnsmBWX!V`9zq#5&L@*5-{^cZXrd z8OSWj*dp7J31OR)pBy}{+{$E67{KaYclh<|BJue+r_$p z;y6sA_(sK1Ob=c!41>?}!jF;~BViE~K?Q@YUtNCi+q1;5wnb=@vv%U?c zzh(O+Tcgoz_ICLXWr0yUwSCSg+}KT0AIL74!Z;V>&zzJrt@Bt{-PjL+H8XImN-0Ed zKWcxZOEZ$RI6rstvb;ETK8jE5yt=@i_k7W?G;>L(W0qXkY%V7_m$tyrS!$@#I9^}!>4*+)~2&ssHZm(^o&w>f3NV>5*M{z?_2M+o^qKb$5C8Qwzd=9tEPPiQ=++&Z**dr_J?9sxE$vg2JxkkSjbaH*>`_)zOgjqK#Inm zJ|jH#PZ}AX-h5>E*GO!M41Qhb)yu`nr!FY^Ya}+Y;6E zn7?fF)#bcAf6uA>5%|FK`rUHH8LhN|K}Ao?QP+QNV)?5p-UbXv&lPH{q%dc% z+m3i6{It`ths$fii$R;~#JpHLZWGJKle$HOr(fMf zWbYLLMr9S3<(9N5233K!?7o(kd{-S7?flkmTG`i07T}du`*9R_m7LIR1=a30H7kCL z=nX>=dP>G_nl?ocdNqjN_)@Dgqc1zVZEat47fm}6ev6%$ zr>T+tOgHcU;j{vy{bWa?f)*FPjAB1^YiMU6X(&MEH2C>DZ;cDGL3YwgUzD@4huc65 zppSA)L9nL6rM<4jzCN68=#h01wt-&-$t3O(1yQ}+^_VM01 zf0g(vOkmhz~s>-S?{8%KRR#Z?iQ}uAyBO(76%ZT6@Z$k3{Y=X^%=e^ zPwGx+8z@Glo};6-iY@U{64ihB=fuAKd;Mv56HgSCQG@ZTIubg(PC}(yY-zH3D;Kfc z!foFbfd*+uU)%a#*9R75qoP-GTdO=ERz`(h!9ycqWVpsO<014clc z2(g1IA)$>$HtW{&l%iiPfirJgP4jJsAaC~O`c9rxgZU?qH(oYBzsG`vW^2uHdNIdk z52367?4^R&A3xRGas2eBuaU+j^uc*{vdqu<<-bFuvC%qCPxLJ14AnQ*?3$X&cvY>L~xqTL`a^C~E6FK>#_6O?{!JTk_np5yqH zea64D?&plOm0h<>5?{ko&<2T@@#=#dvp1g>rA?E1?Fno32G%;*7vaQsCZPgt+{3Oy zToSup4?XI3mE40!uR<3lA{Acm!gH4ol@-f2j(WsIL)^eLnlqu8?yDaP!8S10Y>$1v zJ%-tyKYqFL(HyY>_dhZ?V8x@vM|<*4U{)1=YXrf zp{yR?jGHndR81=_2ej&#q16@rAVv!|7!dBre{QpMcJpTGZnFqHI36WS)Jdd=a(>QN z3u8`vv3&QU{;fV4Y&~URGW$=mhGVUhI4ZLhVW;{*-Lc-Zv3?s0XfaGtl9F(%s;VMS z16(Q5m@72no!3{3WjTr2yf7@vriOtOYoRtQ4g$7y!&6bz!+xch)M^2+rhyvn z6z#X0M?|T`rNo$6R5 zN<}-}bU<*vwCty-?;G&2BQPUMkS} zDQ~`4l^WH<^e)@8RX)_UY!z}A5p2G4VXJ=znVuler=!FUv~FYkGfZQ9`3lIm&IY|M-}GeUiS`flm5X8;XWq+US|F) ztRY2;A*LqXWh9v>`|V40RIT^?rK&ASpBXp4Ou3hYNY#UCwOwUrg)uxBbIpGA0<8Wi z>DkKEC4?2DjefOzoEe4aJ<4OMs2i*h3>8?Fums;jRiWQn)2UeZKs(g}lM()vfG8&I zr`Ez}g$PnYUS0C(s{^ht?`(xm?^_+Mwfx$WUn?75ztjI+fH2J5TQU5r#zEq`o=T|x zB{W?ve1q0F7(#p}N`ndUey^0Ol`s0nxRZ`r!eq4@_RxRV9onxz9&9_S=WAo$`U)5= zRUH82apy`8j?ASMAJg)P=L(+K^5PsvaBjym_Hg#do3f6ufyClK(!Sn($p$A&xnA?q zt8l?Yd!HwMRKnKseC#WPvrY>}rhf_TlgR!O+h3AR&mIjv7!w6X&|k+S&t_VXoXxZd zt9=yuA%oiB!Htbi1OJK*z=EFCK~j2t<&mTu!KxI$Lb=(uGbWi1cxinlwBurH=Xi#Z zVNch@=pptP>q>F|#jE@GU-Q3oNf;#NGR%ots)`!_LS#jON0b-Rr7ZzB`-Z;JxqgfN zRzaR<$|{K}->oxtfx;%-vVqcM=r3~pIhe;`zaxaFB~2PeKFEAH{xN(COf1OFcLsGy zzcVSQpCQ^k7Z5rhv`RHAiJpSX?7)p>Fzxi)BE>giN)B!w!XZCztSvLa{kBL+jpwQd zS6%s0Q=?5_dnK1SS^d!;qAblw^PI%s8rB@MTAZ{muM$-NmP%)!+%uJHCMrt8r)*r7 zndg3dmUb5usYv^8UjbCl^i;OGAQ~$`)M1F1;YhSVvEfho5e=Bq(S5#{8}zsa2K%qx z%$-5+{xrvU7 zKrE$O(bocyl+ZPD%6=;9W7JnF1W#Bgt9?K$6qV>iI=0(Xc->fh#2Y1rziB@nCZPC z3N2frs=_!btI{Rn0)+u4d{e7|fnfE-gxf8j_)F~TCe~SMG4Xg;ssXO$r0EoOM(wR? zHIa{3s`eMdwrKuiVV~& z>uMj=gbI6A6@fz25Yb>IVeT1u7J6Fz4Xno}jdwmNhp;eCE zUK3cWjy>nwy$x8GH&lyt)jIu8kJ*+Vr8*q=p50liUlT00D>h`%hwvYY$u}AH+7B+f z#Gn}uE)lb{%nuvuVwe8V?tHfe`tZ_qv|}1|rjJu@UiFpY=F!1jooEJ7ySG@daZI;& z=b<%DRLDGEx+M+yKb7Ju|oGJPD}?2Ym+@vZVQ+1k(JZj z5|Duk5G(w$vOGXBszRad zso-ZD^ChV)I28@4=JGTT^SqQXUXRLtws8;FdLI>cBR5O2I)Gx}Hzeh{1{MEoBi6Ts z=f+CAF5NK5HmiK`j^AI)4>1xeLxPy(HqF&)v1c;{GC&lc=s=$f;DCHKQq4;RUhocM z{l%huUzZ;g;%-=0;wr2>D(k31kvb@`fpda=9FJi-<~*-HVq*b-Na2F3&e~Lh=kMoh zaaUHbMHs;h+)MvX?2ul18yC4qC_0GY{aGG^>*U7jF&Qi*`))cza6+V9FSl z4v%&`K|!6z&?=cwHL)CLj_by7K+TpYRWWH8UA%4afAC1pXNb}j(Q3koc*G{aRlKaK zSS;Y%j{nA-bjNE16eT_dSsargvIHp0&%r7lAFaL*^IdM;WUw)fmYs|WMOH>$Lprv+ zP9c9Ar4BOyO!9JyF5T@R-8#}NE`k~^P|hk_5{h@lk!}^B(GzfHzJOsCoaUl%3sOkp zmR{n4eZ^sZHnJ`WYTxG<>vLfJ6jgk_C{G~aztxsJw$uq?8YyDxN5hgrzM-!|vis32 zRg)w+aV#!rHhnKg(zMYmwrT@qO2tPcXh--q`bt&>X0ylg{q~{iI%v3d6C9$_vcd(3 zAOb{Q+f0CQG+EVWg0M?LKMP6{B=~tP{96dwHt*~@DpwWdzM|&}2Mp_b-d4$F7Ya0x z)K`)d10y>Zp&#TS#6e!z%8YxbuBrcdq;in*eUO4_- zDgl&j!M*Um=-1d@EbTAU4zP9|rfHNF8U6ttqqP>*?k;I{9o?mRDaODAl)1n%xPIb? zY=NK(bU>N9{`AV@Ge~zm&)vmyJu}XE?OwhGzDtxw8QFlm0+h2z*Z_4-rD;3sC?v_5 zkqh*>?mT{u?OgNHBzN~*?Ta;XHQdD+@^Q;fTKB?(_|L5@WDxnaR}ei!1czuRMkL!B zW@I>e92y5suXt}9W>Icu9B-FHPI~J|@+vJFFH4#z$*L-aTB${OyR=K9`=4!J2XCv( z=MAmH=APU-f~xe3I>#XtP{ACwh_nVWpZ@|jp8mzdv(^|9%#+sDHsQB+e|1-YhSM0W z3a=-xfO+7{?($EB7K4sbl||9yxRH55!`bJx^NsvtI@G&(2E=&lY)%qm(`ZYI!;+x3 zupuzb^d*yOzcQ8RhlR}>23RYpX~B!To4nLkXP0A0y$j-Ub zH5^P&8bFq#IL(2fg%{!+TylD*#Dz=D&Gsrj^Taf{4-9nD6mD8XUWlM^$%*-l0>&lg z{Dv`Tc`9E%QTEcA3W=fVZDzWyf=e&}XU(dPW2#f4!}Oz6yi7baDah2WQQp~r&zd-rQMn4zM~agGJxH_l3&3(O4NwO|%0qOT<2 zI*yYf!CsDJmcj3MMcUsq^rB_ za67MAle?f-NS5N<$8WsHhxcalu0=mHpMcN!WV~|o5S(c@MmXV6Y|Px<%XOxEX%)Iz znYf5gK@nGo2wz6`+QmhF!A4NkS%`HR#bnn(l_yl|Ha&L~^q}dnzSp&W0|S=1%4ais zsSi|b6C_;NhKEX%!EGAaiyw1fh*GR>!0>>&2yo6vgqQY~R}1_ZI|#T;3=xLVl;p8> z5w27RmEdQNvHIOEcE79J56VrTBpFKk)bV+k^sYm8(M;N_P=0d5p=x;?H} z73m#=TkP0?5oax{1lFU8;X$yg_PW%r*Io4mD?}Moq!Vad;L2hyP$fzUc{w`T*j(+A zu(O7>MYbv#eaOPG>r4B=&N6DVezweNox;L~SY9&9)4h!-&+X2*_wu!g_3P69Js_#` zZz`?mA1V(2c)mDR<`oH$>;Ns4!9rU;NQd`sfrCB9hxf}WXn!MO+&qg6MjD)ntnlv8 zQS^X1DD^gDNcZOD5xl&gb^@op(Sy0l%pOZBjz1hje7i)9qxDcogZ=fOq`@4#(w0aW>W3#u>4w~l4?hx+{YDxp?H14YtGXFEeovp~Y_aD-y zE6)udZy7L)NGvXhqiER3fZGFj+ny)g4lCAQdYOhL(%Oc{_n*qN#yUSSN&~#7s|ZzD z;Wk_XHK#|vBE^NxJkas}51g}nF)smaBY!chDS+58o+oph>jV`QO^@@!zB1m3>Vu;r z`^C{wTR@W9*Uq^Rrd~o-AAzP-j955q;t%77xD`DAfrR2F!N1&U=eMPlG~b0)lVJmQ z(eI+ym#`Os(biKNYUj0WUweUqF)s77yqqf}aaf471XtE?8la)YH)v3T&=OsA*H|`d zts1X!17NPW9wWbESc6)J0}K#Iy||s6$6EL4#e+{EYbJ|XK#q13SDQ2S zLDuDct#)m<*~t7ZfX|#Jb68MLl2!^w%vj9GaKY`{!#lXA!LI9dR*-+Y&cn=Y3g2Zp z+PP2)zba|HR-@^?u$q5vQUrjpS>Qz}P*SFt{YSEPv-;nS5?Y_97;i)mQJVFVO6z)^9CIB8on+sn9}C%QGerIf~MIw_f9!gQ)GxhU?x zesQO%5XCx}n{k!{M30dYWq0kU`fD1?jxa*r(uoJk4q zHZR+n4%%{E=u%M>zF*c!6?srMSDVfBvQLosA*vbzvg9bhB!TNN^j-A`kHI~e#rvu; z_CC-OJN1T^hY*P*wTMGrY!HXq`?(udjFH#nimi$mM|8<7Z>#95AGjNqXP=I#a0#h6 z(KMZDCX-(7r#06#c&1^@MZKk*+Na_RFCOU{(ag4S>Ga_&fpmloxzU#dYF@kKUmz?l zYs7nFdr{RL<*GkqU^edPL@;vEF)&UE%6EOYilP7kA;bh>-t8bYHk7VyWtcsCN*IZP zoFoaPG0uVpq)_fq4RC3=AKb~!Z*cEQk;*U?{g#D`^gTTw`C25~IDXo5tAFq?-!utjU_`R7$6G_X6!Nev^p{@z<>q0)vs!!1$Nz1I;Y?_H=`O z>k=Jnm-}rTVtRJ5elJM_Skn~#%_kN$BlAj`%HFjvZH@XCRrF2dNPtwCkYj~way%3c zRdsn0Bmpr#X^<0xXoSdZrMCdFQ2mtdMzw!*)PqwI{lHXdqe7s*7Ws(Zd)_6x349c2{!~slUDW(NaawzP)dGY_C-wD)yQyfomZwyp$X*T&ZS- z1OsrskRDFWsor2Z3dLOXx=Funl5^A|3NmSlUyy$sV3Dkb!4w}0+m&`Ewrx)@R5of= zx!I+N&T)prL6zdLj?0yZ&rrX%NH-1JZy^(6gGvu?nVM7`mB(z-Aqd+J;x$3EY`{+D z!|r2T&j{r$B~}Yl1|YA>M%VGrp*&5@Q-2&9z&pA3Q#ztf6VnzVOl3IMhiMSkZVjhz zU$(c>pw9lcc#gU`6Vy~d-xLL0i%KJI_uSySslIq#y^ybLf076$JY~j0z;fdllGuB% zZOO9f)g7&rb`#SU3T0t@8G+AfD4B`~gJwB3$?2AGctgk~P4#@2rmy*_w>js2n{c*FpKIsiP*i8n@u*Lj>Z|>%A@&uyL_YgXBpxkuMG}7afqY} zQ^Q~rh!&@xU4hX3J=H&OF1+}zHFZ^JqOU1y#WFZG1~i(IfJ_`P30DlW!w{dvl=B1vNyWjRi+s|8}S7F16g*I(}{ z4)OxCPF$2FmIFDi?RrzazQ~Q3N229T$=--zlN+jx@J|Pbml!KAi6m;YZ9wfKUAH80 zzI@#n0DY1#L1&^M2JK!86FQoJdAdrKX`Dm3GPE=(knt7QRcgO_F=Sq)&e$b&nxDF1 z)FAVSmGO<>O3Mxxx)7i@jTCF0spzg_{uV--6&}9NT%Is_O`?=rI2OsEH?0uI`ahPV3%Ga#aR>RQnTo4g7b{ZXb+{#Wc2 zEyhHZ<3$D^Te;}=4HLD!v6czc2irQEXf2OcJZ$NMRqi}eN}iURl}^O^9o;BVh6gSY z)uNFml1VsO(Ftwuh;H$6Iu;4=l;D1v4RC3Zt%GXJbD=Vx>Wz0o&N z@7(vcrg9fj_3G1*CPD`Z#7c6nQdr)yH7;N8)Rr#*dkf+AYhq*5rsCe~w!GSf*J#S@ zalIRh6tyIna$!y&J&_HzA>OKX)Fdf0;t29aPtNAT^P$X>I^s4?d;3feHU}bB2Est@ z$1eJA5x>P_2kz`dl)|<1MpU-1q!~aDU)5(Mf_>6U>-&A@ zGYGl_->V%h6__~L{`(4#%0oW}I`iM_PrIsrq9#z)?}LgjYTb1*QjV&(vsr~Uy4Ubw zlLt%G4O9pVZoas`Gi&;Fm4BgX_25(mb_KkB%(F>|+2?$V_CO zDw*@>2$>flmTfd&9vv}5lJ89yoUF!qBWuqdRzK{Fo|>5@1?8}|VKMBc%heN-vsyBF z)qdb_E(`c{+5G$-^XIF4wdTmYz$0$_>}BzvIK+*ga_%TUe)>~>a#1@^KN7`=FWBQH zh$HP^QupKK>1qCQ^^{Fw3+d{&ym+%bt)Ex;D7HoA$*_ed%L|+a|M$fbn(%y~yu6;S zv17J>{cv$wAi(J#FE7qtHp+l*3!`rl5%)3wzgnV85ckCM)$-&qtVYfdR{hB_L*|_S zgRStWerV^w43|c5jx2faJR|Aud0X(AWId@dDlcl_t1IU1%?0Zyl$<#P{g#Ut^V9kH(~qPasyL5ov&h(x{!cDW zO&0Cv?7nTgxXqcPC*-a= zI#OSDZ&V$t?r&AHe;cs5F8EBVzq~(81>?_HhZS2^dFHU4-lLjOA1Xf&9=uxB=jWfg zW}fMroXKeW_=Zh{qxXN+EA8%k=}ru1p3jetM$K-y>{PKkXMupt*EM ztP3yX!sQ3{Iy?7=-MJYb>9yj*4HLfv$4)|`2o#a5fbHACb<0zG-?q)&;!+Et7vCG@ z3Pal_G1l;qKY;L^a*N}~ZI8-r^ljY8UGBrpwr_7EZnh=zfSUZ<--k761hEMDK*qR9 z6MwFKxG@Jxgi8)oNp>4`Hd6$2BK;Q(F{}GVFHufaHsj=0)FDtvC2$3NGqW4ZA^CmP16V2 zN&T8C=z--7ueT+xHKD}D>J5E72S#|XQL#b{Q(dSBAL>t|d{|rg=HZtUMIeczx;lb+ zwVWGYvle~LT2v$72vwJCma7lKrYiE@N`JcqJR=_cBvMlQfeD&NWE&@QvkeT>Iko57 zZ2Rf&g$5E*Xtf~I1#LrjJ(90ki|(04G(U_Q?TgA<^vx92wD-$ofg5LLvCdd#*1!Vh zl6c0K^f##=hN%QH4vH9;i=IT+KZETE1cz~Im^VHO?T~Q1T)}qJs8|Yp>{~cY$Dpeu z7`(-ITMeTvBQm<@c3q6rFg&;OvGClHo?KfS`Usv+e-$%RS4k^1D1vmj3Bs>`rO)Ko ziJBlRz-0_F&zEqLU%`AvEciw|3>5a~HxeuIjTq9u5liXs)GX^I7UkLttd6wgM=9pj>rTLOdyAn`(U8GrjyT8<5?oH~^zPtC=2lsT}b>I%@ z-JSZOHz=bCe7Jgt)|An2jM%>U1wl-gVJc-atADogMNa8xMD7L`tiHKJdGHve+MhTp zxqlmY72TOpu1=i-s53Dh*IK9k_ox5w@ssEO_WbP|$w$7;HZwZPqU^}p8ogwrO3&@; zK z;^fma>}2atWJNf2x?f)`muDEE^OM>jSIDcs=ZgvppRq_iUz}Z>+dss1=e(Vt))m$$ z?X&(L^=e5K%N3SYi47JQiZ^xrK|xq_Es2#YZ*4pBT;LbDX=>5%E-zMP{pe!-32PbF zAO$NUWz?f5jDXn156cUwRY zav?a}N6vxBBpP|+*?fhWl0l!#%wt(oGz`BbYdGnCMaOGgHm%`iV0@B0yb%MGa@pOq zLcP^?D2Z5|vPBga4OjbIL8)xDK52*_F1XHYt*)@Gg(ojoy;ZJnp!#`J(|<=cs11ei znDG;;?q%I73P<;|^0L9nUg&%T7%mVGVT11*_^mpCR?V2&0LnqP)qdFZ-fpM^BjJ*k zx~^ZhXqMY@e@0=~vYwI013s6bgJVB5E6SwBm`gD=GH(q?C`DLQWV4KLwkzZ&mifI* z&odl?!LlSp1er?ekR5niJ>NVmdOx>W5Zc%xT-420Cl*|LLcFetOIz1(mM8P-Vhst? zKOfHk;rqhhhdc3D5Wqf^iU94Xr)DBxL%0kTHIMh1lvk) zqS4W@LH7xfRk)dxiH3|a6`q37po1##Jhdl8$X%#J1UTg9Q5NF2SK_aVEZKW+myYlO zvxsdJv(F^xXI(It&#G_GJ5C=y7wz45i>F691}n)+0n7a$yvie3T;pCNf%4*Pvrw-7 zL&KVg$bIA58|^-%HHwbb4LJ{iG5KABngwHrm~jb~atLiaUPwzOmbt|Zx=4yaNkaSH-HzY=-ueP#3fvwEO(ofl&Ea8D2ZCwoe2B`-F-fX&*;n=1N7#?n_Kx=$9 zMAo|R3*UFyZ@w{gz>;dLk;_(~5al|@KhJ&B^68#uc#Gq;vN^>`LO>`1gL#?(AcAb! zd%wxl)04a5`Z4xga~2*DCSuXw@B`PO=r-=b)IA7en8Y5q^{|u8-uwyTNr)K!vSLak zMr9ls@-?#LpEI&V!6rhfZX>(|^B?4*XFu+fUnq$LTNyj@-DyQOHFKz{4kPgy*_C~; zdH@&*z^Eqj_VbYVjUn6wjTcMHT3KVHdVz!AytE8IU{qZbF*IBBxEmc7OGE*ynrYl7n=A^>@#>A#Dq9S`CPGs}+3G&D&coPe-Qjra2}Fg}4SFo0xP1PlrmR?LD07kjtBl=$ZxFxVLh=!hO*TG(-GOt`l+;Lk&} zdOMm}Fcvru$r1?uOG&Erpc-Csl(@MC{zAsvfaD$KKn;@Ml!SHz8hxYV{ro2w-irkW z_mwp4Aj-u6a#ht}LsR1B7WhjUa11vL6nj#-ZW%>_M&F&_8y)cH+0kJ)8tlmDtZ-40 z7r?KJy6}^j5bgeerO2Oti8qG~`n+G0vM>~+OR$MrewyK#=1gimRHq z33niiP~tY1*k~!(cCGfC-vNWUePMVgFc0-2cf#XutV8LhUYx~#86_ET{e!c1qwBD- z@9u6H#!Y`otAJaIaHVMu7+Fw|{5A3O5YMBIC{p4!Ps3erJ3U}-@7RyC%5#x0>-6>p zJYIX;%X;U&udxv!JJpy6T@j-ju%zK~ii9`yugb3yKz1u-f{G?FG%R`SlQI|Zk+=bo zE-b((+$eQ>%Z?VY8{^P6th7pZI1i0UNdx+^N*Qvi^Dx>CpJf_?dO^bQ_kkM=xfLIc^!8TO45tajK{$@N(7`87U{Y^%I9qw~o86`8qt$8cU6J4buu^#p zvUfzVQB_<1Gq2;C)h!!xkC z`R{%T3@u}=i#$VS|T%Yh@{e0_dg z)W^92Q)io&RZXU#JQKkYU}#A1wt`!$3>!f|Jnolo6apgE0x(-pHQ3c|lzUR`RAI$A zX*m6E%?#(n=KA;g(;LeGUC9*FqsUqXgkCSMK>|l@9hD@<&&4R=Tx{`IOaO86H;R7vpue{#0!EMln4GX$qV|N>Chv;%6=u%^w z-?Hr{2f^^engEd|s5qWkM~taaZn$v$*y$ErYU2x+cbeEo?5z(@_KWk zKTjXCf=qP*X(LhdVUWNgv8#_awi$L#qd}UsHZgSRMV&VsI5Id(SjUo2-bF{kx+zHWR3APM%yQVG)v@sv=1>Oq8BL zu{V9*2{ipH$bODttO#41Zta30@{8C61*Ri5vFe14vKwaV*)=%2bn+t zA891@1vjw7Nvb2VwS#waggw8g-vODxjR{aOmkxF!R7-xI#copMVn*l}*qq1D)J<|W zkZYjI+%h1Su>k+??&cjWx91|yc9ZE95?tze9=e-47OPwLdUGm2Pam-cR&h$wCf_A5 zU&Y0;tB-fH+`gv|hTfIO4L}M;9|n9<5{7UTO%%Y;wpaD27LiVM+RMTRa6BG zX@V(Z>linCem7IT4a-H4SmGckNX>+aoQ!3N9J0LTic4&P8KH3_tRLheTI4o-eF%@BQYq-cc_zIsUebKAHYV3|o_)8h0nj zPt?BsY#sDSKiN*B24iP3)4CzIcU2`>P0Chr2;C_4`Fb3+v)1;vjO*BKa<6XKtR(a8 z&8#l-`Fd+uf~86m!PEw@q)}O*wrvRc&!D+_YIT9n*H3lVw!MrJatM;iu&D??n>9Omg+RlK`>(A@< zzTVM=wb|8*q?0~Se{~&X$nj*z8II=jO=~*X23B({jF%s#QI2J=2r5M8&0?Rg&v9?^ zY>$(w%Hy2OdI896B)T8WuvYcnuB4S{kM6D!qd*+(xxV+dgvv__rY0w8g5+URzlaeh zF%LPDuAc#70*ekwCWRW1bLO3BEt3hI;f_W(I@p5dDeKXQ6DaVsZ-TPI;j~IiN!F}4 zg1UyUXg*N(pBwM_fIGk_33q_9A}$bo8gt&hyiRZD82rd{-7v>o70~~b-uEWm+`-pS zOWpX?dt0~&7uCBLhyx0Kce>uO<7I z+Yr_rELlIx{UQlUPHaalzpQ?5<3QZZ$5B-5NjOiElW#ch>Q?`vcK-J3vkAzbm{+iS z5p1+@CjH&>CGP)iSE>)ol9%A4qO&Z(hwksB>yKe<9`sU;%4URjrK^(bPtIW4gyb0X zNi&F|YO~lCxAoACj(btNQ1(+3sjKS1p0ea5ixrWH6q=YFZ?~tT8-8m?{bX~lj>+13 zjtAG8x%FIfh$j4l*IwKRn(dDAH#f;Q(e)tm^1}7dwIzW#fZkEp$C{3<(=K_$m2OA8 z{p+AgBQL2jj)zs_LkilrH!`Efbo!GdL)h9IFK!z=KC?KDNuHJ@Z9;g8GdDDu$911g zp}Xl^++x>Z0~4kPi*lTnSUoj%`{Js;@@gvL32#V+Uq7si4_97$Si*mmIjlM+|^fcDP_Z=c|EyINYX8 znT1H-xXoKSeA{u|Xfqs(H=>pFHY$1o_)ymMW;?Y(3BQ?~Q{AWSv-PH(&Ko(k?FtNU z!ilz39KL!tQQ#Ijw=r*HFP+<*hudpwV^{_ZzxZ@cMuo8-f?B50ClkBGoW9*I3llAj zshP8Oz@cuS3iI=2?nvK8`Jn_1^B?)Aq6S|{qMhXLNBWc1rwhW@)%M&_w@5PIs{&DZy6@GN( zJptb(<y^Q9yp2UiGi{AWV&omchh zbiS6Eeo`-V8WqwCmy%+I%up9=;Eh2qZlA2{bLa2N_4$tr^1fq`ByTj0o&UaEeds^x zK6ywsdy-g7gXSTBJgh2`8~(Tk9-rTM_3$^6Huo!gB7=LhT7IY(ujXfzJCQu|pPqgM zMt|-6yu3K69w{t-`S{74oW>yke{!C$dw;Z#DWf6pzvdvgy&MFmXAa4GUXXyD4M_4y z=igW{*{Uz0EGo;nf(2{AiMxYkQVR$eu?9kxL;>Okcx^;v0YQG-;UcRf105!^%{Q>P zNo-`5p5W#XlCOfd_fn^tKi!S0Y|?~F?gl^y1tGe+QX_?rTEQ?s^@_3*h>0 z%K&sOtl)n#@a29Ed(Gs0MPUB)gse+Dq|iQ(+7a4uG~t!Oix1vmS8u@rp&Ben1M#*c z2j-QVkdyZnf%z)}^GzZ!llb7>`THR@yV=3!hXvC8*8DwG&kXhU{hQ)D$9&Mkc)fHT zZRp;pGkq!Z_L}*kl9vA2ftb;eMrx@NlkLOHG^DfWZQtI1eE*^Hd5Be-6q0u2<^22; zdHT@ChMpS{&{Czy(*(_8h#VK1yji9;kZnM8$GTeqytfy_zV7c&8D!*iY3e4eOQJe) zh91`9x3viPUohw_!-*;{uA;mta{Q^A2Iu)fiOI2$d0eL!6%O`Ta;2#BHXDgXyUb>} z2-}3(<&u^ZkrQRea)HdbH4&*!gVxJ9x|y7__wvwmr08ANSIkLDwxax81hQ3&BdtQq zoDG0j&1IoUZ-HTlY1_8uT)R|)wr6c;ld)tQx;rpzY!TW91q5;Npl ztRBSOV|J*?)>OqsT;hD*zIE1Tb%~4p^7L3#b;k>`@Szv6TFlV_*gQs2es(6l4+gVB zES@2ubgoN|;Ha+LSWMcZGH4B_j;~q-L-;wj8l`=@xS^e>Gk+oIn7mM0O{g`J!?U~5 z^?)mq-U56_*i|i%O1NW}99o|5>fzzN+tUFo!)wV6EhnCiBxMBQA)Fip(WuCXU+P}( z=+FNUm9?aAwe)T$84h$?1ek?^@5M#q`q;x5G|zW5Vof-P!jlAeU*e^9S5k2d9v7*f zya-)2KQ$eOg2oI`_b0*)D+6>fPLn*#U5w=V6~vuw6?KOGr$CgyG6DO2N|EY8ZBc>mF>`@B-Wzg0HGyb@53%*|4A-GP(X zfbQ>MZRWY^=^S`s5@pZJwJe9~wC8pYy{ufGeL7|cOLWR7oC+OumHSDK*Lu~ECxA#{ zyot7yQw^XHb}BUX>d;C)X!NG~sFF#n-2v*x8{AbU3tF6)AXaBtP-T8lNDvBiV8^wz zzs9EYvbYh<;K;3Oi5HU^&8qFXe=&_~PC$0P7ZaGyLZv=Cvcz}WzNDrpO40Uh=YH=u zLt0_@4E)2{6a*vpZ}**bc)|KT%lhFM8-Js)=X`K^yry8q!ZO3_0K|iSi5jt<6zDMlGfEG=O@lz|MDAd$P+8{Qj zsZ*t=nmBATSmKvRJPQG2zE6tj2=V|Cm^=kjO-_--D|Ef3Zu<#kTKYM@?RA8sRz=3m zmQYSLdj;}|TNOH^Zx8I~YB=QtoL>=v%QV))h1L zJx0;fd;ib9w`z%Y9?npc`r~u`F(i|?A&xcfr+FOsFfh2wsN296x#V{K%RSBb>OR`( zJ~~2ke{^&gQ#77~-8;q$=8JNrK+ezDM7MMH$~XlZ-~MWv+=(jK54sUSoJCY!l3@ zpeRdZ9C=}DJ@{sSFw$Qi{Gm-HtGK>QGp=%kXEUaUfBMrin{Az*O^-R;G9*%FRX5@| z#}8q8BlSS`K#XF;M@C9u9)k?}tlro$AF_tuXevV&g|zfmP>78FQ<)Pkw>UdVC(e(s zZAw*ntZolR5@ewSh~b=>fq1To#jwy04$kzgr~DM@bBar_CpS`U``VYVlQ1r#0u|Xs zRNa@U?&P7OAndlR6ClOvqHsC1;OzMQVUO$KeVgLIzCi4Z_=eZKRnxKJ>A|s2E%|-As?^K5%YbqslODT8A zik{GhekMOtT> zo2GPnqtuSwwx>y>!$5ihy8-d5K-`7MX&uHCji1`9mZNP?@?|UNFI#(cAV)BCuK@;& z!2HI-vK%s@;n~Idy_{FPyPGfpJ_TY_$vrAB4wD&8@{h+@Wc69Vn^mg@}CHUEH-NUT|d^CIQEFvsG2261WxZGz_~|{+K{g zH9fN#JAO9%X=EWd;C}oE+9Bw6rY=HJ z)IQy|327})A|gHGj9WFR-B4n2HumcGQvCx*nPTKh5jV0uR5&V6>ReQ~4S@?e*tTNU z%0d^Y1odXead5dw$=nsajW`%=CMEG5R^he&Xec=zS7Fk zvfW5DX0kzL23zHx4^n|1)SCUy-U=a!92{upeo4HRiWh)#G}I|rB{U?`5|#% zKy#x~bW21Ey9k#h-@EjIm#yotVQj8#4eu3W3n(h|J@9+N`t;ZK%Kg|*%X;(JWY~z< zT4?Lzx(xQKDO2vM`t?eqNkS5MF;c$=`FLuD_wj}2 zZo9*Th(?6FHvz5zWmUyKF>c!ms+D1%ww>*6wb3q-Dp8r{8CqINXoUc?vCR55v(=d` zLl9mR4~<<~d7z^6aFbTN4{@sMC-P}uN)0F^8w^C-A_io)Ou@O$xe<8Y+f}}{NU2dA z&YVJ5eay#A?jy;FiDr^HouW#ezGnJ-^o~~&fKUq*Ju5;0X@qQH`O)h%!2HAw%fhOZ zo(IBLh8BHv0H^E!=KoH;QyPFr zxXYwTU9oSC!S@O+wg=@(r#eCm%y9eh(zMCzTp1tXXs7!je6BrD!bAI0#~sMLD9&@3 zgo<3C5f{kT<380=s~gm2e5enN?kxZmZi$J!-Y3r5?qqg91l^3}=EUh6iN|>~7p$1)YT_ zkZ^v$dN7v+3g=-{{+Zs7T9%%A|I2RG{?um^q@ zJ6zEAp1HKnNPxqWrU;q}`yp;;MrSm=tHw@W2e&9Fwni@?7XM=?GCK_UsSN!9xFfHM z(i{nDqtxV1>ye?$+;lw+hVBFIG=(IqgdmCK9tNxJ0|ho%{=-L%p52Ui*)&*@8E;WU zF>G7||ABm6D2@A|jB3urPxs`E!yDDU+*a9kyd>+<`zpW@iVMjvq9g^#&Nx5!3eoIV zcZ#1htcsLuuQFi-_FcUgBN<^yX0*b?ajqvBtFNa$1vjlfMG1qJdVH|j6M+u7cI3~M81^pYusP`i;hB5fleG-G<0XtfEbcYeq4J#0< zb8>cRknl05v1g3dh?oI!8x*kl8CtwpQ0kNsak~GOpOIy}6i<&BDhEEzYErXj30OBJ zfY4l^{Th1)#W>3loD&krqR&pmHf0Tp)15PBgq9oj;D(1j)Y2M$AJgg-RGfX|g1QQf z5n@=A@y4Fb-r%JD3|386_6OymZG#z}i^fI%&lKM&Gs_H+=K?@I*yJ!N>p(8m_U+`x z_%eKefc2W5I1@{h|Nk4d$Kp%>NUQ^z`+;n22YX}9(63s~?ucn&M)XGw#x>f$YwoU!Eunxpr} z(UFP>8GrUO_zX157m97OsgF3h6d6Yc{&g5X7(SF4}%0LVw`4i)!=Xr$xCnsPfvCP7UTUKB&vntrJiI*|R)4GNaH1C#!MhU^cvwy;hqa zc5YA2923YktWlS?#Z=hW6U?~Qi>&8XHU4sEUnFlCtMhc({QQ1?QoqW9>{+~f0Y=OC znZcwOm3*TT;Ec;E&eVDO5mJxO?&IYNL3Z{psT+E8n!j8Dy810I1U%q*1!hiL zRGti5c(S|z#^!%tEYCqk(r!;r*EpiIfBkTAT0k)MkCzwcFB=7(WD65tBRl*t|G!$| z_$Gik=d0z(WAb%C7wc7ja?FrPy!Q{b!=w74odYvm8sWf~ymy{S0>HN5GnM?$c>z`j zA@3FQ{06tyHPfZ#}acShfQr38Jk13HD~$c;*|9e6rtyA!EM{Q2lixkbX$CCQ@>U*iQj+w-B4EP ze-7l8@#EFViq3nK*NRbxe^g6629;{5?ds+(pivvBcSIuq86LrBS*m@TP2cV10}Gal z_lbvZVp)hu^vk+@#w(-PK!cOH^@iQT*J?(!wa0M>8@pSMJ7*eufjHst8=R=NyG`w9 zmL}Gy`Il>YD|}^v@e(rv+^0`2kQ`BtVmmJUZEUBSjYPwGUam{pKbi0n+>`lNc=b@? zQQ$|&uY~~=D~DTRYY{+hd9j-@zv(_C_;}V~n)rnC;eU%yn(9OUME0fm9Se4Q-f4x* zj+=%7J`-_LStstD29q5f&91VHTI@RKdN{}5+~BDohvBF#vRDp&ni6Q0=e87PeaSl5 z;IN239Iu-sqTlV?OK-pSOXo~u8ghN=rY~I;hs$V`MZmn=ZobMiq<&7|As(Y-I?1C@ zYc{eS$6I*!3*Wt;uhkDtRVG@t3I??R3cJB_{;l$Wm2gQ6SYjwf{!B?r%Sy;3B)1{7 zzrFwXeyiUYOXNhe2dQM$#k~ddwOChs68ZF@(<*bBf}^9)5a_h)Fd_Ui?OS)zXdU}y z)UewX8tRI6Yl-~IbJ2?PZ=Rvl5N``}{v3=<97E@V;Qp2K9=u2AWcj;eg8ZG+TKx)$ zXMLK(4KCg(AK`U(53e*BKmLz@Ry5691JhK>C&eg!vA)1Nn!&gFxr{>DiVo6)n=ayxiFYSig=(U-3emsoF8<}7 zY7~GJKvCMz5;JXmchZ5TI2<{aN+5q1dNOin>U>ggN%vB>Kzp17q!8({sp=V2%*23?@Spr$i2unF^6$Tu9@18WT9xA03(c zkB)}*t1pGA7Q9eYhoFksEiEi~z*E8xKhkJghIrq3K^+rz8VHy>&n=L#0W7xmHThD1 zRg%6`U>E>nDSWqLMSt_0-+V=T4JxueO<1fSwoNNzN~A!OJ$D3DvF%p3lw9k#)s-&f z#QOBYUA#B0&g=f@@N|HS)RG6Y=izL-CHo*D?=vXw*jthy;{8uw=sgMU4v6 zSwl&yI&DEEp6c6|Qb$LsT|p872ilgg7cv*iZ)kLWGojg2j5=65JyOjpZQL5tq1nvx+qQeXjlukccCAygq5+1} zkg%j6Y*;3UwcfpKM)jZzN&S7!iVm{K2aHs2`kvQlf6IF#Rd#L! zeTFrSNS~_c<>KU1OLu|;dY&dRSt4=gj09FCfTB(Iylvot^Q|Ho=7#^y(vjiQ2M%!} z_PX!i_dLGo@DaUGErnMAbua@6I%$x(HL;;$x;~u)4y7rdJ^kud;5mB)VI;~(@m?cl zhlOM`YYXj|$H6wkS3W3x(m@vF<0jCjzsD-NEgKj;4FUY35y-J{VU!ZafQ*5%r75Zy&_ z$8+nP2Is8lpB{|fi?Yc_RRWT&``o(ym;J8MlIP3PqYhp30gRPuK9NfZZ4uRa9u zlaH;9S$;n{GOd#WZ1kbzh1l9r?Fy^Amqro+2KyA(ZWIZMosxQaX^Drlf^vRT)t;@` zZz4%Z&hGof1mLXJWX!Dxp@#INC5 z=*A_Q-~g~mO(Uf0RPPskxv4F$Z-1F^tpeJi3EIIL>~%~?3E1$6EY3+|mjaMBa7fomIz?4qrQ8U_SX7Ns40Dyl@diQbxd)Py{>i4yzm@j!e`n^v9u}4j;4G# zCOi(K5Shdc4M>@K*&ebTHAS*rM08B^7NRQEJ5jLSa?9Sfn zZ?_5BA<{|T8}^{SD88A2?EvqvUAnZR~-&A326Pzw47d>Gon7-u6lb4xkq`qlTQ4@`>qI2<>kp?=IC^TkE&JaQhBwWrQM zSRV*{7&=K`qT!E@_Rj5J?wK}zYd79Ov%IOss}q7oi8Ca-Dww3QrN?T#R@I4mtbE_8 z!gPbNerkR&D}=3OiJx-q=Bb+|NE+wdZjQ?RYz3xXoK~b>q?$+WxN(ITbs(j;decDM z6Hz7o(Bc-g#NQ`~1Mg|v!Wg4lw8UQ=zjtq}zuXJi$;S_0zkc|Cj^8~0kEh3P|Ie$Z z$Hz*&{IB=IUq%a{n@sdUzTS8Y_)j(UvHDI&@09RIqfzbb7$V$35s2WqPAWh=ssQqSp}nP3$GaSIO^Mp^C0oZ|Xd z1z+)(dphj*8?BtT)Lw5T5mybHxW5}>RCv@b^sqDX?qT~*cL_ZxsZP21L$J{@533wq zl9`iR%&0ZdYntC6$E}7%7C6(Kh^8Ri_|`>N@j06mS+ll>tACizPSoDZ(H7#`7{rjs z5Qe7EhEBDddstL>h{gw-!v}D-u6%H~+oc=_rEyWmq0ehpQ60fqqrCtH zvk{G%Vt3yzEwkGxC3^k6QFb?l%jH&r2xmS}2XtX4yW4iHJq!l7S*uBe@!Z_z>L47X zx!{&*Bo{J9H1OI4YmD`Zu2we?o4~)Ujb(<-kVXaZ1fJv&Mn7Dlm>QHImn5Rb%KXsQ z9l;TShY=l*f}hgAY0VDV{1|QD@^f_!&PHFuBE&^1$lWw+!nENC+JQJa{~j8hQ&E~8 zH$cqV-wX9S*d;L*lpH-BSNpAuH?@j221^7RI;~O= z!*Vb8wK8>6!O>1}e?MJgjtLb+|CJH26hwe^=tFc1&Gv`dgf;jJC%MA+_9nx#`9_ zl&ake@sNH*bsogT^O3D0!1OIwC#RH`x7U8AXF+!Ws2mT@mAe~gyhyN++PA6)+Ry2l z2OMh{DP`-yIgh$?-Wr?&%*5dSxEV-tz=#-2fSM6aU*!niR*yPPiFNS`*KK0r0RcGx zD3f)OrZt-Bw#gV83T|kV0z6itQ7YofYk<%}$9=n<=x+%1+TmGZ^Vm+kQhczh0S5hqGdrq567s{y+$H?r7B9r;dv zqP19Hb^C%sJ&^$EySV`OgGeX z7#J4n6MB;yTSl$N&`2`jW8tK>w=nqln26)zPwb=?-iDW&jm2ToA&Nw>sh{`qwUObw z;JXJ%DLUKIAIjI6tX{`wCwWrI7kw$ zQuX49sGZ{sn8QO!jNYd1)ox)cSWJ~!rq!mm>h;cT>p%s&$f-I_jZ(Z4e1lN&JF##| zidBA>csB^D>d}$SpeJ^`-6ixCI#-$5hcb z?5DOt3kSS&8*DVY{VV7D?ay})qV36)H}CGxiOX(-VQwwvpuH@OgS9OhP~`JUtB)t0f_t%e@Nd&5D1hiCaw0-ktG7=0N+L~ zSMkRARMafnVs0I$K1VOMDN~7as8_(i{(wnjJ1rUpz4gOYS{K;8b9cQ~4ql>bHS<9G zIS(uVS6!v+bp+q$d_`F3@x1!zTzK(t7xQ4aq11y9^{4f)oLQ71tsZ_kQG_)f)ip&G zhSg1%x^f<5OH=pmu&cLl@b0>D6Jo~rn#}oYGUu zK@-m3m+SK%7g)v-k;TE_hx+{YsV!4uZurz2M^2b9^@t-e#MCg~_c=hl% z)D8X0o-BV~V0~YHs28v1XOugU>`0%UegrdN?fksFIH?{XL4A;VA3m9rz?fjOPvkG| z{n0+AjMmw|rVjB zd9f<%M;Gf)z&rqBa4sK98TIH1BT(ahyjrf;_4-Nu8zEe4hYHAl^yvjjCJCR=zz_1# zA}7+$rt}rS328}mFN)<@U7X3<{J2;Xrl;4b2dS`Z90d^Z4;^&#@?7F;epKM*@0Ke< zHw>V{zhkg+@DqJeH|Nf4BK<&(fE`hVKP+S+ABxO=D##UBj-7c*QF0#ME4;)G*8U$#qyDu2X4`+a3^lKoCPX+z95 zIV}LnN-#HIDjK-)v`#t`U2Q#L_6+HPc+M)vpw=_DbK*I`%g4;!?RwgfjRxxu23X= zr~3}b)4C)GKL!*Y+&`>a6Z?*SZEiC45cRi-7u7oWE1!}LpDPjtmkqHfVTubLw(V{w zh<=Q#K$iT99#v9sZBxqPj?gdg93DmK$t!^&W`z*QK4 zaWXoQfRRiSn6>mPh3=vi1f4?7pE zU+)FKXs6??g*)`Mo&sN0*1ZwHoMv915H=#eBG01lm7^(|n)-J&&9Cz6VU=^mt+>{C zrBsdNA~i9Ri~P5_Kn^+IpkaQcfgBW)6o2C)eF_+kHf=bsm&Wp2@4f2;8U8;ox2N{Pp%T~1UqMk64(cWXliwD+VLD6 z*#Y5tC%~!d&*$B*3h(fVPBWqq7y3tkavUb0Xlj^Ugh9}s+)OntE%s(Niz1RCM#L15 zzm~i%z1f|r-g<^Be^DE=r6z9bi~TdC=Aj{zmncGA`zs3QR}@fmKX;7+3X6Li0HEzv0>Owi!SGdvgCHTK#ZSpZj4LdDSWlg0GcchK zF+xp@16~LSlll*|H?O*@isutij*{PAoRd+_iGGl43x{i97eTYnh#*4FGmeqA1j^-e zBA<;bEHagePS@^UW9R1=gkgp>VL=tJlEs5vXvQS|5Z0| zGsT(KkQqQatruZ#Y$QqlTamwCsi1;uL8eqOxE%$dSfLjbpr>dzP1CVfyF?#0FfL@# z5FmPDG7sz(*zc*S>^aOlVlv8F&5ar1z1^^UJ-ML<;bx*5Ny#8ZT1);XRJ|rpXHa4) zUe`ocNW8v|yD`&FI)r{VY-ot9p=)j@G-M+%WHan8h`Q%qx5_N$aOgNp-9jQ6uz#ydG?&V)&}uGKSf8g8>)6!uPO;VCyhl}dmiajn<}mf&?kvrRj+o81czaDHrs*d zXvR<)>M91bLt&(nRVN^RFH(Nmdf*2|?q<3ldgc>S)YpyIBtH3+xcY4`dAp;dqYmy# zlGAm)CQnZ8)}*I)8-U@6J89>{MvLi?(*AJbQ3R}61kASN?ViovE?@q>s4KNhZ4l`Y zC^DrLtbDa3&LN{Bshc7X1_#50&sAn$GTxpXIDOGv5})CqHQ9r$uyb3xXqV9hA45+W zADO^vfv(0J;79Cfm37p--m#(<&_G?(=Ag5WkB->aJ3ebS!p<`<5DauJh!f&wIcXsH zM1V3uU(N;Oqg67PcCE~1tzL$l2#($!FJ-!;RU}j#Ykz4k(%z-5C8C?^sAy6!OR_jk z@+^0uI{oic>r&~(#-nOW6~q*g*t-PgkdSv`5>>z;M&k9n>;g0Usez$!%d=0%)V+ji zoamfo%uNoUHc01~IY{#r3hmuePVLb3s#F+J{k~r6mLvPHbb)QZ(Tk+1^BU|oFY`d} zD_EiJMO8;Ck~Hn3xrty{V&rFpRb8^~ZWTpAMAkrzf#%(g9e|xgq3*WZY*)YB` zC4ev_@MJOk1S zmqhKfZ+F#^P)e8+YRClsBm<3#pu7^eCsl)GhNjjb=KEU7t1&9hBrE|_DH8c!ea@?0 zt$V?Id92pxSQ6XNiJ}P-qS#5^M#^5I;;5xx!Wt6C*;>?|5Z@B?$jgs7o3z_BQh$5? zqou+v*6gdcfD-$cMLRHzfTrXg|zk$}ZBc zc1?z__Ce#5Dwp_Es9_M0zEQGxVov=iK~);tR-Bu7cv35SBx9~WItrXwJeKe%TB)C} zopp)(0Z>>SYIaqhVT*kNnr)jTsykgEu<*T#zmWCDYnkDE!rVYF~Js5b|oiCU8oqR-9HoF^+=OEeW>ZV0-TeGt(!fk``yQ zLB_8qdtlrMT<(LU;M75_h(p#5?`cqGv%e|FZQkHS_E4Bv>0LAEr!W!(s~2JA*Mv+C zXV553zEMB-%}ImYfn}v435W+T#fD9?PjMQ4?n8cYyvOJflbI_zl2hHHCGNbPSqt7VAxV5f?llPjZX-u znBr@qw%XB=kP@43%lT&N#i0j|^X4^NZQ%2H=yqWf`Uh^RdJfyvt9_fQ%;O?yf-vV+ z2MF5Sa#OWEP$X;W?G4Vfnq2WF#oLqn`i=e};j(gtIgbQ%T|y%P|2$K6wIAx=B{q?l z7qEtJ>R$;-Idh&0Vy_hYDd$eZY19<6f4;pSTb%tve{28hyjLfua7-=?)hY!=4docOa@R~_R7G6DFhFQrZjyVSEbi%YwI_-V47BV zEu4}hAvW=@TTdmPDjH*Q>)T;G;`VcGEX5Pw3tMimfVAFS<1<+Y%-O8~Ymv>M(RBvQ8cdqtDHtvGrfGTm2u4#NDi39dHoA|`HaIk7aZ{#I z3I=uLj*-Dd-)4;lw!50nYqYnmN;*ZZML)y|gm8;?PE=oO^%wJ5F^N9n1I&Np1`&*1 z`*uG|(Bqqw7@&Bjtpb8hukh{02jcYJ=?DV+j8kjQkF_~JD_O(iC5C-^3mk9;q#kD* zb8Pwdaq(}JB2zgVYmRX5@Z!j?3R05;OOhnA{)6G^>eQI_waxf+Y1QeiQ?N0JK2PU- zyZxJvcJ3QX7zmh!mn4y&C!m0j#zn8xieTqCLNkcMT2r0fHSe4CF&nbAtvy~Q zG00BYGe154c;AAf*35nM^}e5DmWklv`tpF13wqN{``!VH^ zliq@iK0JIY~JcIjuwA#6ESh%%(Y7 zMwua3_G{4%$(HGNZ}c8!vAtLHmLKUH_BDP`?T1gaB;qZrCc#2fg?Rv%HJIqz9Ezfg zz0EQ)Q)8D}7N;kdDjKP!Cv`|;Ha@<@FzY6(U2@bFk)K2j1b;Bh{xRNYWlU#=T^v!G zjjwyuS&W7FFO%CABecd^5(x?p2oI+vB9_DlBVNgmCs+~WrCQ$EOsU;xGoyANf1$Ih zD{m-d0r?4Ejrj)Ce^rpODi4#Cn|jdl_gfh+Y1V3tRGUXfw7F4scRKf$yzZLTU1Yaq z+|-PzG{J)z6LKoqvxJ6A0xcUw*0ndARg~!OwEK_m_h0wt+D@E^q8JMRRtG$|$WWug ztq&({DCBp z;-Dv%vh=!fbfmg*bfjV~Y&UGdAqOyA=KhJ8aI|>fJoy9%(cbsl+Ff9Lk=7+!3r0C9 z-`2Lj{LRD6W$& zWZW>b`xpIs5r0=3PJ1Km>gBZ~{;t@!2hJ6P{jS)apqMO`#@furr8kB7&icd+?&&Ms zV75QkyunC&;bu+l;dNA!nq`B#*|GNO2D9C`u^VhSFX`Yu?TvLPAYfKiZljus8E_{T zeqp#nedoad0whf7jmMuB%JJ8*eW;77+#}r(;Sw2+O%qppPiXkILm23@WcU83(E!>z zSK8lvNbBFV1Yx*WtVeB(Wm){+#Kg(9{Zzp#_2(S=W*9L_$SjX5vgL|{DgG*h=B<~8?!S+_ zkhlc_4UM@P?5N67UcG&}tIrK8+>aCGUuirsu{9k_1KQnRbp-3x`HPz9(kJqKmy=b$ z>g_wyhQW%>w4Xj%Q3SZ^NmJ&A>|)wtWY*!zW9|5pg#&`;Le~s33ygv;=QjX;9COtYDPTIyg4Xm$!hHW+4SDV{P?+M(IjM~Z^Zxqa4 z9Og+_5vrC+BFVvqH0OcO@C6d8Ee<(0K&16^4>wh1l0!@VFJTaDsSA_;ixmq=MO+jf z`31@lm(LA~q8k_v2%m#7(Nhb{W>YtcCBT+wNp2pzfg2YZn2S^K;PdTQ{@xbH%Dg_c z&zq=lN$F7%Sx~FMf?>!hmiB1#$z zti$6Xi)g)V^djoN!h*u!v|Mcf&MAd@9JgZ$lGHP@t3f3u2ii{*! zB%4eNa$#<0*~er}e>`e)^NcD+K^bd@wiHXgGtM=}kT@vQ5_|J_cXXd~k;|>rUQT`H zD%{=fn30lQ8Ipc4AVSQGDvYl<`VMAmk|`LCcax!(n{d~Cm6MSvtdl4Uv)m8!jpH!o zCpZ}HX0xWrKGibZ9Sj!ZB}gM6puX~m#|jzzc)aR+5-#iw!W&IMHkdZqWHJHWs%>(y z(iu|0`?+v(3G1HYUNESI;QXFly3dmBZM^$%xZA{=-|RR)BJPb`#_%TS|MLwtsHP;Uz+nt!`z*XW=H`zn7ZEH`=e?L!F0U$sUB#3UZTe5f7YLd8ARaRD3R$kuB zBB#s;bG%8;k;H!!H2e$jf}&2ed*s_4LN+^{@x1A0&(3rxv3a=a5|jXBC}I7@5zApa zNsJp!zvKM8^^WeG_?uFvV$CYAQmRl&UZwP{!=YK`QsO*}sCa8*>)Fs1D-Nw*vp+p^ ztzVlCOJP)!Qp~AF>d*9OnB+XLf0b-wURL^&wA~@{m+d50qoUSF`n4`>3Mq8uw12U* z6ls;XHpL?OUl1l_;jQ=K?<>aZR!#ZGS|2tg$GWO3U`*sU-jD@e-~<1OuN9k+%c8s( z`#WSoi~Xq?S?Z&n_YumRbR`oH9LVEMOW5=s!v&2dTvgdP3%yw)ZZ!B z*51b~wcd9jHDxbLYIs?%rOb`|*FMFr>*wp=zXbYrmoMxS3};&=iJuNJDs+t+f2vE= z9Iy6=0||M-|8;pW+?3|+^TnERrDm3T$3v8Lz0Vz;cB4N1u{q(aUfJv+JEnVWw+J^CZL?WyMt4=}@22sxp?0Zq zKaLdrcC&2bFl5&9T6|SC1#9YN;|%W`TX)L~H+A*CL9AZbOMj&zk7WJ?2n_5zMNeGS z+BjD4?M}ivxi_`*{sek6#tZRf@r&;P`Kok*o3zQ^yttZyiY6W(YZyZI=)0 zBiK~_s}XED7qy4c(IYBn2|EDA$^pRu!HUdsqPzO^-u2Vc>djqx4;#a#tKlx8i;TjH z023(+sv!Ge9t9i5ki#PsJF+F(JYTE`V9vyCz=w6kOd{g7w?Q%sgmr56NjyN0vNQ`o zPYHqzPG7ZQ&dlvLI)tw%-=m!pet@b zv{-lStSD85JXSu-YH6&=%pD5$YH||CDOJHaorrQuZESeOS4~z55lwD)5^X)N=`Er) zRc*i?rSbwql8H{{hQL0`nX)~gn&1-PJRtDudWR9(B4tIi_PhNoq4*Rp&0{=WE_sVF z*mgRfmI3E zEpu&04{Mu1d%&S&!c)SLSC(0xWPXsxPEms8CfIi7+U{5S_NA=oPPVSu-_M<8)OHVm*^cbJ+3g3|50 zaQwi-R8-^MX*dI&sJ<%zLys{qD4oySaR+7s#mRSeR-a$1$V5DTRrs4YjHE}gOxmT~ z3>9!`C{o!{%Fat9G+k=0Ry~m$+mRwoc0E1^@=Nx2+Vncq1YF6Pt}3D}(HoIS+FAdN zfvl093rGolrkjCpgWwbwssN)zBXw0|>1$wa z7W!T;FfeWU`=MQgfK&KE5TkJ+%qE4@m;3ndk|_8O3hYT{RdP*voSQ3CF7OtFjvr;^ zy}_1<9r5G88!1Zf$zSKc*2RA`(stKP7gi$4`x`H+0gwLCRJ79>{s#-5o{4i! zh8|=@bIq>djxbE@sPseEaXm5zBm-MtYDbFHeOMUYA5QgcO)F<&O7-ayjr4$AW?Pj2 zP*C}RkP9}u_6;)6n>c04zE0j226By8zSNd7ni?HmT!QqdOeYqpC(1> zrj8^+3wtB2Hty1FZs4G|$bz~?;3lV&Ijys>mYBDn{ZppgDgH^5ps)vS4j=}oFHx>& z5&#-mN(K@2pf=1>U0Y3IQM$kaIgtSGlFUVQvb|!p+WJ^*?W|KmlU8tIcM{uu?@#Wn z1;Pn0thaSh6#bW4_tO1!tBGEM_mb>q-f!g2S|-zK8V|~gYrk>r3_s$KriZ_^d*;Wr z7B(U>+X^dX)Pw+}ct(~P^d?rL7HdU4-uR zM|ED(EZVl7q;2qk)AxG=tDbDtUbd^4Z9ZL7clw&{A8wDR5&1w$3g3YW4HY zeDbT5-bG;qikUL-%b5jK*%Ex|T+W)y1|uBI>NS~ZG>m#f>Z}5Alq&A4{?v(`ojs?m zP3t{_n$FfOaE~`q^6+w2>Z5S|84X*Cgz4j`TwC0hU{9~U>r%tb)#~mPtkW*qcGYNo zOtogqHyBGUFQpLqckB9D6xxw5 zalK@$f^zJAp1r<3Q~nXUU>Rd{-=_W~S!@IMy)Y33_AYFu90K;rY^2Mv&B87v@cYTXL((QLt@0yFou{F(3zRn`+KS@Y?KDoNGS zs{hMpbKtoi#pUh zS<}T8#k)@7E_!SKT~+`4Z>UDpcSE0$k})3o%!~B@NLdYpxb;`-7bZ)W*+57vERAVm z&82p^*>J5}*AXHV%pVM`3;R^iq*A3&SJqzDA=jl&tvAKw^_!)LWUAa+x^zTAVdsTZ z<)hViX+iAlL@=GJKWquNu-7}2>iT{4?Hkr!Wk!Xk&d+NG0_3j?Dcl-BgUVviQ3PT` zsze`ZTad7!@1>(m8~uF1UR+*2{pqKt|8@ED`F}sVeDz;HKD)eZHo#FMt2w^f?D}a} zZ?ofC89YUIYUaXv$+lISl8t6LmRIi95h;Ty?2b3~ck5OKu#e$s&BgrCWhni_+v44# zdtWsv-BV)s$(~!-2G-uyCl$J{>%VLC+8NAY<69WaU89>|L%LK4;4f*x*a+$VRaIk0 zNXJ%kb1V$d9a|j%2-Iz{%c%XqAfpM>MCdNlGha8=}3lZ zT-BfY=yCWtv3f!4WOML4nn_ygOuL->@tOhf{GPoJqt2&B>sxo4Y9-s(N_J$t@}k*m zx1nr0XJ_Cx1BEF{xI|d+M3^GUoZ<=f0-?o zKTnCP%ibjERe{>S{B1UW+x}_w$Www^1h<3+s~`FDlnSQLr#~+W{fSFYe@!M=?U#Ks z`)z7{HJ`mLraw+l6Q5p59N)WVzjLHqSbv+{UgckrP4-sa`}CX1oF32S?+6uWeQAE? zo@duL%XgqDCi#o$)w^#eSH*&2)2NfHkKfIJLwUJOu8L|va_KJ^8yMnq<1&9fy}4c1 zU&M)My_#GX`3rvh+Z;pae;4x^ub9n~*TuJTRH5aUMe$aTY}L|#-p-cEv)=`m7-Gop zuV%CFI5Zc6_o#zIzPeq!v!4B4WVcIsSnkn3eZvU!xWAsy7K>u>P4TPL+O~KBV&UC) zlj++<-9dS1nxNj)@dMvMJZWjh0ZeNv^V=Jl8>*+=-rSgZT2&T#M$I)w_M-g0xE9*J z(8hzGrx|DX*Rwf>gWS?)5viAE;f%JhpnO-9)OptG``2hQ9K?Q}zMaZsK9w`>wJ7xZ zw5vZ|>L1n1H&?c``m9=?oz`c!_1SBE_FJEW*5|PGIcj~5Tc1^@;daZa-Lz`At=f%a zcWCvz-MnhIui70@?H)Mo9yskDIPD%d?H)Mo9yskDIPD%d?H)Mo9yskDxa}UeYBf_5 zIl$=+p<|i#^X+6#fk=3i!Z}MZrHLy+|I;KhS}zus)Znx3!E9)ZD8%GwE6Kk#Qjd`|yNUyp3iD39ircb|5Vo+ShMe)FPfM`{Y6HDWAl3||G-DP*7s$v=!5dbX$ zVXuhU(&ae2_gUAA*BkFuZpZ!PNf%Tk<&PGcLhVKrQH=zzQ>dQeiXnkXo3~llmC;I| zvLueiL{>7AO=M}2Q^O;5sN|St#4!3vl9U9Y>qs3joc0)pwG`ZMVAU8=Ri90lHSEuz zlERS`$&`&uVwV&kLuAOf8O7oYhY;-gqPB4vP@#rZHl`tNE-AOeUNX6qod@9ar-WgxBez!JK}+HS+t31g-;^croZ~KR!`AVWeE$}(wi*NNx%9e4 z9i!lcYqg^f(w}rLIKj#ldXjk~LneI9CYsO=%OFhil1vYHrTAUfu{Bl!dQ4=YbWyV6 zyFI-yyMHyS>R+`Tl^R#w5$vm~P1$Fp0R5p5xKnx=n|7xzuZ_BUo#P8(4g_ z;#%l>2eeXJdE7eo(vIVzeOFakYNds)+cLYu^`u?pKIdN(BrZX>tYHRddpUOh1hkr% zF$zX|QNzt_5*D5UF#0P$_0N z$t9dViVHuYw16U_G4&;7p5J%2EFrD!R>LX^la~c?oO%RQ1LUEgm=2U@S|+<*NOO34 z>gt`0Vn^|7C6m%Ax146gasn$BQogBh72&>}J9Z32JB#}mq?Xkl9tbu%y^iYD-t?6# zJ>mAseNFA@+iCWu5ZnYIa}=u>HxmC*VWwao>fBM;T{qTl)h2jhmWlAGIu@=LESupx zFc+0=0zlV}Y&F`SIkdf$>L}0alN%39%%|RM>a$x*P-!_LARWjNSs7Zt(GT#@<|ti6 zyh;OQBbbX&N+NegS=-Bmq?J2DL&`1ROmwVrgDbaUWY0wXHzWG!s~^c)pDqkg$C{K} zl~;F?m?GRM%pJOZAHN>7M z6U**zlenVr1=v3Ht>*F&6y02h`n$*o0CU_61! zH&eP&1#lojeQK(CWkOa-tjJM~kZ%0`Wlc>@RA61|@0z+bLW}N`?CCYUixUDGD+J#X zcqYAS%)y=4QCEn9?BB~eLV}AurQvKdmSz?64#U~;w!1eNob0SLBr(GCRAFak8>POd zdFghZ-uB+=0pp!-DV4e_zTQkIuhUH_GrNt@W|hMw-z05o1=~1ugL+zTPW94NE&&*< z9g+oez?exF)Js>-Rzu|KTWg?wJ8>f?`*V1$q z!s-s?v~Stew-S&y6DJ~b1K_$qa$h?7))rh-!wepW4VW`BXQEoekb$>r-{@U-^W@89 z2yeX8LcRj%#V4gv!-^f$J~ zlHFt?w&F^vn<=WU13=l_aDg>RiW*rj-dd!t%uy0e!8(CM7^oU)$n?(MemSg>Y7C+`RI^|X@}a3*d&gOL zHGe0)3{uv0_J*FOeh!cyEXa}EPfH9D<`TWV5E3uvv#ZOJ%~}lg%gL0GnXfRN7s*@w z16K*g`K?ifJFB999+0@a{#TAI2{z*S!dkqYU>=ukzuFaF@DosG|B+ zp1caP1OLjzXfH=yt=e^f6>-o6sahQ+s916=G`-x{h(4+{w&hrxmc_~(p`&U^1TB4l z83QD87RIrcl;mR87l{OXH^Ywqo%vHse3P>qn2UkAsG{rScdb4V<2=9AO$tY)k?)iR z>w>ItjXAh^TO;STy_ZtJq85q}F)!^Lb=XQM-RWns0**fOk+{8glgcQeNrpLwb%)er)we(nG#8%RT($Z! zZFFL{y-G;6EGIZfew*ZYG;i?V5Q;dPw&FVV1KO)%vcy&qpRFt3HVw8m8GU_qMQR4_ z?fN|yIIq1e*2g+tuI41kHg@LAsJ^^j6W%3Qj^e@uG)9@98eQQxQWY0un7{i{ze~Wv zcfPY)MH!sr__+O2#Iz^5{IZIwR|q-u$9o)d9T&?IZDkNP%)UPKST;8@t#4nmY%+Fp zT~gOiqL_l=X6w^ezuf*_Awy-9AJ||;mn4Y6T%tH28#`bJW|!@4L=$RjJNHOAxTBM; zY8=JCNDzFCzA@90c2Ei730|iMnh^D;!_b&}%~c_D?>i80%{!=F>^L?Md=5pQQ^`GT zu67NB=-=n(qrBhM*4Qy1j((foKl(<70$LC4lKdD*(Gal&>(^03o5#F%Y#Ro-u6 zJ}NTL^R$jv8pE@BL%rrkXK&QZQLU-5@7c{3PCb~4D@cJRo!pC%thoo4i{=VFAi2RX z#T`4;VTU`uYv ziMl>_L-O{D>E5!Fk^wy>Or1g4Zt0Y95Cwrv!n}e%%%xo;kf#ZI=V=e-@{u)8#I_v? z$eFpc?`igWo{oUV4sB}H#@PJaKd?>;7w)}0cZ>0mD|1pOQC`2H*u+c6Cd}!$&3h4x(qrv>`~yadt$>iBdYquT|3{T zY$zZqPLWI@P!=X=)HZktVFr+vAy9RB7m-3*mD}VMnLxKu4=c1mhY}A#b*&zp+_$q& zVtSCg19_Pp<&jJ2Yo~}j$7guewSAqbo(JAU%AtaZ7rWq98T+};Y1lF2VU++u`!1>r zC}Ma7*}mO^6<5pD_Bv?q9Q6@Z6#uF&(7zd*LGQ+@s`e@Y>cpTLB?92jB;*Bb*1F!b zFDa`1eb_NNZwZhHLyO@+EIX9k4xAvzT*OgOtFcv=sn#~F$|F{FSvk7l z?)yp7B7{JGMF^M7Y~xSH(X{h_KYu)QKoZo{X_k+FgPSn|O>j z2S+q_+c^^9O}{KjbJ!9Xynk?}0IG@0tOHT{pL(P;Xrxeo&+9<{KMTID1({q}+Lig9 zSADHFs(J_Q-#j^p58Rp7?yRjINkj}vktA6fXK1U0bBW*o-;`MS%%>(~N#R{$eEH^cXW&6}&eAP1K;_LQSM6-9Vko4tVO zm}*yuDRhjpSK^SYI?%nEyiSyHFWAQOnMK0N-`m+FS|Shvah^lxm$zh;y(Syv`SdTv?^Tyy zRdHjQ7FP4E?uuYq6jf6Y@I|?L@+WehG~&p2lk3T{$&%8pLm8W;u}@gh0+6DA)e%cu zn5DtEXppa(+Z*{+Jyz#UZZ%YJ>i3*(bj?az+swn;09ehb*B0k7Sl3D=g{yJ0)y$5O!>XjNYnm#1#Y0FczIV^GDnUAUL-+ZvTdGd*@0OnHQ+&~*$?A-3XY2DC8AoMbq zSXJzqQVrP%F$dLFeDbwS!{+v}4m=QJk_p1y;{%RzqN&_a0gh9IQKSPRTRz}Ao@&oq z>uzQqwOS&dvUWaz?&$s63tYWKdpGsx`}JlH8fQ#wRY{4+jJg__&oP^8k8tJdUM;TX zLe6rNUDT{DoQ}F^^YaOZ{OTwpe1fGb{(k=i!Hud6Z!>uMeyk!=TRcZ0f4?l z+Esc^6Jw)-M)$!yTnUio9PTuMIu0jta}^b-x~+NCSv}fZb(>?o+q}eWUg9<#aGSTd zjT+`Q?^{I*dCe0Z^3C+XYo7I1Pc%L7n;!U05B%mWe)FtPyAx8&=O%q>z6#lSDQR}_ zZJm**!+_%7B*mJ@DDlLw6&2Kn!5`!2EC9H+xw>sBn{F$DgLQC_e&4FSi*~rudM2CJ z8OZQz_eZQI3x6#uga=K|p?-TOvbJ3X^=}g0*BOfk_&8Y!lriz`kZc=`tzT&z^5mA{ z8jRxX?3;DyZwx#NAEr&kTe5@*jODg%)X;jT_IY_`4DE!Ep0WvRZIO4FWjP_ZNnr;B zH=907nAIx!e?W}1L;JU3N}>$^RQ@SG=ki1T5%ZiRig2iy%0*z#De;&!ZY=T;yFtA= z%CO4WiRxJA=sB9N1U*ywEB}>{%HlGW{K?~C`exjZo7aCdv|bScrB zzT@UOWkLK1`Rck7bF_SOFAbP5N=Bk$Jc3T@1ItHvBTh+)uiVqbH2|#=`digvt%*uP z#INEX?0jcAZ$!GFzuuAwSqUW8Rm&;35qrP>Iz4ZV3XaHa1&vkGcgt3*xwZ}hp6Tom z2|Sc|R#P6h@0p9OPNQL6AN{EM7gD9!j&`$3RL_J6Hk&#!MT&Yvh(IQ|9reYXGdhrL zvMSouS6~BOp{e18jk)`S%+)Bq>W|vmV6F|i9=Im@c)PFPefJMs3me@Xwhq=FlQmFl zpTk#xRBFuAG$44DI17nu8M*@c23-^B-noBYgX>bN@BUNIN==Z#{aelBw!n2?$J3Ea zk1i*BcA*H8A>lI0*!&{Gk4@aX)}(4x%S2>X<`)xQe|~Q6t9!TgVx^ANY&8fsLDGh$ zU*wrbagH&@PwYH2$-=$*(PvNA&QF7y(piNj9+k635n%5L-Jl@C3o=N?A=idC8CDrG zE}?C~nz|_jJUgpyI6HeafA=l62T7=yC?^snv!j9%4JN;tt%e(+heWNVWl9-Wf^Hl+ zh3kbT7L4j`I4L`m#!KqSp+}8bZSC$Av)p6`A5&<(3xA?`gv zH*dF*c}q7jbvU^qbJ~dsMoS5)#hCgvz|)IKIpOdFEBjh7NOE_TlcAzt$%j}H#3q)l zBCkR=9Uv1_q?Dba@&!4n-sWxFxJxjt);HGF+#K>%c6GU8p)G^1^w0K{F5z}7$$f`U>V3@( z@F(B_SU}$ppQyEK4MD;WKhBHg^4;oitPi@FS?jpCd9U_sNYU4DmkJDvs%hP(w&*wd zwv#mda>Xz%t@`H7y#}7gg&Zl!A8N?f1nI~N1TYRg`&r?ae?9c`UY3eidT-&xAjI&$t9a@H`4R|nWW6^ z#4Y?1vqPY$1^d{TWP=!b3M%FxHp5D}JJUTAor zHLqKb&1$36C$ZOxJy?ND&R*_j^Bnq{#)=r#KwYsyV3JY-TS(hJ2^7Q=q^#d~XRuVK2`(9wUjI=1XNXhs}a_9&JTi3V0!q=;~PDa?< zv4V_?Jk62xyJKBWM zrd)*_^!C0wq>#5`7g2~0gJd3DwDS04(O7Z=N3x7?ajHz|q*K1YOOq zj6fSDaGB}u>u#HJ$YVw(Px1<*$ycgHb*$@bw&q|Ut=Cr}OKf6}n0094cwWl7#-|+E zB)y_(G*|UBy(eQ*c6~NBRg@Ft6ov*8cu{mD+Iw}m!`I!js|bhpWWcc*5Vj~LF{j3{ zn`Aa7N1S*WYDaVRgBmS%B}R+>8s~+aTLIz2+gFd4s~^;8O)@EpNm8oFcNOUiwu6dg z=9a4;)Mz=RF}Jn?_7FWTMYEx{848mbEmuE`(JH4IkP*NDHH0d&6AUqlB#N{~%ncvN zpeyN2p(=4fgh2pGDN3xD1_U)UlPs5a47k*|>jX_c%>bucbnaZ!Pu@R4z9{}Fl*y54 zF(`l;nBU1tv~jgFTv1Ji5JIXH-F%4T!etM+T>PVU3A%7hcy1|Rsb+C;b%R_(2w~K? zjdLTKX|xqsP#czNW05$X(60w;r;$X-RxS-dt#T)I2&47DJ@q)z)ffA9HEg!NTv@%e z(sp+COdK{FF244Sozs;Z2!NAb&N%CElhK`J&+!BXEr`hv%z%>@yVJ&9y|bWH|1{ib z7-F$Md?*=kH$DLaxC5Oe6(kNMVO48q%iHw9z{H$)=-sj;>Zi;>rHVN>;za1K9AOju zG&*V>N)iwr28Fo2+0k5y+-~0>eF=?~v8OMHv;qBS1fTRF)GXTOP&6VX(V&_wvKG{jxo*aJi0OCXRF3vLx?(11A5{d|XcSpE zkpV7dQ@p|f?Y}fWxJ`L(sA#VN{P#?e4(7sBuY-N@M(V$#dKan!pfRpBH=67X+aIV^j+qtsSqx(VW{`MDyNiT*h| zBYjOfC#xQg;dHkwOFK@$d;>eG%yzO@PrZwcUbd-2I2fRCXJ_P%@^{p{mM&3wEJK_I z88Az`xo$oAqKE6+UA#_i&d!kULdxyj`1MY`bJU>XSRlJ%q-+=^8gsLMSy$@GUS|F7 z$B#bxiT}p%0XZ{dZ4jYplfVJ)o)$B{aXx4_^M+XO`rEYwu`W?b2LNo7nkP6Gmoo&a zn}WfaM&kGp-z;plx-0_iE-iVhS5?qtkxdW+d6=o97+DgslXP#nYm25l)GAd?21o>6 zkR)E@qh2|_(XZ|@s`WPZ`qwDR6XhAHrv%r!wF}g*G=%C9o-Fh{b3>w0+CIMkM`ck_4aqvn}K0 z96CgkakTL)%P9<{6gbKR&VZoaqdc@b)FW&*Iy7c$G@Xi*2=_CA*3z*+Y@J(0U%OMv zUNenUVtu1m+vWEm0@3ubAgeSjotSfTP!gis(?^LdtF+=qI_t%?GxTuF@@uq*PBfwq zb|?syae>$*tDIi&sIk&)`ewOws+hyA^L1oeP@swEtOQ0*NQ80-(Rv74Y!9v5T;e8t zB`{hKlEJ4iCMdSHa)W@l3l5uWr4zTW0dv6E&ikf@#@Sh|8%{Q3`*$%~t)_am%YGG6 zMXn6vQsF4wI=iMP!%kfj6^znBC>T?Mcgv~EriP_!EF+t=J*X=q4}gT1`yjzn^C_UJ zjK5PY9(We55-s#*GDL#c6I2!nM#O?`1z(u*`Zg6qm9=P*9_<$!!~YbcrpTcH0sET^ z#w^JOqFL?WmSKE*JC1JyV1(0LDc|+j)E!LJJ9;vVZ*NEPtrEoL*ybSRp~FaM#ofCy zl5f-0j>#_yqmpGr@X&p9Wu)N(^l=+E6mlCtkF<`d-7x+h!nfuia>#C8FCx4E6edc@ zf(~t`kXkugr>L!S^epQQmE%CUYxE0;?L5yz4l1b>a_u|QcKWm3WHF>a`z+daqlEMip_8R3rH+dotnc*OrqWQArms`Or;xw~%5$rND%BB%e(qB%z1^}| z?=t6@DRjYn;uM-;M=!~gA4IKzB5PZR22LR!r7|rGLR3j)l;ZGv1?k`^+(ISk)bJ_9 zM@yBXh!8PK3OVJF&JA9LTQ=+cQ&^@!CFY)O!!r2S=WnWeCV;ma#=s39c+1sS~i5sp9PcRU1c( ztvwnxiNGyh$-ZCr$H`#3Gz&RO;sOCmUcjIsycQ zKAAl*KDR^RQd)Vn?KSY*+DdCBR%#VjOB}LS<>jSqnvtXL`8i>I=jR4quT=n^a2x>O zlPtTv=D|XWvFqyQrarm(sJr?1zBd11T~DT#0Ge48Q@3s{0o_`8gy%rN>spbZ|60iv zI44ud`evlof;s`zf7ne0X9Zlk0bNM_!8w3!)^hf?m=1rBgeGmiD{tjpY{f5^*y91n zRVK@4HrM2&g8F>1ynIWI20gcnx|UR3RmTKd>g072>biJO6*uUarB05#qzc__#Z=FG z`?{8|U|oSyHn(nXZuoZ_2UW4vop)~!xbJ;@GdjNaR-*jYLfU(8?L<#Y2DmOqAOX%6 zyQH;P3PVXa!0dLKZ$@KOWZb=|x|E04w;*l3JwhWJQ4H23Vlf5Q$Nc@cZ)s?j;1+!! zB={JQHvfohg<~^!Qwz*=NcQ^>bH~^lZNP;(xcUpGBb^ z`8bwP^aS+Y`#gJnduAV@2b8jz7uF4s^k9y?o{H?Vgl3md<*R!6=E`n;R;|zNd)(IV zlm%{{^;@5V*5|PGIcj~5Tc1^@;daZa-Lz`At=f&NcI)uMs#~hvzG`{az zD_zcu!kS6}8dI6kk}Z%zc6u4{_f@x~oovBU*6w?X+L?+X5@Luv5wL5E+UFKa$&{V3 zo?7W`Y0Z=0F7@xz$ve!?n{WljWp*D+y2Mat zS9(+Ct3-lZ&{O}hL{|JbTaX$^k(bxbkiS+ovdODvc@9JT$UcaV=)PwK4 z;i5AS{dZLa>c62PR^JVMBoy);`b<@piU@V<7i%t6fekXR%yePB_)SXebn6#dnw#Df zlh<#Sg54zIB~O-#RZz=zVOfe|MSBXE!8inQ!0lr9u}+ zV4a`WEJwBViqk4KX)TEJbG;(uX4%`NcT#Kh;5uU$lBi8bnGX8-fW5f9eEQQ*Pyg%k z<@5i3cKPbRetdR$Db=J!rMwz7vYM0k((Z1p44$GpHFIG}!LnMxG)n(iUb$OGE-H4v zlnTP4igdV`AG!>se?YrkbnmMsrK=%#pX|8>jc@H;eXG6uy8gRHubsghHok?y+%>uh zwy;ZeK;2g@4IAOxFOll{$zZc-beKq_2%Y)z1Oww9s z+B#fy=?KkG7Vj0hENA3;3J+$kwSJFy)dkiDD#&Q9=77bIHr)_!KjX>LAG_d3v@~Lo zw_7=Q7KRZ(C#;*Q4NA2h@wNWuiTW0L)tYXlMz-!eJJYwGoyomtXGXA+N=a1b*B||r z|9;^=oj@fCfeQTcD+piZ=n;Ge6l9c^ltCy#RHn|->iTE~Z1rwU5p9e83azo?*8XQk z?_K8bxA*-AOU#q7g_v=z|8>ndb?*Si69@zT>3Aa^0IHpu*t$3)rMe3c+OpmnUv<)7P z-LfjIw~_gNQUdJdI}|i7asigaV^q^icX`0e8uWHbn&YL9Qnw6Bmv zIv}&1n8P(AlFDo=6OLfhtn4IPpI;-$L1a%rItu^+vmG|;1d{X=#no!tT0;YfRn2Zj z8xbfJZbn8$R+`kmgQl>ddg+&C5s=}HjK}p!P@bWB|2cb)!$Wq$LA390VXw$1kF6#1 z^(0CSr^d`YNYxtrn1~cv$KH*>=nwKhVm{$hu&6W$>`LzFtd9mdPRIy`gBx`Ef zXzA9d`&AS5!L2Pr>JhXKODFHp+LAbA?YUm;3qD9dEN7m@2-23wd)P7Q*6Te*Zz)Eb z^YsNqt@PiGaQ*tDr<&8QisY>*D8zs!h0nk|%8P|?np~*o>4a>OcDw<{0 z9SU6|z@m?XNBJ1e`P*!9D^(;c9DqDRa8W2P3<^zMre0BYnKxB|Mk4Xf&Um35?~JDj z6dz;uZ(gcHNh?qh^S}leki^m;LG_(lC(`U78UgGO#Ce>O>y6BI!&Gvc<-!r!;R1aB zvcM~n6$e-sx`wKLF0J)v5o%-Y3!~Z^VPWXD(^a7QWqc!bhY>*wzuo6NrNS{gpYDF^ zM5LG3kS$Z@Mp#g}!fKaDRBe@j8HI~D zPdC}j*d+2I^RP#_M6bGGA%Wy=R^*=J&Jj$xS1EeD%%V#hR~oS6uBjtDtSn%i~ti$Ktt2B(%eu5LhP{unByul zcmfLI<3P-OJc5{yymN{9s-F$9vJse}}ODur!ZUOh+}j+0BCJu<7focUW?pV*zJS+*Y-4c?v|0FL@Us!)hrukK4 zUg&@7(VqPdFoK#9%Sd!w{(h~}jSYFk#J=~S-%>!gS_tkpHDNYwoiU- zPL=yP`N7Ud1L*7dd1!;~1qOysJpxSqC!+5<9reCq;v6`b`ubez_+65VDByfA3$l)u z@IiP4G%C%hC`J(p;~1_qp1m_OKD;c*0V1Ya5{7Bp^=#aA*sgHkmSXIwdGHa5fqNu{ zOPC-FvveruCZ(7FWzK^b%RIlok0XCL^95BHD)GmD)Gq?vAWyR-h=EOyoJ_Fq_dixo z#85GKYOQW91lkKha>2cmr&Q|9BV*~+%L${~p<_8fDOu@sdl$%kDz)t>+#m@kq6rXX z2KcG~)gC_zw=?QhXxSkFIY4VGhZe!uQXwZ%?+dXDLtwc!a())kg&$O*Fvg8yK&J>+*&{G8b5lB zPPI-6hlb4u5%89|iUfQ!0WN!V4C&FvH7szHTr^I^F=8vWQ`_OlgQ7GbaP%16KFs)a zrydLsAH8EUjRwG`xj%%|jYz{FHc4vwQrDSnpM&6_GvM93dCK@yj@bn+)g)0QR5=00 z?qTt%cORuu#~|sT>>@XH912S*PdSvWmEu@GuXMWIFY&TuAs&8e7g7p=3Vd!(IZBc8 za-kNh{agK=hS~_>{`X6~<|qN*5}LayphPWR#WFw(Sh~dGj%CP;oX{gTwR6XQqTH?1 zy8~uJvdna%{U8%@ZPHy=4VtuEyW?k2pm2d$8+uMzlCj3ZUR|z-eN@$`odng-6cq*P z9`)Z?Tb}<^?h;+{S%pp1^JJyrvEH310G+>3e~Rud`TO&?g7&Morwi-%Ll0|ZK-xe~0xe)4_>eg74LhvKdKG4==V7P- z#9F2?MQb;~p$95TwNg+r!{bi4rcP+;9;oEyI{O9?)2rm&%miTTGq5=f1?E>E@ys*IP5=2+w@UIm_`NH@SnInT;|R>f z${&+c+$hRDJ1%o@CnUHY>KwKIwY8^1+^SQKua5{TN_LONKJdzppT&w|#F>xxp!e>E zsXMK#O<|GSc+@FXTP9S^lTe0L!~024tF@zedbL}1I@p~XPX%63P!csHZ#Z7FpZ4?C z-8*Lb)Q8N4ou?A|2U!8MLNF#{vAfahU0mgbKHGu5eMv;$WwOY~Jz-T+U>BqtAM1e= zvd6QtZ@sgg-Jvq5QIIxHls8ui>D)gi(@FLpx5+%;ito2=u5=dFywJ}Bz23ZF#Tf^~ z)WFCPCJPf6i5J9J4EL<%VSNaw7)}f})D1zv@yk34i3ZIQo1{H+sV3)Pjhy-RkHV1P7k9>RQnEv~3qe>Gd&&Wp=p`s=^h|Ee3k>m2sHcH3CY23j$H z-G2X#^-gKN7K=|a8*Y?lIdoXpMeA)<`ZPTZhY`t!J=V{xM ze=@H|iQiv&q@jOT*aHgw>#?vEPc0#=*Lts-Q%XjZVUWgd39a8)o3HjR%cy2W)+L3% zGphX*B?ZDFTQuVO;s>!XD{kmtS`Q^tYlYh7WaN>UDSA+0$9bYc2Y?%=Oj4}sa^VA* zhYO49D}yn{AHBREzQ7#HM&5>!!p}dICd6kF`Q;y(@*uLE2sB%ds?24=wpeR6EoG^n zdmlZi8nN6zhKE{#`)&O10d+s2=n&mP zK-)NgJgQ*p;<)QcVs@2Z>Ov`d$#^WF6=lw2mrKg}AQGY=utDYZGh#DTq9M-oQBGgq zzZu-^{L(tevN1JLyLqm13Kn{4E~pMU0l*z#(*DK$=$8=KBNX==2ITYT2lL*F0@$9j zA?2bys-tH~QA!cfEh3|4|GO^wTKgJ??qFAdJFEylWuJC*W07jcDRkt?A&t#pdSN}^Qrg^n#gcI+tK79tk(OQhLmHtE%fq| z+Lr*&Q$@M7O{tAa2n<_B50=hz2sb}iC!5KU)BmB;)r}OWLSdYh1t>Nd0s4da{J{pi zdmX8uC_qWd1Sv^H5i582I(on%9kNaztee7WyHAJXv%8Zlk3+i%GCK!%FeAHhRCf2N zgN}}YB6;#L+~c%Xnd(uPMNXbOUYuoanc;{$C{z996!_~eho#lj2jjo~@;=A39_}@4 zk9#lIP=MtTz{&je7cm+I;^lbzD+;|=dcIA}OBo<&;tVUPxl|tq`|S_);7`t-?{D1U zcn&kM(*tcKCL}DXYHth&k=U50M_vk;wW19*95eS_M#> zdh=~$HogM@d@bQU`~4%eaMkw@pmTkHcRsrvI9aPBav-|n?3(ZHtpdi%aiR}R$I{(Z z?uW7GiL05zWQK2Ll z#CDVir~r@xhwI;`o}Y(LQ9SjC58%iL*1sPyWvWCjHUyKjqziR8@ug&ENKB_Le^(cQ zsVcv$D)JS$o(qZ#gy?T+BDOlTH+%_?-Z}H}Fz@t(nafu$$hN~z#o~~-q^#kL^2k@o z%?(Hd*rfn?0n9D|Uz!h@;X z`-Z~^oMn;iXL;r%zFibKr;^djqqj#xbZXDPN1L{u>Tyw!k|AFdp4fd%s6JW*Nzd|CGDwa$bPlGwmSweCQ^zk?aCQPIZXhAI$Up?Q+1zb-&)` zJGD7NDQvfQ0#EbNcKOqe;{di8>MVK8#se?%N|F$OK_bm2FL2@?xX~YZb_|W*XWkkT zK2!@DGup?o?HzeywYlQZ#Wvvn_mx$~YxucWk z(5>x(&vQqo$4GV=u(91|sX*mUrpuWrEqZ+`u!kxltToJCHwNo56!4JF9kqk)NaFBB zQM>?zPoGVP+sz7@YN;P4$rjV1H zl3Jb{cMXdi>2-|*!7R|Y7nVU-QvceTcI@o{by$l(qR8|@dM}YitT2~^!6c+w7!@7; z(!tEE0W5|EaP;>2A60i9-QCdF5m9;|IwUGt=syx5batkLrq0eL)4cfo?Cj;$BrBfF zX9=QO>$^rF+By+H+jtBj3UXjrJw>wneNV&@b)(br{ee2t{%Ge=nG@e2OybIGKj>bg zs-2xdpB8$tyrGW3;OD`i93~%8IeG^Hcd=T+5mk6qLEsl@(9|_W`nGR)OgqeRx7s3C zMMNA67#M)N#)OBTa;ts6SJxp1Cegw_^fi@)%9m30F(oKtimq~i97$TbYm zuJUbtY{GuWVPDlM+0fF~ia{)HuL}UnC(FwUfwlBASNSpGEX^>g>$vLfO??Bq5iEG? zYL+EZw!|tYSB3R4 z2XhNxLVi%%6a}UVhv#7}tislNwZVZr(f|CRo!!b7gk~0*OCb_B2opaL$elIb`Eo!H zTC-Wid7Q*?9Du5r)4`Maocm@70opme)Zp4@pc9F*0DeOfgb?8<+fNW>Xq_D@zLCm zsRu8q`5lm+_PQ6eD=f$5&C<6K9>Ro=jT7kpI5Ul&2i|nCrS|seSN!pGVG|b zy`g{SHLGxF6X5OZA%x-m5O5pSlx>60l18c2KcSk<$*8v4Bu>gD)ar3iveTTJ0XC&3 z4<2vtk~#vT^tSadypmCX*zuyk$xCVk`G>Et-tp|G-2hEWy zcvJdzmAi3h)Lm`Er;hhy6t0)!0+38aJEjEPL4J(wJ=F(;6ZkId1h!Y?h=#txE->DS zw0#&WrGKzh#c!XC%`#QKCkc*j=s6|i#ZR<$&-SHyKaD2^U~WYgkwuFoBd7Y^dgHxX z?uTY;4c`7*oxS}a^s^L*yD}?F*M;NFrR@`OZ~AIm+I*r9;9J@5vnTpm-@JVKfp5iY za{1mj^BH)Vat30bVoVf}}r zgSX|QN8GG2z`^#`t_d@r&u-9_z)vlm3~QsGaAwWcgs|MSeP%{T;f`UwYTn7pAn_e9 zjAH5mml{!iWmwnE_pSFqrUduMe&lujzpE!%Mtu3Ucqdi-m>tR)LmluQD0v+ySv2h% zw$IE_#4?)IZp6WGl=#pod0WH>7U3#tOVs&{>c5mHPem0gB8bpjJs}152Pet;l=(lj zQ>&#kOvQFPaVWwid2TBy3l(HJ{wWYwI(OX7Y+l6*wN>ktqruzhFRCs68!$x)C5_`S zC<&}_0uE_t*4oQ-C&T*@bn6XD6P%@r!t=7AjO;>=1ouYi6&J|qWkuovF1f0_j^ipc z=`atdm2G?Z2#=iVXzBB!gt;grPxuq{$T6*q$fj~ec!xX66%kY1@JEQ}p~-H-d`Ysk6r z*!s%)hI==CCDa?ShT;#rh%&)tSP<`#y9LJB>e_bka13@DO$tm=-4 zT0%^g#e7QKAQB%@8watMgt2Ys5)a{9M-`~X!o~p@VRJQR}MJd zKCfLQcimga2FRseSAxdvq%PqcBlZ>(X266>g8%e#dV6(se*VL3`U4;K&);Yr@&X4@ zrK$}JmwK>%HnY^#b4Kp1rRO>xg@!!k6R+(tX9ua04@QMk?A>`8#RP`sk>{Xq2jlkc z2cyv4b%TuHN*E*avw$e%7+tYB#T*=>RuU``N4aae1@T$=DxmSf=ug4LEGT_)) zj|jdF6?UdHER~yvW|{1^_Nd4nXIT4cHlNRa(^lfIKl&?{pI`V-9~6f`XVyEtjx9Xk zIZ3IPXTrQ#WW`kYPEk>iwd@8y^)Bq3L08xI@6mVFvG&^1PN;HvREktEbd+at2;iu; z%8yey$JxJ+qH>Pw%2<{2LtiSP=NEw!6@{$|HwB=Cjbp00Bh~9&r1h)Z|E2M&*N2__q>nlSWZlMt&R@ex|4+?@NTqDQGlc zCk~yKVjx35_&i)ILX@YS&BazdCH&xW31`C`F+S=tCbKUpm6w$;$NEi&vdP5>HJNry z;NDf*VW7L27#fnQidqddu^`%R>_v_rWGViw*7cf@`{mCVEoA^JoqzzLUxvhPV^hwf z3|H&36EQ<=^BF*eFu3c2svDEj#nwfIJ=q~}#f|KUdWQw!a{HOnZ%MbiF=wZHYYdu) z0PYlCK$t<6ITG?+OqcU_RXT6)~xV%notW;a(YNK*>p4rCG z+r=3TUq&fcaq34I?&d-eV_H5 z&sTf=gLKoZ5=|XTvf`h7JAEy#Yls2qld!Ve3!bB$izJ>e^`1 zY}-~ubv-|Cuc4iD*u7nj8Flba|I3ed)*YkO9WXj=dph9$L5HsUOu%e0ONmFVNMIP( z3j;qQ9`7{FGGKk(=ZKXvFU%%YrA~!~x3)z=xJTCt%u$S zwxjia?-A{T)W0hAixrkCit!djYzL0x0-RGTU8C8iqiS7PFKz_etbSWRPqo$N>J`VD zbFlqQ*w9S(?fm>P_Oapoev%zcWm%o9nqC}hE}91Vhgr*UG#7nbGPTc72|I?ulBf7a z2^WkM`H-?kKn&K>)o{`t_`wH@Qri!@1hSc1nAAgCA=f5qW;_b88V4w$Jh1Dcw8-H82SX+#ImYdLI@^YISza zK~BuIpJX0Lj;Zfy2*Y71=SLIvM^=w(jyeRRN=UboNs)#(z7RAQYjAwDsUIjUSa zFWgSEH%0aqRB6J7lPt=^0<1$nk9B>a&K>)8k-E>Kv(|SH-2ev}bDXx>fAAt3xu!)+ zUzr@W_rhP`54=g{*tssjntcn=yr>|L&mn?6C+u4CTh{J5m=FXyC8aF<6-=;8G{-ID zeRnCT>W=!p`uYvunhBNpq(h~rlS)fF;_#OgSeE$x%Ucz+IAdU>e*H%3-lh0@Q#+4x zR^j0x|Nd|D$x_axc)3&_mY#$^O3LXoOJ6bF(+hf#UQmx_cbtKvK2*_2NctQL@H#I> zIXF-S;094@E7XH$U=wfLcQ`-p-Gd%y_?umZwwDl!4q|qeIFB#y2nn}y-vvh?bqZ)=c6_tXuUV4Jk32pq&$nKo zMS)j2;mWR zzU26m7j9O@RC=zKFqbO4p9f;ix-!GVG+%GTbuEpDS)Mfw9+Sub-%?T^JMmv{iplFY zOY36|98g`66P;`V*2h&M{qe-G)e~ybFY#+T@sSN0B2iYy=?m-IMy&O%N>06krWZST zB5<)$?hz>(BX0Qp%Liq~MtJp8^$%xv8bFh#3d;GpSvb9cLH%@n7;YWzkNd;T`-QbK zR`so9fA;orCTKhy9jGr7ctPSgX^>$p(^vK@$A37o4p>g2=N=Rqa9Rm}VRh3p``7fJ zlS{3z^Ye5`{I{HZBxvu^Pi`@v@3&VBui%FYUZF^M6f1L-3RAC$9Y5BmXt}gsNIcBm zFka&tm%%?kGSq}v*STu@MxUInG%hcV2sET*Sco%{{G30y#&z^*st>dW`}zj3!hPyo zM<>J@zpf0CeGJ5DM&d&&7Dp%6F}dd8-RJ0|-NqWb-G8I@9zO!H z$+hD`3OJS;E%LCv=hTE4zxx~=Lvn4(hMxC}G$tRk2yNF-iCtzX|Dn(ON1vu+%8~or zeU46uHGX{rXa1uPdGy>Lur()fl!5OamZ2~8jghGjy){2xvJOz_4&IuNKH80S^Wf+H zqYruXy7@3Bc(0RgjP6ws5aAKGM8O>LSf!wyF$oMm_aA-Q*EoH@{o`1ulWsYmT{lqY zVpv7ENqu$-&QrisPXZ25@h)Mn?5?7Rpm{1pTR3u5G) zj$0RcR(BtoSB$4f?RAshJUL;PMjl1sF&pN~goA*4KzQ)@9ll*x#`_iE858%A}%{!LjU_^B% z6#;BuYO*3rY{w%gF~#HDzM+<-2S>W}J3!j@+99b&e>W7|lRdRHBIn{C_rfE2<`zWN z+C}W~*C!F_G(7T1I7Io58~MQZvQY9oX80%KkXrHV<&ug(pWUtO*F&#BhXUl}LD_!j zxHk1u9}j&SA@!b9*hR)UF%@w#$5Uj%pNztyLsw;0Y9<~f#~zwRQ{ot0vVQ{4C6Ga( zPM%x@=-u-DCL*YB)B;O_)V0${V#-fMM8kzWipV|6&{op*9h62EYZOqDhq^p@Y%5(@ z`%tB^uUr>S$4YP9t?S>f#ziUCw#KCpM0rV}E;3&!FvEV@zTt=(*J?jKWHI&9@?LZ+ zT$wH^c$o!JnY%vm%OiEG-fq@1V|MdsRPgqE%P}eNlo$D7T9j$wMsR%lhLbQvk8n6x z0qC8D`_aS!Db7ou6bmYqQVV>&AeD%TVW+j;e)e+9Ln-5JR)ANMC<`e(Ln%$KpdJ#+ zV*7@NEwco(Me0z??_?yt&wcvwl9y7`G5KO{61ge(ZYbj? z;^3X+y>ChPfc%@gdE%8JwP*Ps7X@_o< z#-LwisY|^I!HT#lrWH1_Uv)Ct)yY@0V|SCvN~DiOxk^1B^nw<2!N^kCl!M3oT>1+9 z&O`^WcXYF1JMDJET<R{@{VR#>C9!4=ksE**zaZ<2YjeqJuL*I z8u-xTTrGr;oiOuVl5uV7d)rcaTrM0@N0J?;o%Z$d-?wtVF5S9&gNWM|Ew&

NgL8 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

W#BA`%2qkpBxZxu@OwNS7h~*M3J=D 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�HH?vZOp49s$~gH959%#NLC)Uj?k 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∨DuaoBQten|mFIXYcZ&A#r*Q7P%v7ZxLar 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

  • 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%0D&62?=f)`YmYG#jB$Z_{E8oK%LIxqa~g2M-9kcr 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�r&F<_S|^) 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%0AgH4nAFB^lbf~uW*|vWz=O11y%z0`4p`>F{ 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

    Nw=>`B#35g6 zzSpT@zTP{d^K{Lf{NLW4bg~)qHpG}fYkfjr+}w45+TJDcgk`M7wodeMsJu+`mgBAT zO43)aUCmnwTPTH_iml;7?6=i5{o^-q^R;Wi<$h7312IAI(Rz8Jp4k6MY1vrAbG`WC zt&NdWXpirXFAFAwSeYODfC+NSZ&@zxD9Zr}S^hT01&eTRZmCeOY#r&et)v)!(3^U&EsTGOk0Q1yA$HV-;RJuU?@cX~tdtd7m@5h?<+>cL*e^sT5Ih=} z>glsfk*Pt7Q3|XST0n(kvm}5Q{_r#U(8I0a)< zF|>jDnZ9UV!?$Y=zTkj9(}0@Dr^6w)HCU?S-J=L!0a;TBA;!OAt7rBF_L^0LZ!GyG zN&J9@l|a=Y*cLy|v--l(o>eT&m*sq+$HYjJ`~iAn61c!!uv~X8xZV_WC8;9&r{Ik} z##ue5FF@O@79BU|U_<+9%HubU+z7rlxe2|LXrt%$#Zfb>JZxptVNwjjRFj-t1mqzr z)z9|DB%W0+ItH12U89gO5NIZY3ZWCL8iHwGOyXH36N%zzS|zC535im3LpQK1w5sRz z1>m1m*0tNh+Dd5OI`=T`y(n=we~F)o)${v8sF+oc=Sw{rsghfKO*MnH%Ji$%Vz81) zK~*JSSX!8>pYLC~Q?1^NT187}D}|#D@DS=8FQ}@%`h_`OS=XSYMElBktD(>mf=qG% zQUz4%1$_y`nDxqzv%a#u$vakbk_Ac}hgWz`gsThOGOpAMcUfoL2iq-Q(tI4+RSe|> zG&xqkxbp%xpyvo%tY3Vq#-!>Y_u-i0A0tprj0n22qi`2D!i8q>6 z+GLTS1{#*6prnBy3uaCz7=dHIJVO*EN0_f#kcdz^CUPWST3!*%Jt?!)ab?V){g9ng z{mP8hKCC5Zv|^mw&~iY)zzxuV9QC3ZogbEM9DjuQV+M=!k1T2d+xo@37hUH?MnUXi~)}h8?88j=Y$sy_aUWOt{ANV7T`|_lxOv8yOkErkXzNrQ3P8k zPQ8k(Mx>Y_vrXu#m&}kVP20iJ+6pdppySj<^48q)QOt&1zQ?Kd&%Lw!aY%>8cb-*;8U!l!I zxC0Y>+a;b$XE8pOZd|E-+gOln%ZXo~Sj`2H>h9PYPS&@#L0)XaD{H?8Aj=q8TFNgh zNW>-kU;niwg)!CSn(}M{1gjt*1}I9@YxSwxLTc_L)4RooDbCatWMd_L0J{K;UHz6B zeCed-n@{Ha>tN5_jzBNPXHpP~gkFUmrC!$;_VvloTgHepANFv!TK*5SanP=FEboSu=pfRc6)d&Arb1+lZ(|mdBM0*1qMR7`F`QvZH%oB4| zy}2(T24h91hPzHfR>?*nyp*^CEX(j=sJHYb9Ame4h%rsIGmaj4M0tV-N^~6=6)|q! zs+C4lg}7ImH0!RRIiQcPYSuA28wgH?IgM#e!aDUfBY|sboZ+W5dtF4pWo;VM&f(tK zYLkvJS3=r+0;p}DbYDfOuIuZl+LLLb>wFY>GoAOd|holSrgMJ&_WE_zu z7TFE;NYpTq##H1Q3Qf|KO$iTGG7^E;q27dndQZP4CXQ6&n`#8yovZ|9yChq)HJM!41dn*@IsqX>SG-|_;*d=;#Cfd#sNZ^Zhi@L}7Z+LPlV{5dBu~2U z;P_DQ)xt-Q?MNqG(@E1oeG_8yp17GXT1owa@|%(OP`$4&2_wwWP8Y>7?BNpL$vIrR z(?zBrp|l#pwI#B}8|N_Y)XYXX+CAO|-F0)|(H{z#ZL z4t^}$4{Cs7&tB@>!E|%6;Brz2VDYLCY0I(gLM&J2LUGu1Y@G=ApvZc-)LbYbtC9s$ zk$3=FBEt#f_a_=|G^LSTah*_Ob0ldFj9_SL94}<1vk7ojAMU7c%<-^IN4I%+OHvF6 z)pDtgdjhwBjT6F~q38j$M2dj#uZTYH8Gw2Tvs@-2_pC+&vPjKkG|y#Yr(h2)B)SJwRZT7;ZgLf8Ny?#X?;Y`#ZU-2z8Q|DFs(YI_syW=2>Ad6&Q%}Rs?}IQFEj-^7xJyI z$xhoCXlf7i9$;#!BgH2uBMHagm3kz5QlIEcsIXb=wP>oZX_+Q9E?PTYZrqO?{@q2l zJR&%9(zoN?Dq_jPFW1RjKirI+H%&(P`>p!LRW}7dzF^>PjFqbX>SS$79Q|1(ujr#d zb0LEI>%RB^gYLBTo}SgYT(eLPPa81`p_7v!IJMaz}^` zMZ*D^t|n^Eh=})*_zCt6$=f|)t#AtpgZa0^!IWJ-lrl!L9ob%A0feiC49A@#X?%S$ z6=q;1>hDHHb6Yw#BC6bKgF@&%L$ORkVTv4AsT^2E`=VmMc)YYP4|uu_ep<3vr9P+(d<&_ATbPPXuNbOQlINfMx0h2%sjna!)^lkt(L`c zMo@5IgO`UwJM-zmKWewvl!`_ccm$&F;0%(ziexI)=XWV)-q$ZP8WE!yn;S-$`lp%2 z(iOp%LD}e}=f;rrJb1BHh^6bRFN|)d&f7wXgq}B85rKzmPhJsi%O$U#^ptQ>6ooJD zR(c!9Ra4rA4vGFxiWC@~F}Lsh^Q@5u`O$4NZ>S6dy_;QrG`owJCLt;ukisV-xKRJ1 zwWcW}?ba``B~roE;|%Kw@szr3QIJ`ZY@v<+YiG?c%$>pD=+T40E@vDd$gyU~oS4F3 zfNih7q)on>Y2DFKT1|Y0WNl^M7;Z!oauR}agpe%`Fv3$`)}9ajhNHYkzveyGx6IPH z7=bTqIgLqaNSvwqH+{f`-CP(9EU88$KyzVX@8)|HVD9E_;-EF^YXQEZU%wsyU1*<| z$(oorLc4k!>UNCILMD0vR7l?W?|W)s`WfAA02U=M7-^ZodJ>Ex^;HebkGz3z&dF&? zfR^|p8h|l%MM^URY{&|dE(Dp%g-BVb{}>hIjcOb5xLn&Pla|6mz#Rb^0+>kzb{-FE#`3z@T~IBs zpGa9#xSZeQ=D23Ja>kz=dLb|nw|z+#={Swl6L%{|pJ)&MBLRM7<72UvE?nj(-9&oM zt(>02+#hxBvhE literal 0 HcmV?d00001 From 00ccb5be9db808834ce4f2f072f8fb6f0c2943d7 Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Thu, 21 Sep 2023 11:21:57 -0500 Subject: [PATCH 061/176] docs: Add note about stable branch (#479) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c21f0b6e3..e7442df37 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ### _Welcome!_ -**Please note:** This project still under active development and APIs may change until we hit v1.0. +**Please note:** This project still under active development and APIs are changing as we hit 1.0. Currently, the main branch has many breaking changes. Our current release is 0.5.x. Until we release 1.0, we are cutting these releases from the [stable](https://github.com/extism/extism/tree/stable) branch. If you're interested in working on or building with Extism, please join our [Discord](https://discord.gg/cx3usBCWnc) and let us know - we are happy to help get you started. From 8426e1a0a6134c421148565f3c0913f691c9b177 Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Thu, 21 Sep 2023 13:18:49 -0700 Subject: [PATCH 062/176] feat(build): add extism-maturin wheel builds (#480) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build the python native library along with libextism since they change at roughly the same rate; we can pull the resulting wheels into python-sdk as needed. Reduce the release job into a single matrix of `OS x RUST TARGET` – this unifies the macos, windows, and linux builds into a single job. --- **BREAKING CHANGE**: This changes the trigger for the release workflow. Instead of being triggered by the creation of a release, it is triggered by pushing new git tags. It will catch `v*` – `v0.5.0`, `v200.0.1-dev` for example. The workflow creates a draft release. --- .github/workflows/release.yml | 229 ++++++++++------------------------ Cargo.toml | 1 + extism-maturin/Cargo.toml | 14 +++ extism-maturin/build.rs | 46 +++++++ extism-maturin/pyproject.toml | 17 +++ extism-maturin/src/extism.c | 1 + extism-maturin/src/lib.rs | 1 + 7 files changed, 146 insertions(+), 163 deletions(-) create mode 100644 extism-maturin/Cargo.toml create mode 100644 extism-maturin/build.rs create mode 100644 extism-maturin/pyproject.toml create mode 100644 extism-maturin/src/extism.c create mode 100644 extism-maturin/src/lib.rs diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 30c9314d8..f735aea24 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,9 +1,9 @@ on: - release: - types: [created] workflow_dispatch: push: branches: [ main ] + tags: + - 'v*' name: Release @@ -13,91 +13,39 @@ env: RUSTFLAGS: -C target-feature=-crt-static ARTIFACT_DIR: release-artifacts +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: - release-linux: - name: linux - runs-on: ubuntu-latest + release: + name: ${{ matrix.os }} ${{ matrix.target }} + runs-on: ${{ matrix.os }}-latest strategy: matrix: - target: - [ - aarch64-unknown-linux-gnu, - aarch64-unknown-linux-musl, - x86_64-unknown-linux-gnu, - ] - # i686-unknown-linux-gnu, - if: always() - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - override: true - target: ${{ matrix.target }} - - - uses: Swatinem/rust-cache@v2 - with: - prefix-key: "linux-${{matrix.target}}" - save-if: ${{ github.ref == 'refs/heads/main' }} - cache-on-failure: "true" - - - name: Build Target (${{ matrix.target }}) - uses: actions-rs/cargo@v1 - with: - use-cross: true - command: build - args: --release --target ${{ matrix.target }} -p ${{ env.RUNTIME_CRATE }} - - - name: Prepare Artifact - run: | - EXT=so - SRC_DIR=target/${{ matrix.target }}/release - DEST_DIR=${{ env.ARTIFACT_DIR }} - RELEASE_NAME=libextism-${{ matrix.target }}-${{ github.ref_name }} - ARCHIVE=${RELEASE_NAME}.tar.gz - CHECKSUM=${RELEASE_NAME}.checksum.txt - - # compress the shared library & create checksum - cp runtime/extism.h ${SRC_DIR} - cp LICENSE ${SRC_DIR} - tar -C ${SRC_DIR} -czvf ${ARCHIVE} libextism.${EXT} extism.h - ls -ll ${ARCHIVE} - shasum -a 256 ${ARCHIVE} > ${CHECKSUM} - - # copy archive and checksum into release artifact directory - mkdir -p ${DEST_DIR} - cp ${ARCHIVE} ${DEST_DIR} - cp ${CHECKSUM} ${DEST_DIR} - - ls ${DEST_DIR} - - - name: Upload Artifact to Summary - uses: actions/upload-artifact@v3 - with: - name: ${{ env.ARTIFACT_DIR }} - path: | - *.tar.gz - *.txt - - - name: Upload Artifact to Release - uses: softprops/action-gh-release@v1 - with: - files: | - *.tar.gz - *.txt - if: startsWith(github.ref, 'refs/tags/') + include: + - os: 'macos' + target: 'x86_64-apple-darwin' + artifact: 'libextism.dylib' + - os: 'macos' + target: 'aarch64-apple-darwin' + artifact: 'libextism.dylib' + - os: 'ubuntu' + target: 'aarch64-unknown-linux-gnu' + artifact: 'libextism.so' + - os: 'ubuntu' + target: 'aarch64-unknown-linux-musl' + artifact: 'libextism.so' + - os: 'ubuntu' + target: 'x86_64-unknown-linux-gnu' + artifact: 'libextism.so' + - os: 'windows' + target: 'x86_64-pc-windows-gnu' + artifact: 'extism.dll' + - os: 'windows' + target: 'x86_64-pc-windows-msvc' + artifact: 'extism.dll' - release-macos: - name: macos - runs-on: macos-latest - strategy: - matrix: - target: [x86_64-apple-darwin, aarch64-apple-darwin] - if: always() steps: - name: Checkout uses: actions/checkout@v3 @@ -112,95 +60,45 @@ jobs: - uses: Swatinem/rust-cache@v2 with: - prefix-key: "macos-${{matrix.target}}" + prefix-key: "${{matrix.os}}-${{matrix.target}}" save-if: ${{ github.ref == 'refs/heads/main' }} cache-on-failure: "true" - - name: Build Target (${{ matrix.target }}) + - name: Build Target (${{ matrix.os }} ${{ matrix.target }}) uses: actions-rs/cargo@v1 with: - use-cross: true + use-cross: ${{ matrix.os != 'windows' }} command: build args: --release --target ${{ matrix.target }} -p ${{ env.RUNTIME_CRATE }} - - name: Prepare Artifact + - name: set extism-maturin version + shell: bash run: | - EXT=dylib - SRC_DIR=target/${{ matrix.target }}/release - DEST_DIR=${{ env.ARTIFACT_DIR }} - RELEASE_NAME=libextism-${{ matrix.target }}-${{ github.ref_name }} - ARCHIVE=${RELEASE_NAME}.tar.gz - CHECKSUM=${RELEASE_NAME}.checksum.txt + pyproject="$(cat extism-maturin/pyproject.toml)" + version="${{ github.ref }}" + if [[ "$version" = "refs/heads/main" ]]; then + version="0.0.0-dev" + else + version="${version/refs\/tags\/v/}" + fi - # compress the shared library & create checksum - cp runtime/extism.h ${SRC_DIR} - cp LICENSE ${SRC_DIR} - tar -C ${SRC_DIR} -czvf ${ARCHIVE} libextism.${EXT} extism.h - ls -ll ${ARCHIVE} - shasum -a 256 ${ARCHIVE} > ${CHECKSUM} + <<<"$pyproject" >extism-maturin/pyproject.toml sed -e 's/^version = "0.0.0-replaced-by-ci"/version = "'"$version"'"/g' - # copy archive and checksum into release artifact directory - mkdir -p ${DEST_DIR} - cp ${ARCHIVE} ${DEST_DIR} - cp ${CHECKSUM} ${DEST_DIR} - - ls ${DEST_DIR} - - - name: Upload Artifact to Summary - uses: actions/upload-artifact@v3 + - uses: actions/setup-python@v4 with: - name: ${{ env.ARTIFACT_DIR }} - path: | - *.tar.gz - *.txt + python-version: '3.10' - - name: Upload Artifact to Release - uses: softprops/action-gh-release@v1 + - name: Build wheels + uses: PyO3/maturin-action@v1 with: - files: | - *.tar.gz - *.txt - if: startsWith(github.ref, 'refs/tags/') - - release-windows: - name: windows - runs-on: windows-latest - strategy: - matrix: - target: - [x86_64-pc-windows-gnu, x86_64-pc-windows-msvc] - # i686-pc-windows-gnu, - # i686-pc-windows-msvc, - # aarch64-pc-windows-msvc - if: always() - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Rust - uses: actions-rs/toolchain@v1 - with: - toolchain: stable - profile: minimal - override: true target: ${{ matrix.target }} - - - uses: Swatinem/rust-cache@v2 - with: - prefix-key: "macos-${{matrix.target}}" - save-if: ${{ github.ref == 'refs/heads/main' }} - cache-on-failure: "true" - - - name: Build Target (${{ matrix.target }}) - uses: actions-rs/cargo@v1 - with: - command: build - args: --release --target ${{ matrix.target }} -p ${{ env.RUNTIME_CRATE }} + args: --release --out dist --find-interpreter -m extism-maturin/Cargo.toml + sccache: 'true' + manylinux: auto - name: Prepare Artifact shell: bash run: | - EXT=dll SRC_DIR=target/${{ matrix.target }}/release DEST_DIR=${{ env.ARTIFACT_DIR }} RELEASE_NAME=libextism-${{ matrix.target }}-${{ github.ref_name }} @@ -210,38 +108,42 @@ jobs: # compress the shared library & create checksum cp runtime/extism.h ${SRC_DIR} cp LICENSE ${SRC_DIR} - tar -C ${SRC_DIR} -czvf ${ARCHIVE} extism.${EXT} extism.h + tar -C ${SRC_DIR} -czvf ${ARCHIVE} ${{ matrix.artifact }} extism.h ls -ll ${ARCHIVE} - certutil -hashfile ${ARCHIVE} SHA256 >${CHECKSUM} + if &>/dev/null which shasum; then + shasum -a 256 ${ARCHIVE} > ${CHECKSUM} + else + # windows doesn't have shasum available, so we use certutil instead. + certutil -hashfile ${ARCHIVE} SHA256 >${CHECKSUM} + fi # copy archive and checksum into release artifact directory mkdir -p ${DEST_DIR} cp ${ARCHIVE} ${DEST_DIR} cp ${CHECKSUM} ${DEST_DIR} + cp dist/*.whl ${DEST_DIR} - ls ${DEST_DIR} + ls -ll ${DEST_DIR} - name: Upload Artifact to Summary uses: actions/upload-artifact@v3 with: name: ${{ env.ARTIFACT_DIR }} - path: | - *.tar.gz - *.txt + path: ${{ env.ARTIFACT_DIR }} - - name: Upload Artifact to Release + - name: Upload Artifact to Draft Release uses: softprops/action-gh-release@v1 with: + draft: true files: | - *.tar.gz - *.txt + ${{ env.ARTIFACT_DIR }}/* if: startsWith(github.ref, 'refs/tags/') release-latest: name: create latest release runs-on: ubuntu-latest - needs: [release-linux, release-macos, release-windows] + needs: [release] if: github.ref == 'refs/heads/main' steps: - uses: actions/download-artifact@v3 @@ -257,4 +159,5 @@ jobs: files: | *.tar.gz *.txt + *.whl if: github.ref == 'refs/heads/main' diff --git a/Cargo.toml b/Cargo.toml index dd38c2b7a..8505a3a3c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] members = [ + "extism-maturin", "manifest", "runtime", "libextism", diff --git a/extism-maturin/Cargo.toml b/extism-maturin/Cargo.toml new file mode 100644 index 000000000..4af66d459 --- /dev/null +++ b/extism-maturin/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "extism-sys" +version = "0.1.0" +edition = "2021" + +[lib] +name = "extism_sys" +crate-type = ["cdylib"] + +[dependencies] +extism = {path = "../runtime"} + +[build-dependencies] +cc = "1" diff --git a/extism-maturin/build.rs b/extism-maturin/build.rs new file mode 100644 index 000000000..81c19dbca --- /dev/null +++ b/extism-maturin/build.rs @@ -0,0 +1,46 @@ +fn filter_lines(line: &&str) -> bool { + let line = line.trim(); + + if line.is_empty() { + return false; + } + + let not_macro = line.chars().nth(0).unwrap() != '#'; + + if cfg!(target_os = "macos") { + return not_macro && !line.starts_with("typedef __builtin_va_list "); + } else if cfg!(target_os = "windows") { + return not_macro + && !line.starts_with("__pragma") + && !line.contains("uintptr_t") + && !line.contains("intptr_t") + && !line.contains("size_t") + && !line.contains("ptrdiff_t"); + } + + not_macro +} + +fn main() { + println!("cargo:rerun-if-changed=src/extism.c"); + println!("cargo:rerun-if-changed=../runtime/extism.h"); + + let data = String::from_utf8( + cc::Build::new() + .file("src/extism.c") + .warnings(false) + .extra_warnings(false) + .expand(), + ) + .unwrap(); + let data: Vec<&str> = data.split('\n').collect(); + let data: String = data + .into_iter() + .filter(filter_lines) + .collect::>() + .join("\n\n"); + + std::fs::create_dir_all("target").unwrap(); + std::fs::write("target/header.h", data).unwrap(); +} + diff --git a/extism-maturin/pyproject.toml b/extism-maturin/pyproject.toml new file mode 100644 index 000000000..05a758573 --- /dev/null +++ b/extism-maturin/pyproject.toml @@ -0,0 +1,17 @@ +[build-system] +requires = ["maturin>=1.1,<2.0"] +build-backend = "maturin" + +[project] +name = "extism-sys" +version = "0.0.0-replaced-by-ci" +requires-python = ">=3.7" +classifiers = [ + "Programming Language :: Rust", + "Programming Language :: Python :: Implementation :: CPython", + "Programming Language :: Python :: Implementation :: PyPy", +] +dependencies = ["cffi"] + +[tool.maturin] +bindings = "cffi" diff --git a/extism-maturin/src/extism.c b/extism-maturin/src/extism.c new file mode 100644 index 000000000..4f83e5c82 --- /dev/null +++ b/extism-maturin/src/extism.c @@ -0,0 +1 @@ +#include "../../runtime/extism.h" diff --git a/extism-maturin/src/lib.rs b/extism-maturin/src/lib.rs new file mode 100644 index 000000000..400a7423f --- /dev/null +++ b/extism-maturin/src/lib.rs @@ -0,0 +1 @@ +pub use extism::sdk::*; From be646480b9ed0a4fdffe62df2184fd56b299b0c7 Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Fri, 22 Sep 2023 12:34:47 -0700 Subject: [PATCH 063/176] fix(build): remove windows gnu wheel builds (#481) Maturin on Windows struggles with GNU headers. Since we have windows MSVC wheel builds, this commit disables windows GNU wheel builds. Also: fix a bug where the produced wheels did not include any extism functions. --- .github/workflows/release.yml | 12 +++++++-- .gitignore | 2 +- extism-maturin/build.rs | 47 +++++++++++++++++++++-------------- extism-maturin/pyproject.toml | 2 +- extism-maturin/src/extism.c | 2 +- 5 files changed, 42 insertions(+), 23 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f735aea24..64c8311f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -82,7 +82,7 @@ jobs: version="${version/refs\/tags\/v/}" fi - <<<"$pyproject" >extism-maturin/pyproject.toml sed -e 's/^version = "0.0.0-replaced-by-ci"/version = "'"$version"'"/g' + <<<"$pyproject" >extism-maturin/pyproject.toml sed -e 's/^version = "0.0.0.replaced-by-ci"/version = "'"$version"'"/g' - uses: actions/setup-python@v4 with: @@ -90,6 +90,10 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 + # maturin's cffi integration struggles with gnu headers on windows. + # there's partial work towards fixing this in `extism-maturin/build.rs`, but it's + # not sufficient to get it to work. omit it for now! + if: ${{ matrix.target != 'x86_64-pc-windows-gnu' }} with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter -m extism-maturin/Cargo.toml @@ -122,7 +126,11 @@ jobs: mkdir -p ${DEST_DIR} cp ${ARCHIVE} ${DEST_DIR} cp ${CHECKSUM} ${DEST_DIR} - cp dist/*.whl ${DEST_DIR} + + # copy any built wheels. + if [ -e dist/*.whl ]; then + cp dist/*.whl ${DEST_DIR} + fi ls -ll ${DEST_DIR} diff --git a/.gitignore b/.gitignore index 701359976..8d4811ccb 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,4 @@ java/*.iml java/*.log java/.idea java/.DS_Store - +extism-maturin/src/extism.h diff --git a/extism-maturin/build.rs b/extism-maturin/build.rs index 81c19dbca..98d4da42c 100644 --- a/extism-maturin/build.rs +++ b/extism-maturin/build.rs @@ -1,29 +1,41 @@ -fn filter_lines(line: &&str) -> bool { +use std::borrow::Cow; + +fn rewrite(line: &'_ str) -> Option> { let line = line.trim(); if line.is_empty() { - return false; + return None; } - let not_macro = line.chars().nth(0).unwrap() != '#'; + if line.starts_with('#') { + return None; + } if cfg!(target_os = "macos") { - return not_macro && !line.starts_with("typedef __builtin_va_list "); + if line.starts_with("typedef __builtin_va_list ") { + return None + } } else if cfg!(target_os = "windows") { - return not_macro - && !line.starts_with("__pragma") - && !line.contains("uintptr_t") - && !line.contains("intptr_t") - && !line.contains("size_t") - && !line.contains("ptrdiff_t"); - } - - not_macro + if line.contains("__gnuc_va_list") || + line.starts_with("__pragma") || + line.contains("__attribute__") || + line.contains("uintptr_t") || + line.contains("intptr_t") || + line.contains("size_t") || + line.contains("ptrdiff_t") { + return None + } + + return Some(Cow::Owned(line.replace("__attribute__((__cdecl__))", ""))) + }; + + Some(Cow::Borrowed(line)) } fn main() { println!("cargo:rerun-if-changed=src/extism.c"); println!("cargo:rerun-if-changed=../runtime/extism.h"); + std::fs::copy("../runtime/extism.h", "src/extism.h").unwrap(); let data = String::from_utf8( cc::Build::new() @@ -36,11 +48,10 @@ fn main() { let data: Vec<&str> = data.split('\n').collect(); let data: String = data .into_iter() - .filter(filter_lines) - .collect::>() + .filter_map(rewrite) + .collect::>>() .join("\n\n"); - std::fs::create_dir_all("target").unwrap(); - std::fs::write("target/header.h", data).unwrap(); -} + std::fs::write("../target/header.h", data).unwrap(); +} diff --git a/extism-maturin/pyproject.toml b/extism-maturin/pyproject.toml index 05a758573..6c41941a4 100644 --- a/extism-maturin/pyproject.toml +++ b/extism-maturin/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "extism-sys" -version = "0.0.0-replaced-by-ci" +version = "0.0.0+replaced-by-ci" requires-python = ">=3.7" classifiers = [ "Programming Language :: Rust", diff --git a/extism-maturin/src/extism.c b/extism-maturin/src/extism.c index 4f83e5c82..169ebf060 100644 --- a/extism-maturin/src/extism.c +++ b/extism-maturin/src/extism.c @@ -1 +1 @@ -#include "../../runtime/extism.h" +#include "extism.h" From 75a84957726c860c472ba249baa9941f67789374 Mon Sep 17 00:00:00 2001 From: zach Date: Sat, 23 Sep 2023 09:12:15 -0700 Subject: [PATCH 064/176] cleanup(runtime): remove restrictions around `memory.max_pages` option, fix crash (#482) - Removes restrictions around when `memory.max_pages` setting can be used. Before we used `wasmtime::MemoryLimiter` it was hard to determine how much was being allocated at runtime, so we used to calculate the totals statically, which required every module to have a maximum memory set at compile time. This PR allows `memory.max` to be used on any module! - Fixes a crash when the `memory.max_pages` field is set - Adds a test that checks for failure when allocating more than configured --- manifest/src/lib.rs | 6 +++ runtime/src/current_plugin.rs | 6 +-- runtime/src/plugin.rs | 97 +++++++++-------------------------- runtime/src/sdk.rs | 12 ++--- runtime/src/tests.rs | 40 +++++++++++---- 5 files changed, 69 insertions(+), 92 deletions(-) diff --git a/manifest/src/lib.rs b/manifest/src/lib.rs index 128fc85f1..7e66293d0 100644 --- a/manifest/src/lib.rs +++ b/manifest/src/lib.rs @@ -237,6 +237,12 @@ impl Manifest { self } + /// Set MemoryOptions::memory_max + pub fn with_memory_max(mut self, max: u32) -> Self { + self.memory.max_pages = Some(max); + return self; + } + /// Add a hostname to `allowed_hosts` pub fn with_allowed_host(mut self, host: impl Into) -> Self { match &mut self.allowed_hosts { diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index bf3dc3157..c5dae6307 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -37,14 +37,14 @@ impl wasmtime::ResourceLimiter for MemoryLimiter { maximum: Option, ) -> Result { if let Some(max) = maximum { - if desired > max { - return Ok(false); + if desired >= max { + return Err(Error::msg("oom")); } } let d = desired - current; if d > self.bytes_left { - return Ok(false); + return Err(Error::msg("oom")); } self.bytes_left -= d; diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 2a4764982..46feabec8 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -116,59 +116,6 @@ fn profiling_strategy() -> ProfilingStrategy { } } -fn calculate_available_memory( - available_pages: &mut Option, - modules: &BTreeMap, -) -> anyhow::Result<()> { - let available_pages = match available_pages { - Some(p) => p, - None => return Ok(()), - }; - - let max_pages = *available_pages; - let mut fail_memory_check = false; - let mut total_memory_needed = 0; - for (name, module) in modules.iter() { - if name == "env" { - continue; - } - let mut memories = 0; - for export in module.exports() { - if let Some(memory) = export.ty().memory() { - memories += 1; - let memory_max = memory.maximum(); - match memory_max { - None => anyhow::bail!("Unbounded memory in module {name}, when `memory.max_pages` is set in the manifest all modules \ - must have a maximum bound set on an exported memory"), - Some(m) => { - total_memory_needed += m; - if !fail_memory_check { - continue; - } - - *available_pages = available_pages.saturating_sub(m as u32); - if *available_pages == 0 { - fail_memory_check = true; - } - } - } - } - } - - if memories == 0 { - anyhow::bail!("No memory exported from module {name}, when `memory.max_pages` is set in the manifest all modules must \ - have a maximum bound set on an exported memory"); - } - } - - if fail_memory_check { - anyhow::bail!("Not enough memory configured to run the provided plugin, `memory.max_pages` is set to {max_pages} in the manifest \ - but {total_memory_needed} pages are needed by the plugin"); - } - - Ok(()) -} - // Raise an error when the epoch deadline is encountered - this is used for timeout/cancellation // to stop a plugin that is executing fn deadline_callback(_: StoreContextMut) -> Result { @@ -205,11 +152,7 @@ impl Plugin { let mut imports = imports.into_iter(); let (manifest, modules) = manifest::load(&engine, wasm.as_ref())?; - // Calculate how much memory is available based on the value of `max_pages` and the exported - // memory of the modules. An error will be returned if a module doesn't have an exported memory - // or there is no maximum set for a module's exported memory. - let mut available_pages = manifest.memory.max_pages; - calculate_available_memory(&mut available_pages, &modules)?; + let available_pages = manifest.memory.max_pages; log::trace!("Available pages: {available_pages:?}"); let mut store = Store::new( @@ -219,9 +162,6 @@ impl Plugin { store.set_epoch_deadline(1); - if available_pages.is_some() { - store.limiter(|internal| internal.memory_limiter.as_mut().unwrap()); - } let mut linker = Linker::new(&engine); linker.allow_shadowing(true); @@ -313,6 +253,11 @@ impl Plugin { plugin.current_plugin_mut().store = &mut plugin.store; plugin.current_plugin_mut().linker = &mut plugin.linker; + if available_pages.is_some() { + plugin + .store + .limiter(|internal| internal.memory_limiter.as_mut().unwrap()); + } Ok(plugin) } @@ -334,8 +279,12 @@ impl Plugin { ); self.store.set_epoch_deadline(1); - - if self.current_plugin().available_pages.is_some() { + let store = &mut self.store as *mut _; + let linker = &mut self.linker as *mut _; + let current_plugin = self.current_plugin_mut(); + current_plugin.store = store; + current_plugin.linker = linker; + if current_plugin.available_pages.is_some() { self.store .limiter(|internal| internal.memory_limiter.as_mut().unwrap()); } @@ -356,12 +305,6 @@ impl Plugin { } self.instantiations = 0; self.instance_pre = self.linker.instantiate_pre(main)?; - - let store = &mut self.store as *mut _; - let linker = &mut self.linker as *mut _; - let current_plugin = self.current_plugin_mut(); - current_plugin.store = store; - current_plugin.linker = linker; } **instance_lock = None; @@ -665,8 +608,9 @@ impl Plugin { return Ok(0); } Err(e) => { - if e.root_cause().to_string() == "timeout" { - return Err((Error::msg("timeout"), -1)); + let cause = e.root_cause().to_string(); + if cause == "timeout" || cause == "oom" { + return Err((Error::msg(cause), -1)); } error!("Call: {e:?}"); @@ -719,7 +663,16 @@ impl Plugin { } // A convenience method to set the plugin error and return a value - pub(crate) fn return_error(&mut self, e: impl std::fmt::Debug, x: E) -> E { + pub(crate) fn return_error( + &mut self, + instance_lock: &mut std::sync::MutexGuard>, + e: impl std::fmt::Debug, + x: E, + ) -> E { + if instance_lock.is_none() { + error!("No instance, unable to set error: {:?}", e); + return x; + } let s = format!("{e:?}"); debug!("Set error: {:?}", s); match self.current_plugin_mut().memory_new(&s) { diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index 1113a6045..c51669275 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -341,7 +341,7 @@ pub unsafe extern "C" fn extism_plugin_config( } let plugin = &mut *plugin; let _lock = plugin.instance.clone(); - let _lock = _lock.lock().unwrap(); + let mut lock = _lock.lock().unwrap(); trace!( "Call to extism_plugin_config for {} with json pointer {:?}", @@ -353,7 +353,7 @@ pub unsafe extern "C" fn extism_plugin_config( match serde_json::from_slice(data) { Ok(x) => x, Err(e) => { - return plugin.return_error(e, false); + return plugin.return_error(&mut lock, e, false); } }; @@ -400,7 +400,7 @@ pub unsafe extern "C" fn extism_plugin_function_exists( } let plugin = &mut *plugin; let _lock = plugin.instance.clone(); - let _lock = _lock.lock().unwrap(); + let mut lock = _lock.lock().unwrap(); let name = std::ffi::CStr::from_ptr(func_name); trace!("Call to extism_plugin_function_exists for: {:?}", name); @@ -408,7 +408,7 @@ pub unsafe extern "C" fn extism_plugin_function_exists( let name = match name.to_str() { Ok(x) => x, Err(e) => { - return plugin.return_error(e, false); + return plugin.return_error(&mut lock, e, false); } }; @@ -439,7 +439,7 @@ pub unsafe extern "C" fn extism_plugin_call( let name = std::ffi::CStr::from_ptr(func_name); let name = match name.to_str() { Ok(name) => name, - Err(e) => return plugin.return_error(e, -1), + Err(e) => return plugin.return_error(&mut lock, e, -1), }; trace!("Calling function {} of plugin {}", name, plugin.id); @@ -447,7 +447,7 @@ pub unsafe extern "C" fn extism_plugin_call( let res = plugin.raw_call(&mut lock, name, input); match res { - Err((e, rc)) => plugin.return_error(e, rc), + Err((e, rc)) => plugin.return_error(&mut lock, e, rc), Ok(x) => x, } } diff --git a/runtime/src/tests.rs b/runtime/src/tests.rs index d3417c601..5716b89b5 100644 --- a/runtime/src/tests.rs +++ b/runtime/src/tests.rs @@ -2,6 +2,7 @@ use super::*; use std::time::Instant; const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); +const WASM_NO_FUNCTIONS: &[u8] = include_bytes!("../../wasm/code.wasm"); const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); const WASM_REFLECT: &[u8] = include_bytes!("../../wasm/reflect.wasm"); @@ -209,10 +210,11 @@ fn test_timeout() { let mut plugin = Plugin::new_with_manifest(&manifest, [f], true).unwrap(); let start = std::time::Instant::now(); - let _output: Result<&[u8], Error> = plugin.call("infinite_loop", "abc123"); + let output: Result<&[u8], Error> = plugin.call("infinite_loop", "abc123"); let end = std::time::Instant::now(); let time = end - start; println!("Timed out plugin ran for {:?}", time); + assert!(output.unwrap_err().root_cause().to_string() == "timeout"); // std::io::stdout().write_all(output).unwrap(); } @@ -272,19 +274,11 @@ fn test_globals() { #[test] fn test_toml_manifest() { - let f = Function::new( - "hello_world", - [ValType::I64], - [ValType::I64], - None, - hello_world, - ); - - let manifest = Manifest::new([extism_manifest::Wasm::data(WASM)]) + let manifest = Manifest::new([extism_manifest::Wasm::data(WASM_NO_FUNCTIONS)]) .with_timeout(std::time::Duration::from_secs(1)); let manifest_toml = toml::to_string_pretty(&manifest).unwrap(); - let mut plugin = Plugin::new(manifest_toml.as_bytes(), [f], true).unwrap(); + let mut plugin = Plugin::new(manifest_toml.as_bytes(), [], true).unwrap(); let output = plugin.call("count_vowels", "abc123").unwrap(); let count: serde_json::Value = serde_json::from_slice(output).unwrap(); @@ -311,3 +305,27 @@ fn test_fuzz_reflect_plugin() { assert_eq!(output, input); } } + +#[test] +fn test_memory_max() { + // Should fail with memory.max set + let manifest = + Manifest::new([extism_manifest::Wasm::data(WASM_NO_FUNCTIONS)]).with_memory_max(16); + let mut plugin = Plugin::new_with_manifest(&manifest, [], true).unwrap(); + let output: Result = plugin.call("count_vowels", "a".repeat(65536 * 2)); + assert!(output.is_err()); + assert!(output.unwrap_err().root_cause().to_string() == "oom"); + + // Should pass with memory.max set to a large enough number + let manifest = + Manifest::new([extism_manifest::Wasm::data(WASM_NO_FUNCTIONS)]).with_memory_max(17); + let mut plugin = Plugin::new_with_manifest(&manifest, [], true).unwrap(); + let output: Result = plugin.call("count_vowels", "a".repeat(65536 * 2)); + assert!(output.is_ok()); + + // Should pass without it + let manifest = Manifest::new([extism_manifest::Wasm::data(WASM_NO_FUNCTIONS)]); + let mut plugin = Plugin::new_with_manifest(&manifest, [], true).unwrap(); + let output: Result = plugin.call("count_vowels", "a".repeat(65536 * 2)); + assert!(output.is_ok()); +} From 08db39c153eb107ddf44754431d42ff3cbf361dd Mon Sep 17 00:00:00 2001 From: zach Date: Sat, 23 Sep 2023 09:12:54 -0700 Subject: [PATCH 065/176] chore: bump wasmtime lower bound to 13.0.0, remove wasi-nn support (#483) - Updates to wasmtime 13.0.0 as the lowest supported version - Removes `wasmtime-wasi-nn` support because it now takes parameters to specify particular backends and registries during initialization. Since I don't think anyone is using the `nn` feature I chose to remove it for now, but we could also expand the manifest to add these options. --- libextism/Cargo.toml | 1 - runtime/Cargo.toml | 6 ++---- runtime/src/current_plugin.rs | 15 ++++----------- runtime/src/internal.rs | 4 ---- runtime/src/plugin.rs | 6 +----- 5 files changed, 7 insertions(+), 25 deletions(-) diff --git a/libextism/Cargo.toml b/libextism/Cargo.toml index c31f0b5e2..a640c72e6 100644 --- a/libextism/Cargo.toml +++ b/libextism/Cargo.toml @@ -18,7 +18,6 @@ extism = {path = "../runtime"} [features] default = ["http", "register-http", "register-filesystem"] -nn = ["extism/nn"] register-http = ["extism/register-http"] # enables wasm to be downloaded using http register-filesystem = ["extism/register-filesystem"] # enables wasm to be loaded from disk http = ["extism/http"] # enables extism_http_request diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 36f5a9b22..e8e1ff985 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,9 +9,8 @@ repository = "https://github.com/extism/extism" description = "Extism runtime and Rust SDK" [dependencies] -wasmtime = ">= 10.0.0, < 13.0.0" -wasmtime-wasi = ">= 10.0.0, < 13.0.0" -wasmtime-wasi-nn = {version = ">= 10.0.0, < 13.0.0", optional=true} +wasmtime = ">= 13.0.0, < 14.0.0" +wasmtime-wasi = ">= 13.0.0, < 14.0.0" anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" @@ -29,7 +28,6 @@ libc = "0.2" [features] default = ["http", "register-http", "register-filesystem"] -nn = ["wasmtime-wasi-nn"] register-http = ["ureq"] # enables wasm to be downloaded using http register-filesystem = [] # enables wasm to be loaded from disk http = ["ureq"] # enables extism_http_request diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index c5dae6307..62786bcca 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -202,29 +202,22 @@ impl CurrentPlugin { let auth = wasmtime_wasi::ambient_authority(); let mut ctx = wasmtime_wasi::WasiCtxBuilder::new(); for (k, v) in manifest.config.iter() { - ctx = ctx.env(k, v)?; + ctx.env(k, v)?; } if let Some(a) = &manifest.allowed_paths { for (k, v) in a.iter() { let d = wasmtime_wasi::Dir::open_ambient_dir(k, auth)?; - ctx = ctx.preopened_dir(d, v)?; + ctx.preopened_dir(d, v)?; } } // Enable WASI output, typically used for debugging purposes if std::env::var("EXTISM_ENABLE_WASI_OUTPUT").is_ok() { - ctx = ctx.inherit_stdout().inherit_stderr(); + ctx.inherit_stdout().inherit_stderr(); } - #[cfg(feature = "nn")] - let nn = wasmtime_wasi_nn::WasiNnCtx::new()?; - - Some(Wasi { - ctx: ctx.build(), - #[cfg(feature = "nn")] - nn, - }) + Some(Wasi { ctx: ctx.build() }) } else { None }; diff --git a/runtime/src/internal.rs b/runtime/src/internal.rs index 1d7990530..b0e4aa15d 100644 --- a/runtime/src/internal.rs +++ b/runtime/src/internal.rs @@ -4,10 +4,6 @@ use crate::*; pub struct Wasi { /// wasi pub ctx: wasmtime_wasi::WasiCtx, - - /// wasi-nn - #[cfg(feature = "nn")] - pub nn: wasmtime_wasi_nn::WasiNnCtx, } /// InternalExt provides a unified way of acessing `memory`, `store` and `internal` values diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 46feabec8..3a2feab59 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -170,12 +170,8 @@ impl Plugin { wasmtime_wasi::add_to_linker(&mut linker, |x: &mut CurrentPlugin| { &mut x.wasi.as_mut().unwrap().ctx })?; - - #[cfg(feature = "nn")] - wasmtime_wasi_nn::add_to_linker(&mut linker, |x: &mut CurrentPlugin| { - &mut x.wasi.as_mut().unwrap().nn - })?; } + // Get the `main` module, or the last one if `main` doesn't exist let (main_name, main) = modules.get("main").map(|x| ("main", x)).unwrap_or_else(|| { let entry = modules.iter().last().unwrap(); From 4c9dc6f6e4549d5ad751e469febb056d554c9b2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:04:00 -0500 Subject: [PATCH 066/176] chore(deps): Update ffi requirement from ~> 1.15.5 to ~> 1.16.1 in /ruby (#485) Updates the requirements on [ffi](https://github.com/ffi/ffi) to permit the latest version.

    Commits
    • 0e9a39b Bump VERSION to 1.16.1
    • d0723fe Add ffi-1.16.1 to CHANGELOG
    • ce6f419 Add another autoconf generated file
    • 8e93ab2 Update release date for ffi-1.16.0
    • 926c001 Bump VERSION to 1.16.0
    • 688f2c8 Update rake clean to remove mingw-ucrt directories as well
    • 10206ec Exclude ruby-2.4 from cross build
    • f262463 Add two more items to CHANGELOG
    • e942056 Merge pull request #1048 from larskanis/enable-debug
    • c5c59ae Use debugflags from RbConfig instead of hardcoded gcc options
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- ruby/Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruby/Gemfile b/ruby/Gemfile index 1a2485976..8ec97d023 100644 --- a/ruby/Gemfile +++ b/ruby/Gemfile @@ -5,7 +5,7 @@ source 'https://rubygems.org' # Specify your gem's dependencies in extism.gemspec gemspec -gem 'ffi', '~> 1.15.5' +gem 'ffi', '~> 1.16.1' gem 'rake', '~> 13.0' group :development do From 583befbaef21c1dbcd90f032cbc966b9256a472f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:04:10 -0500 Subject: [PATCH 067/176] chore(deps-dev): Bump @types/node from 20.6.2 to 20.6.5 in /node (#484) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.6.2 to 20.6.5.
    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.6.2&new-version=20.6.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index eb3cabb46..94b078ffa 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1159,9 +1159,9 @@ } }, "node_modules/@types/node": { - "version": "20.6.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz", - "integrity": "sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw==" + "version": "20.6.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.5.tgz", + "integrity": "sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==" }, "node_modules/@types/ref-array-di": { "version": "1.2.5", From d994f081f9a9d9117f7eb56abf62ce38290b6e76 Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 4 Oct 2023 12:35:43 -0700 Subject: [PATCH 068/176] chore: prepare `extism-convert` to be released (#494) --- .github/workflows/ci-rust.yml | 1 + .github/workflows/release-convert.yaml | 26 +++++++++++++++++++++++ .github/workflows/release-manifest.yaml | 26 +++++++++++++++++++++++ .github/workflows/release-rust.yaml | 28 ++++--------------------- convert/Cargo.toml | 7 +++++-- 5 files changed, 62 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/release-convert.yaml create mode 100644 .github/workflows/release-manifest.yaml diff --git a/.github/workflows/ci-rust.yml b/.github/workflows/ci-rust.yml index 94fc5d522..d211358b5 100644 --- a/.github/workflows/ci-rust.yml +++ b/.github/workflows/ci-rust.yml @@ -3,6 +3,7 @@ on: paths: - .github/actions/extism/** - .github/workflows/ci-rust.yml + - convert/** - manifest/** - runtime/** - rust/** diff --git a/.github/workflows/release-convert.yaml b/.github/workflows/release-convert.yaml new file mode 100644 index 000000000..c364439f7 --- /dev/null +++ b/.github/workflows/release-convert.yaml @@ -0,0 +1,26 @@ +on: + workflow_dispatch: + +name: Release extism-convert + +jobs: + release-convert: + name: release-extism-convert + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Rust env + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + target: ${{ matrix.target }} + + - name: Release Rust Convert Crate + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} + run: | + cargo publish --manifest-path convert/Cargo.toml diff --git a/.github/workflows/release-manifest.yaml b/.github/workflows/release-manifest.yaml new file mode 100644 index 000000000..a4204b265 --- /dev/null +++ b/.github/workflows/release-manifest.yaml @@ -0,0 +1,26 @@ +on: + workflow_dispatch: + +name: Release Rust SDK + +jobs: + release-manifest: + name: release-extism-manifest + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Rust env + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + target: ${{ matrix.target }} + + - name: Release Rust Manifest Crate + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} + run: | + cargo publish --manifest-path manifest/Cargo.toml diff --git a/.github/workflows/release-rust.yaml b/.github/workflows/release-rust.yaml index 319024891..f4067afb1 100644 --- a/.github/workflows/release-rust.yaml +++ b/.github/workflows/release-rust.yaml @@ -1,16 +1,16 @@ on: workflow_dispatch: -name: Release Rust SDK +name: Release Runtime/Rust SDK jobs: - release-sdks: + release-runtime: name: release-rust runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - + - name: Setup Rust env uses: actions-rs/toolchain@v1 with: @@ -19,28 +19,8 @@ jobs: override: true target: ${{ matrix.target }} - - name: Release Rust Manifest Crate - env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} - run: | - # order of crate publication matter: manifest, convert, runtime - cargo publish --manifest-path manifest/Cargo.toml - # allow for crates.io to update so dependant crates can locate extism-manifest - sleep 10 - - - name: Release Rust Convert Crate - env: - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} - run: | - # order of crate publication matter: manifest, convert, rust - cargo publish --manifest-path convert/Cargo.toml - # allow for crates.io to update so dependant crates can locate extism-convert - sleep 10 - - name: Release Runtime env: CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_API_TOKEN }} run: | - cargo publish --manifest-path runtime/Cargo.toml --no-verify - - + cargo publish --manifest-path runtime/Cargo.toml diff --git a/convert/Cargo.toml b/convert/Cargo.toml index d097bd4d5..d01fb7757 100644 --- a/convert/Cargo.toml +++ b/convert/Cargo.toml @@ -2,8 +2,11 @@ name = "extism-convert" version = "0.1.0" edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +authors = ["The Extism Authors", "oss@extism.org"] +license = "BSD-3-Clause" +homepage = "https://extism.org" +repository = "https://github.com/extism/extism" +description = "Traits to make Rust types usable with Extism" [dependencies] anyhow = "1.0.75" From e7ffc1dd6bfefeebc08fb0c4d29aca2a3d0bac2a Mon Sep 17 00:00:00 2001 From: zach Date: Wed, 4 Oct 2023 12:37:29 -0700 Subject: [PATCH 069/176] ci: fix name --- .github/workflows/release-manifest.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-manifest.yaml b/.github/workflows/release-manifest.yaml index a4204b265..d542664fd 100644 --- a/.github/workflows/release-manifest.yaml +++ b/.github/workflows/release-manifest.yaml @@ -1,7 +1,7 @@ on: workflow_dispatch: -name: Release Rust SDK +name: Release extism-manifest jobs: release-manifest: From bc56d7303a938170cf74d4860cae49ad23e6a451 Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Wed, 4 Oct 2023 16:33:54 -0500 Subject: [PATCH 070/176] docs: Add readme, bump convert crate (#495) Co-authored-by: zach --- convert/Cargo.toml | 3 ++- convert/README.md | 12 ++++++++++++ convert/src/lib.rs | 2 +- runtime/Cargo.toml | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 convert/README.md diff --git a/convert/Cargo.toml b/convert/Cargo.toml index d01fb7757..d12ee0e8b 100644 --- a/convert/Cargo.toml +++ b/convert/Cargo.toml @@ -1,9 +1,10 @@ [package] name = "extism-convert" -version = "0.1.0" +version = "0.2.0" edition = "2021" authors = ["The Extism Authors", "oss@extism.org"] license = "BSD-3-Clause" +readme = "./README.md" homepage = "https://extism.org" repository = "https://github.com/extism/extism" description = "Traits to make Rust types usable with Extism" diff --git a/convert/README.md b/convert/README.md new file mode 100644 index 000000000..284a4d514 --- /dev/null +++ b/convert/README.md @@ -0,0 +1,12 @@ +# extism-convert + +The [extism-convert](https://crates.io/crates/extism-convert) crate is used by the [Rust SDK](https://crates.io/crates/extism) and [Rust PDK](https://crates.io/crates/extism-pdk) to provide a shared interface for +encoding and decoding values that can be passed to Extism function calls. + +A set of types (Json, Msgpack, Protobuf) that can be used to specify a serde encoding are also provided. These are +similar to [axum extractors](https://docs.rs/axum/latest/axum/extract/index.html#intro) - they are +implemented as a tuple struct with a single field that is meant to be extracted using pattern matching. + +## Documentation + +See [extism-convert on docs.rs](https://docs.rs/extism-convert/latest/extism_convert/) for in-depth documentation. diff --git a/convert/src/lib.rs b/convert/src/lib.rs index 6a568b469..53c88de28 100644 --- a/convert/src/lib.rs +++ b/convert/src/lib.rs @@ -1,4 +1,4 @@ -//! The `extism-convert` crate is used by the SDK and PDK to provide a shared interface for +//! The [extism-convert](https://crates.io/crates/extism-convert) crate is used by the [Rust SDK](https://crates.io/crates/extism) and [Rust PDK](https://crates.io/crates/extism-pdk) to provide a shared interface for //! encoding and decoding values that can be passed to Extism function calls. //! //! A set of types (Json, Msgpack) that can be used to specify a serde encoding are also provided. These are diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index e8e1ff985..e6715b03c 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -22,7 +22,7 @@ url = "2" glob = "0.3" ureq = {version = "2.5", optional=true} extism-manifest = { version = "1.0.0-alpha.0", path = "../manifest" } -extism-convert = { version = "0.1", path = "../convert" } +extism-convert = { version = "0.2", path = "../convert" } uuid = { version = "1", features = ["v4"] } libc = "0.2" From 703cacda91ae1ad6469eda91e21a73ebd3b85f5a Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Thu, 5 Oct 2023 15:53:13 -0700 Subject: [PATCH 071/176] v0.5.3 From 59e8335f17c484da77a06bc98b6441da02c29e51 Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Thu, 5 Oct 2023 16:32:34 -0700 Subject: [PATCH 072/176] feat(build): GHA release-python now releases extism_sys packages (#498) This changes the workflow slightly: whenever we publish a draft release, download our `*.whl` assets from that release and publish them to PyPI. --- .github/workflows/release-python.yaml | 48 +++++++++++++++------------ 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/.github/workflows/release-python.yaml b/.github/workflows/release-python.yaml index 3742d6350..21dec6c57 100644 --- a/.github/workflows/release-python.yaml +++ b/.github/workflows/release-python.yaml @@ -1,8 +1,9 @@ -on: - workflow_dispatch: - name: Release Python SDK +on: + release: + types: [published, edited] + jobs: release-sdks: name: release-python @@ -11,26 +12,31 @@ jobs: - name: Checkout uses: actions/checkout@v3 - - name: Setup Python env - uses: actions/setup-python@v4 + - name: Install poetry + run: pipx install poetry + + - uses: actions/setup-python@v4 with: - python-version: "3.9" - check-latest: true - - name: Run image - uses: abatilo/actions-poetry@v2 + python-version: '3.10' + cache: 'poetry' - - name: Build Python Host SDK + - name: install twine run: | - cd python - cp ../LICENSE . - make clean - poetry install --no-dev - poetry build + pip install twine - - name: Release Python Host SDK - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: ${{ secrets.PYPI_API_USER }} - password: ${{ secrets.PYPI_API_TOKEN }} - packages_dir: python/dist/ + - name: download release + run: | + tag='${{ github.ref }}' + tag="${tag/refs\/tags\//}" + mkdir dist + cd dist + gh release download "$tag" -p 'extism_sys-*' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: upload release + run: | + twine upload dist/* + env: + TWINE_USERNAME: ${{ secrets.PYPI_API_USER }} + TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} From 64fd246b7319a933d38164a6783e2c1d0f0adcba Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 10 Oct 2023 16:15:18 -0700 Subject: [PATCH 073/176] feat: kernel hardening (#499) - Kernel-specific tests - Add bounds checking to the kernel, which can toggled using the `bounds-checking` feature - Next week I will do some benchmarking to determine the runtime performance impact of bounds checking and can consider if it should be relaxed for certain operations (mainly stores/loads) --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- kernel/Cargo.toml | 4 + kernel/src/lib.rs | 84 +++++- runtime/src/extism-runtime.wasm | Bin 2679 -> 4499 bytes runtime/src/tests/kernel.rs | 298 +++++++++++++++++++++ runtime/src/tests/mod.rs | 2 + runtime/src/{tests.rs => tests/runtime.rs} | 12 +- 6 files changed, 380 insertions(+), 20 deletions(-) create mode 100644 runtime/src/tests/kernel.rs create mode 100644 runtime/src/tests/mod.rs rename runtime/src/{tests.rs => tests/runtime.rs} (96%) diff --git a/kernel/Cargo.toml b/kernel/Cargo.toml index b2bef0bde..868720c62 100644 --- a/kernel/Cargo.toml +++ b/kernel/Cargo.toml @@ -5,6 +5,10 @@ edition = "2021" [dependencies] +[features] +default = ["bounds-checking"] +bounds-checking = [] + [workspace] members = [ "." diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index e055d603b..3b815413f 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -98,7 +98,7 @@ pub enum MemoryStatus { /// including their data. #[repr(C)] pub struct MemoryRoot { - /// Position of the bump allocator, relative to `START_PAGE` + /// Position of the bump allocator, relative to `blocks` field pub position: AtomicU64, /// The total size of all data allocated using this allocator pub length: AtomicU64, @@ -183,6 +183,12 @@ impl MemoryRoot { self.position.store(0, Ordering::Release); } + #[inline(always)] + fn pointer_in_bounds(&self, p: Pointer) -> bool { + let start_ptr = self.blocks.as_ptr() as Pointer; + p >= start_ptr && p < start_ptr + self.length.load(Ordering::Acquire) as Pointer + } + // Find a block that is free to use, this can be a new block or an existing freed block. The `self_position` argument // is used to avoid loading the allocators position more than once when performing an allocation. unsafe fn find_free_block( @@ -267,7 +273,7 @@ impl MemoryRoot { // Bump the position by the size of the actual data + the size of the MemoryBlock structure self.position.fetch_add( - length + core::mem::size_of::() as u64, + length + core::mem::size_of::() as u64 - 1, Ordering::SeqCst, ); @@ -284,7 +290,9 @@ impl MemoryRoot { /// Finds the block at an offset in memory pub unsafe fn find_block(&mut self, offs: Pointer) -> Option<&mut MemoryBlock> { - if offs >= self.blocks.as_ptr() as Pointer + self.length.load(Ordering::Acquire) as Pointer + let blocks_start = self.blocks.as_ptr() as Pointer; + if offs < blocks_start + || offs >= blocks_start + self.length.load(Ordering::Acquire) as Pointer { return None; } @@ -338,6 +346,12 @@ pub unsafe fn extism_free(p: Pointer) { let block = MemoryRoot::new().find_block(p); if let Some(block) = block { block.free(); + + // If the input pointer is freed for some reason, make sure the input length to 0 + // since the original data is gone + if p == INPUT_OFFSET { + INPUT_LENGTH = 0; + } } } @@ -357,57 +371,89 @@ pub unsafe fn extism_length(p: Pointer) -> Length { /// Load a byte from Extism-managed memory #[no_mangle] pub unsafe fn extism_load_u8(p: Pointer) -> u8 { + #[cfg(feature = "bounds-checking")] + if !MemoryRoot::new().pointer_in_bounds(p) { + return 0; + } *(p as *mut u8) } /// Load a u64 from Extism-managed memory #[no_mangle] pub unsafe fn extism_load_u64(p: Pointer) -> u64 { + #[cfg(feature = "bounds-checking")] + if !MemoryRoot::new().pointer_in_bounds(p + core::mem::size_of::() as Pointer - 1) { + return 0; + } *(p as *mut u64) } /// Load a byte from the input data #[no_mangle] pub unsafe fn extism_input_load_u8(p: Pointer) -> u8 { + #[cfg(feature = "bounds-checking")] + if p >= INPUT_LENGTH { + return 0; + } *((INPUT_OFFSET + p) as *mut u8) } /// Load a u64 from the input data #[no_mangle] pub unsafe fn extism_input_load_u64(p: Pointer) -> u64 { + #[cfg(feature = "bounds-checking")] + if p + core::mem::size_of::() as Pointer > INPUT_LENGTH { + return 0; + } *((INPUT_OFFSET + p) as *mut u64) } /// Write a byte in Extism-managed memory #[no_mangle] pub unsafe fn extism_store_u8(p: Pointer, x: u8) { + #[cfg(feature = "bounds-checking")] + if !MemoryRoot::new().pointer_in_bounds(p) { + return; + } *(p as *mut u8) = x; } /// Write a u64 in Extism-managed memory #[no_mangle] pub unsafe fn extism_store_u64(p: Pointer, x: u64) { - unsafe { - *(p as *mut u64) = x; + #[cfg(feature = "bounds-checking")] + if !MemoryRoot::new().pointer_in_bounds(p) { + return; } + *(p as *mut u64) = x; } /// Set the range of the input data in memory #[no_mangle] -pub fn extism_input_set(p: Pointer, len: Length) { - unsafe { - INPUT_OFFSET = p; - INPUT_LENGTH = len; +pub unsafe fn extism_input_set(p: Pointer, len: Length) { + #[cfg(feature = "bounds-checking")] + { + let root = MemoryRoot::new(); + if !root.pointer_in_bounds(p) || !root.pointer_in_bounds(p + len - 1) { + return; + } } + INPUT_OFFSET = p; + INPUT_LENGTH = len; } /// Set the range of the output data in memory #[no_mangle] -pub fn extism_output_set(p: Pointer, len: Length) { - unsafe { - OUTPUT_OFFSET = p; - OUTPUT_LENGTH = len; +pub unsafe fn extism_output_set(p: Pointer, len: Length) { + #[cfg(feature = "bounds-checking")] + { + let root = MemoryRoot::new(); + if !root.pointer_in_bounds(p) || !root.pointer_in_bounds(p + len - 1) { + return; + } } + OUTPUT_OFFSET = p; + OUTPUT_LENGTH = len; } /// Get the input length @@ -444,6 +490,16 @@ pub unsafe fn extism_reset() { /// Set the error message offset #[no_mangle] pub unsafe fn extism_error_set(ptr: Pointer) { + // Allow ERROR to be set to 0 + if ptr == 0 { + ERROR.store(ptr, Ordering::SeqCst); + return; + } + + #[cfg(feature = "bounds-checking")] + if !MemoryRoot::new().pointer_in_bounds(ptr) { + return; + } ERROR.store(ptr, Ordering::SeqCst); } @@ -456,5 +512,5 @@ pub unsafe fn extism_error_get() -> Pointer { /// Get the position of the allocator, this can be used as an indication of how many bytes are currently in-use #[no_mangle] pub unsafe fn extism_memory_bytes() -> Length { - MemoryRoot::new().position.load(Ordering::Acquire) + MemoryRoot::new().length.load(Ordering::Acquire) } diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index 12043bc383310cf81b232c90c394497754894dda..bea460822a14cd0ebb1a93879a30a1a7dfd9ecf9 100755 GIT binary patch delta 1213 zcmcgrJ!=$E6utMpnca!AffZI>_=bU%Wd0!i5dXM4 zyR(Dq>H^k)eXiVzZzU03F|WKnhUTh&qS_~-6c@}xe~*gcta<6bxJJ6(dmbrbb4ZA*i6G|4{`oB%{Di&ShL-vnw~d&JB&4o&#kt^ID|nQwSV1U)!efXF z!X|%9RzZ?)IWEqL>7^Z(%I)}Kbr-FmkrkEsBcvNW@t$lh(hl2|M|pz+S>E3+li3KS zPN`5x|C9ks&m=(_C-^_PJF3j>DoTaCc6jdeZ|7!A;xvhT_H5!?z4Rq<4UD5=%ThY- zI$v_=H!5YThBjlY?V4Z*moRE>fXmK@f$G zI<#B-2gFTBD-KR|61+sw;+wwv?)|=d@66ms^@fR#JrmIDMwKbjx~HK|?w_Cjl{RnY+>j zx@Oy2vxbN&HEnC!q!ZUG(1{M>K&@ARsU|TLdGS>ugcvHKh74njIG!&iJDL=xctok` zm$UR6F6FSwVKoAmmdT!_QJBfG<=ve{$t*-ofindW)Kr%Lo*^lE|E&DhSkAF*<5z~_ pqHjK3f5w*x#!x-yAtE7EkGj`g9bZ7F@?*T{p4s&t5X{o#-WQaAT`B+o diff --git a/runtime/src/tests/kernel.rs b/runtime/src/tests/kernel.rs new file mode 100644 index 000000000..0416bbb8b --- /dev/null +++ b/runtime/src/tests/kernel.rs @@ -0,0 +1,298 @@ +use crate::*; + +const KERNEL: &[u8] = include_bytes!("../extism-runtime.wasm"); + +fn extism_alloc(mut store: &mut wasmtime::Store, instance: &mut Instance, n: u64) -> u64 { + let out_alloc = &mut [Val::I64(0)]; + instance + .get_func(&mut store, "extism_alloc") + .unwrap() + .call(&mut store, &[Val::I64(n as i64)], out_alloc) + .unwrap(); + out_alloc[0].unwrap_i64() as u64 +} + +fn extism_length(mut store: &mut wasmtime::Store, instance: &mut Instance, p: u64) -> u64 { + let out = &mut [Val::I64(0)]; + instance + .get_func(&mut store, "extism_length") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], out) + .unwrap(); + out[0].unwrap_i64() as u64 +} + +fn extism_load_u8(mut store: &mut wasmtime::Store, instance: &mut Instance, p: u64) -> u8 { + let out = &mut [Val::I32(0)]; + instance + .get_func(&mut store, "extism_load_u8") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], out) + .unwrap(); + out[0].unwrap_i32() as u8 +} + +fn extism_load_u64(mut store: &mut wasmtime::Store, instance: &mut Instance, p: u64) -> u64 { + let out = &mut [Val::I32(0)]; + instance + .get_func(&mut store, "extism_load_u64") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], out) + .unwrap(); + out[0].unwrap_i64() as u64 +} + +fn extism_input_load_u8( + mut store: &mut wasmtime::Store, + instance: &mut Instance, + p: u64, +) -> u8 { + let out = &mut [Val::I32(0)]; + instance + .get_func(&mut store, "extism_input_load_u8") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], out) + .unwrap(); + out[0].unwrap_i32() as u8 +} + +fn extism_input_load_u64( + mut store: &mut wasmtime::Store, + instance: &mut Instance, + p: u64, +) -> u64 { + let out = &mut [Val::I32(0)]; + instance + .get_func(&mut store, "extism_input_load_u64") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], out) + .unwrap(); + out[0].unwrap_i64() as u64 +} + +fn extism_store_u8(mut store: &mut wasmtime::Store, instance: &mut Instance, p: u64, x: u8) { + instance + .get_func(&mut store, "extism_store_u8") + .unwrap() + .call( + &mut store, + &[Val::I64(p as i64), Val::I32(x as i32)], + &mut [], + ) + .unwrap(); +} + +fn extism_store_u64( + mut store: &mut wasmtime::Store, + instance: &mut Instance, + p: u64, + x: u64, +) { + instance + .get_func(&mut store, "extism_store_u64") + .unwrap() + .call( + &mut store, + &[Val::I64(p as i64), Val::I64(x as i64)], + &mut [], + ) + .unwrap(); +} + +fn extism_free(mut store: &mut wasmtime::Store, instance: &mut Instance, p: u64) { + instance + .get_func(&mut store, "extism_free") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], &mut []) + .unwrap(); +} + +fn extism_error_set(mut store: &mut wasmtime::Store, instance: &mut Instance, p: u64) { + instance + .get_func(&mut store, "extism_error_set") + .unwrap() + .call(&mut store, &[Val::I64(p as i64)], &mut []) + .unwrap(); +} + +fn extism_error_get(mut store: &mut wasmtime::Store, instance: &mut Instance) -> u64 { + let out = &mut [Val::I64(0)]; + instance + .get_func(&mut store, "extism_error_get") + .unwrap() + .call(&mut store, &[], out) + .unwrap(); + + out[0].unwrap_i64() as u64 +} + +fn extism_reset(mut store: &mut wasmtime::Store, instance: &mut Instance) { + instance + .get_func(&mut store, "extism_reset") + .unwrap() + .call(&mut store, &[], &mut []) + .unwrap(); +} + +fn extism_input_set( + mut store: &mut wasmtime::Store, + instance: &mut Instance, + p: u64, + l: u64, +) { + instance + .get_func(&mut store, "extism_input_set") + .unwrap() + .call( + &mut store, + &[Val::I64(p as i64), Val::I64(l as i64)], + &mut [], + ) + .unwrap(); +} + +fn init_kernel_test() -> (Store<()>, Instance) { + let config = wasmtime::Config::new(); + let engine = wasmtime::Engine::new(&config).unwrap(); + let mut store = wasmtime::Store::new(&engine, ()); + let module = wasmtime::Module::new(&engine, KERNEL).unwrap(); + let instance = wasmtime::Instance::new(&mut store, &module, &[]).unwrap(); + (store, instance) +} + +#[test] +fn test_kernel_allocations() { + let (mut store, mut instance) = init_kernel_test(); + let instance = &mut instance; + + // Test allocations + assert_eq!(extism_alloc(&mut store, instance, 0), 0); + + // 1 byte + let p = extism_alloc(&mut store, instance, 1); + let first_alloc = p; + assert!(p > 0); + assert_eq!(extism_length(&mut store, instance, p), 1); + extism_free(&mut store, instance, p); + + // 2 bytes + let x = extism_alloc(&mut store, instance, 2); + assert!(x > 0); + assert!(x != p); + assert_eq!(extism_length(&mut store, instance, x), 2); + extism_free(&mut store, instance, x); + + // 64 bytes + let p = extism_alloc(&mut store, instance, 64); + assert!(p > 0); + assert_eq!(extism_length(&mut store, instance, p), 64); + extism_free(&mut store, instance, p); + + // 64 bytes, should re-use the last allocation + let q = extism_alloc(&mut store, instance, 64); + assert_eq!(p, q); + assert_eq!(extism_length(&mut store, instance, q), 64); + extism_free(&mut store, instance, q); + + // 512 bytes, test block re-use + splitting + let p = extism_alloc(&mut store, instance, 512); + assert_eq!(extism_length(&mut store, instance, p), 512); + extism_free(&mut store, instance, p); + + // 128 bytes, should be split off the 512 byte block + let q = extism_alloc(&mut store, instance, 128); + assert!(p <= q && q < p + 512); + assert_eq!(extism_length(&mut store, instance, q), 128); + extism_free(&mut store, instance, q); + + // 128 bytes, same as above + let r = extism_alloc(&mut store, instance, 128); + assert!(p <= r && r < p + 512); + assert!(r > p); + assert_eq!(extism_length(&mut store, instance, q), 128); + extism_free(&mut store, instance, q); + + // 100 pages + let p = extism_alloc(&mut store, instance, 6553600); + assert!(p > 0); + assert_eq!(extism_length(&mut store, instance, p), 6553600); + extism_free(&mut store, instance, p); + + // One more page + let p = extism_alloc(&mut store, instance, 65536); + assert!(p > 0); + assert_eq!(extism_length(&mut store, instance, p), 65536); + + // A little more than a page + let p = extism_alloc(&mut store, instance, 65536 + 1024); + assert!(p > 0); + assert_eq!(extism_length(&mut store, instance, p), 65536 + 1024); + extism_free(&mut store, instance, p); + + // Reset/sanity check + extism_reset(&mut store, instance); + let q = extism_alloc(&mut store, instance, 65536 + 1024); + assert!(q < p); + assert_eq!(first_alloc, q); + assert_eq!(extism_length(&mut store, instance, q), 65536 + 1024); + // Old pointer shouldn't return a valid length + assert_eq!(extism_length(&mut store, instance, p), 0); + extism_free(&mut store, instance, q); +} + +#[test] +fn test_kernel_error() { + let (mut store, mut instance) = init_kernel_test(); + let instance = &mut instance; + + let p = extism_alloc(&mut store, instance, 512); + extism_error_set(&mut store, instance, p); + assert_eq!(extism_error_get(&mut store, instance), p); +} + +#[test] +fn test_load_store() { + let (mut store, mut instance) = init_kernel_test(); + let instance = &mut instance; + + let p = extism_alloc(&mut store, instance, 8); + extism_store_u64(&mut store, instance, p, 999); + assert_eq!(extism_load_u64(&mut store, instance, p), 999); + + let mut buf = [0u8; 8]; + + for i in 0..8 { + buf[i] = extism_load_u8(&mut store, instance, p + i as u64); + } + assert_eq!(u64::from_le_bytes(buf), 999); + + for i in 0..8 { + extism_store_u8(&mut store, instance, p + i as u64, i); + } + assert_eq!(extism_load_u64(&mut store, instance, p), 0x0706050403020100); + + // Reading/writing way out bounds shouldn't do anything, but since reads/writes aren't tied to blocks + // it's hard to make sure a an offset falls inside a valid block + assert_eq!(extism_load_u64(&mut store, instance, 0xffffffffffff), 0); + extism_store_u8(&mut store, instance, 0xffffffffffff, 0); +} + +#[test] +fn test_load_input() { + let (mut store, mut instance) = init_kernel_test(); + let instance = &mut instance; + + let p = extism_alloc(&mut store, instance, 123456); + + for i in 0..123456 { + extism_store_u8(&mut store, instance, p + i, b'a'); + } + extism_input_set(&mut store, instance, p, 123456); + + for i in 0..123456 { + assert_eq!(extism_input_load_u8(&mut store, instance, i), b'a'); + } + + // Out of bounds should return 0 + assert_eq!(extism_input_load_u64(&mut store, instance, 123457), 0); +} diff --git a/runtime/src/tests/mod.rs b/runtime/src/tests/mod.rs new file mode 100644 index 000000000..87e1d03a1 --- /dev/null +++ b/runtime/src/tests/mod.rs @@ -0,0 +1,2 @@ +mod kernel; +mod runtime; diff --git a/runtime/src/tests.rs b/runtime/src/tests/runtime.rs similarity index 96% rename from runtime/src/tests.rs rename to runtime/src/tests/runtime.rs index 5716b89b5..1b178f9b3 100644 --- a/runtime/src/tests.rs +++ b/runtime/src/tests/runtime.rs @@ -1,11 +1,11 @@ -use super::*; +use crate::*; use std::time::Instant; -const WASM: &[u8] = include_bytes!("../../wasm/code-functions.wasm"); -const WASM_NO_FUNCTIONS: &[u8] = include_bytes!("../../wasm/code.wasm"); -const WASM_LOOP: &[u8] = include_bytes!("../../wasm/loop.wasm"); -const WASM_GLOBALS: &[u8] = include_bytes!("../../wasm/globals.wasm"); -const WASM_REFLECT: &[u8] = include_bytes!("../../wasm/reflect.wasm"); +const WASM: &[u8] = include_bytes!("../../../wasm/code-functions.wasm"); +const WASM_NO_FUNCTIONS: &[u8] = include_bytes!("../../../wasm/code.wasm"); +const WASM_LOOP: &[u8] = include_bytes!("../../../wasm/loop.wasm"); +const WASM_GLOBALS: &[u8] = include_bytes!("../../../wasm/globals.wasm"); +const WASM_REFLECT: &[u8] = include_bytes!("../../../wasm/reflect.wasm"); host_fn!(hello_world (a: String) -> String { a }); From a9835da6148f35f9c41f9acaab4df3c8fc0c714c Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 12 Oct 2023 13:24:10 -0700 Subject: [PATCH 074/176] fix(rust): return `extism_error` message from `Plugin::call` if it is set (#508) --- runtime/src/current_plugin.rs | 45 +++++++++++++++-------------- runtime/src/plugin.rs | 54 ++++++++++++++++------------------- runtime/src/tests/runtime.rs | 27 ++++++++++++++++++ 3 files changed, 76 insertions(+), 50 deletions(-) diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index 62786bcca..fc56f7e61 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -288,20 +288,6 @@ impl CurrentPlugin { } } - /// Returns true when the error has been set - pub fn has_error(&mut self) -> bool { - let (linker, mut store) = self.linker_and_store(); - let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_error_get") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[], output) - .unwrap(); - output[0].unwrap_i64() != 0 - } - /// Get the current error message pub fn get_error(&mut self) -> Option<&str> { let (offs, length) = self.get_error_position(); @@ -319,16 +305,33 @@ impl CurrentPlugin { } } + #[doc(hidden)] + pub fn set_error(&mut self, s: impl AsRef) -> Result<(u64, u64), Error> { + let s = s.as_ref(); + debug!("Set error: {:?}", s); + let handle = self.current_plugin_mut().memory_new(&s)?; + let (linker, mut store) = self.linker_and_store(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { + f.into_func().unwrap().call( + &mut store, + &[Val::I64(handle.offset() as i64)], + &mut [], + )?; + return Ok((handle.offset(), s.len() as u64)); + } else { + anyhow::bail!("extism_error_set not found"); + } + } + pub(crate) fn get_error_position(&mut self) -> (u64, u64) { let (linker, mut store) = self.linker_and_store(); let output = &mut [Val::I64(0)]; - linker - .get(&mut store, "env", "extism_error_get") - .unwrap() - .into_func() - .unwrap() - .call(&mut store, &[], output) - .unwrap(); + if let Some(f) = linker.get(&mut store, "env", "extism_error_get") { + if let Err(e) = f.into_func().unwrap().call(&mut store, &[], output) { + error!("unable to call extism_error_get: {:?}", e); + return (0, 0); + } + }; let offs = output[0].unwrap_i64() as u64; let length = self.memory_length(offs); (offs, length) diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 3a2feab59..eed3dae4e 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -590,10 +590,28 @@ impl Plugin { .epoch_deadline_callback(|_| Ok(UpdateDeadline::Continue(1))); self.get_output_after_call(); + self.needs_reset = name == "_start"; + + if self.output.error_offset != 0 && self.output.error_length != 0 { + let handle = MemoryHandle { + offset: self.output.error_offset, + length: self.output.error_length, + }; + if let Ok(e) = self.current_plugin_mut().memory_str(handle) { + return Err((Error::msg(e.to_string()), -1)); + } + } match res { Ok(()) => { - self.needs_reset = name == "_start"; + // If `results` is empty and the return value wasn't a WASI exit code then + // the call succeeded + if results.is_empty() { + return Ok(0); + } + + // Return result to caller + Ok(0) } Err(e) => match e.downcast::() { Ok(exit) => { @@ -613,16 +631,7 @@ impl Plugin { return Err((e.context("Call failed"), -1)); } }, - }; - - // If `results` is empty and the return value wasn't a WASI exit code then - // the call succeeded - if results.is_empty() { - return Ok(0); } - - // Return result to caller - Ok(0) } /// Call a function by name with the given input, the return value is the output data returned by the plugin. @@ -662,30 +671,17 @@ impl Plugin { pub(crate) fn return_error( &mut self, instance_lock: &mut std::sync::MutexGuard>, - e: impl std::fmt::Debug, + e: impl std::fmt::Display, x: E, ) -> E { if instance_lock.is_none() { - error!("No instance, unable to set error: {:?}", e); + error!("No instance, unable to set error: {}", e); return x; } - let s = format!("{e:?}"); - debug!("Set error: {:?}", s); - match self.current_plugin_mut().memory_new(&s) { - Ok(handle) => { - let (linker, mut store) = self.linker_and_store(); - if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { - if let Ok(()) = f.into_func().unwrap().call( - &mut store, - &[Val::I64(handle.offset() as i64)], - &mut [], - ) { - self.output.error_offset = handle.offset(); - self.output.error_length = s.len() as u64; - } - } else { - error!("extism_error_set not found"); - } + match self.current_plugin_mut().set_error(e.to_string()) { + Ok((a, b)) => { + self.output.error_offset = a; + self.output.error_length = b; } Err(e) => { error!("Unable to set error: {e:?}") diff --git a/runtime/src/tests/runtime.rs b/runtime/src/tests/runtime.rs index 1b178f9b3..938176106 100644 --- a/runtime/src/tests/runtime.rs +++ b/runtime/src/tests/runtime.rs @@ -329,3 +329,30 @@ fn test_memory_max() { let output: Result = plugin.call("count_vowels", "a".repeat(65536 * 2)); assert!(output.is_ok()); } + +fn hello_world_set_error( + plugin: &mut CurrentPlugin, + inputs: &[Val], + outputs: &mut [Val], + _user_data: UserData, +) -> Result<(), Error> { + plugin.set_error("TEST")?; + outputs[0] = inputs[0].clone(); + Ok(()) +} + +#[test] +fn test_extism_error() { + let manifest = Manifest::new([extism_manifest::Wasm::data(WASM)]); + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world_set_error, + ); + let mut plugin = Plugin::new_with_manifest(&manifest, [f], true).unwrap(); + let output: Result = plugin.call("count_vowels", "a".repeat(1024)); + assert!(output.is_err()); + assert_eq!(output.unwrap_err().root_cause().to_string(), "TEST"); +} From 6f4b43bedc057fe10adbdcb6e5d0e40a4284a365 Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 12 Oct 2023 13:24:34 -0700 Subject: [PATCH 075/176] feat: add benchmarking, optimize bounds checking in the kernel (#505) - Adds benchmarking, run with `cargo bench` or `cargo criterion` - Adds `MemoryRoot::pointer_in_bounds_fast` to do less precise bounds checking in loads/stores --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- .github/workflows/ci-rust.yml | 27 ++++++- Makefile | 3 + kernel/build.sh | 17 +++- kernel/src/lib.rs | 23 ++++-- runtime/Cargo.toml | 7 ++ runtime/benches/bench.rs | 136 ++++++++++++++++++++++++++++++++ runtime/src/extism-runtime.wasm | Bin 4499 -> 3592 bytes runtime/src/tests/runtime.rs | 2 +- 8 files changed, 204 insertions(+), 11 deletions(-) create mode 100644 runtime/benches/bench.rs diff --git a/.github/workflows/ci-rust.yml b/.github/workflows/ci-rust.yml index d211358b5..1550a678e 100644 --- a/.github/workflows/ci-rust.yml +++ b/.github/workflows/ci-rust.yml @@ -91,4 +91,29 @@ jobs: run: cargo test --all-features --release -p ${{ env.RUNTIME_CRATE }} - name: Test no features run: cargo test --no-default-features --release -p ${{ env.RUNTIME_CRATE }} - + bench: + name: Benchmarking + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + rust: + - stable + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Cache Rust environment + uses: Swatinem/rust-cache@v1 + - name: Cache target + id: cache-target + uses: actions/cache@v3 + with: + path: target/** + key: ${{ runner.os }}-target-${{ github.sha }} + - run: cargo install cargo-criterion + - run: cargo criterion \ No newline at end of file diff --git a/Makefile b/Makefile index 60efe28a2..426631dbe 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,9 @@ endif build: cargo build --release $(FEATURE_FLAGS) --manifest-path libextism/Cargo.toml +bench: + @(cargo criterion || echo 'For nicer output use cargo-criterion: `cargo install cargo-criterion` - using `cargo bench`') && cargo bench + .PHONY: kernel kernel: cd kernel && bash build.sh diff --git a/kernel/build.sh b/kernel/build.sh index 3767d630e..e4bbb588c 100755 --- a/kernel/build.sh +++ b/kernel/build.sh @@ -1,6 +1,21 @@ #!/usr/bin/env bash -cargo build --release --target wasm32-unknown-unknown --package extism-runtime-kernel --bin extism-runtime +export CARGO_FLAGS="" + +while getopts d flag +do + case "${flag}" in + d) + echo "Disabled bounds-checking"; + export CARGO_FLAGS="--no-default-features";; + *) + echo "usage $0 [-d]" + echo "\t-d: build with bounds checking disabled" + exit 1 + esac +done + +cargo build --package extism-runtime-kernel --bin extism-runtime --release --target wasm32-unknown-unknown $CARGO_FLAGS cp target/wasm32-unknown-unknown/release/extism-runtime.wasm . wasm-strip extism-runtime.wasm mv extism-runtime.wasm ../runtime/src/extism-runtime.wasm diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 3b815413f..4c8067698 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -184,11 +184,21 @@ impl MemoryRoot { } #[inline(always)] + #[allow(unused)] fn pointer_in_bounds(&self, p: Pointer) -> bool { let start_ptr = self.blocks.as_ptr() as Pointer; p >= start_ptr && p < start_ptr + self.length.load(Ordering::Acquire) as Pointer } + #[inline(always)] + #[allow(unused)] + fn pointer_in_bounds_fast(p: Pointer) -> bool { + // Similar to `pointer_in_bounds` but less accurate on the upper bound. This uses the total memory size, + // instead of checking `MemoryRoot::length` + let end = core::arch::wasm32::memory_size(0) << 16; + p >= core::mem::size_of::() as Pointer && p <= end as Pointer + } + // Find a block that is free to use, this can be a new block or an existing freed block. The `self_position` argument // is used to avoid loading the allocators position more than once when performing an allocation. unsafe fn find_free_block( @@ -290,10 +300,7 @@ impl MemoryRoot { /// Finds the block at an offset in memory pub unsafe fn find_block(&mut self, offs: Pointer) -> Option<&mut MemoryBlock> { - let blocks_start = self.blocks.as_ptr() as Pointer; - if offs < blocks_start - || offs >= blocks_start + self.length.load(Ordering::Acquire) as Pointer - { + if !Self::pointer_in_bounds_fast(offs) { return None; } let ptr = offs - core::mem::size_of::() as u64; @@ -372,7 +379,7 @@ pub unsafe fn extism_length(p: Pointer) -> Length { #[no_mangle] pub unsafe fn extism_load_u8(p: Pointer) -> u8 { #[cfg(feature = "bounds-checking")] - if !MemoryRoot::new().pointer_in_bounds(p) { + if !MemoryRoot::pointer_in_bounds_fast(p) { return 0; } *(p as *mut u8) @@ -382,7 +389,7 @@ pub unsafe fn extism_load_u8(p: Pointer) -> u8 { #[no_mangle] pub unsafe fn extism_load_u64(p: Pointer) -> u64 { #[cfg(feature = "bounds-checking")] - if !MemoryRoot::new().pointer_in_bounds(p + core::mem::size_of::() as Pointer - 1) { + if !MemoryRoot::pointer_in_bounds_fast(p + core::mem::size_of::() as u64 - 1) { return 0; } *(p as *mut u64) @@ -412,7 +419,7 @@ pub unsafe fn extism_input_load_u64(p: Pointer) -> u64 { #[no_mangle] pub unsafe fn extism_store_u8(p: Pointer, x: u8) { #[cfg(feature = "bounds-checking")] - if !MemoryRoot::new().pointer_in_bounds(p) { + if !MemoryRoot::pointer_in_bounds_fast(p) { return; } *(p as *mut u8) = x; @@ -422,7 +429,7 @@ pub unsafe fn extism_store_u8(p: Pointer, x: u8) { #[no_mangle] pub unsafe fn extism_store_u64(p: Pointer, x: u64) { #[cfg(feature = "bounds-checking")] - if !MemoryRoot::new().pointer_in_bounds(p) { + if !MemoryRoot::pointer_in_bounds_fast(p + core::mem::size_of::() as u64 - 1) { return; } *(p as *mut u64) = x; diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index e6715b03c..1179135d8 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -34,3 +34,10 @@ http = ["ureq"] # enables extism_http_request [build-dependencies] cbindgen = "0.26" + +[dev-dependencies] +criterion = "0.5.1" + +[[bench]] +name = "bench" +harness = false diff --git a/runtime/benches/bench.rs b/runtime/benches/bench.rs new file mode 100644 index 000000000..d61ac245d --- /dev/null +++ b/runtime/benches/bench.rs @@ -0,0 +1,136 @@ +use criterion::{criterion_group, criterion_main, Criterion}; +use extism::*; + +const COUNT_VOWELS: &[u8] = include_bytes!("../../wasm/code.wasm"); +const REFLECT: &[u8] = include_bytes!("../../wasm/reflect.wasm"); + +host_fn!(hello_world (a: String) -> String { a }); + +pub fn basic(c: &mut Criterion) { + let mut g = c.benchmark_group("basic"); + g.sample_size(300); + g.measurement_time(std::time::Duration::from_secs(6)); + g.bench_function("basic", |b| { + let data = "a".repeat(4096); + b.iter(|| { + let mut plugin = Plugin::new(COUNT_VOWELS, [], true).unwrap(); + let _: serde_json::Value = plugin.call("count_vowels", &data).unwrap(); + }) + }); +} + +pub fn create_plugin(c: &mut Criterion) { + let mut g = c.benchmark_group("create"); + g.noise_threshold(1.0); + g.significance_level(0.2); + g.sample_size(300); + g.bench_function("create_plugin", |b| { + b.iter(|| { + let _plugin = PluginBuilder::new_with_module(COUNT_VOWELS) + .with_wasi(true) + .build() + .unwrap(); + }) + }); +} + +pub fn count_vowels(c: &mut Criterion) { + let mut g = c.benchmark_group("count_vowels"); + g.sample_size(500); + let mut plugin = PluginBuilder::new_with_module(COUNT_VOWELS) + .with_wasi(true) + .build() + .unwrap(); + let data = "a".repeat(4096); + g.bench_function("count_vowels(4096)", |b| { + b.iter(|| { + assert_eq!( + "{\"count\": 4096}", + plugin.call::<_, &str>("count_vowels", &data).unwrap() + ); + }) + }); +} + +pub fn reflect_1(c: &mut Criterion) { + let mut g = c.benchmark_group("reflect_1"); + g.sample_size(500); + g.noise_threshold(1.0); + g.significance_level(0.2); + let mut plugin = PluginBuilder::new_with_module(REFLECT) + .with_wasi(true) + .with_function( + "host_reflect", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ) + .build() + .unwrap(); + let data = "a".repeat(65536); + g.bench_function("reflect_1", |b| { + b.iter(|| { + assert_eq!(data, plugin.call::<_, &str>("reflect", &data).unwrap()); + }) + }); +} + +pub fn reflect_10(c: &mut Criterion) { + let mut g = c.benchmark_group("reflect_10"); + g.sample_size(200); + g.noise_threshold(1.0); + g.significance_level(0.2); + let mut plugin = PluginBuilder::new_with_module(REFLECT) + .with_wasi(true) + .with_function( + "host_reflect", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ) + .build() + .unwrap(); + let data = "a".repeat(65536 * 10); + g.bench_function("reflect_10", |b| { + b.iter(|| { + assert_eq!(data, plugin.call::<_, &str>("reflect", &data).unwrap()); + }) + }); +} + +pub fn reflect_100(c: &mut Criterion) { + let mut g = c.benchmark_group("reflect_100"); + g.sample_size(50); + g.noise_threshold(1.0); + g.significance_level(0.2); + let mut plugin = PluginBuilder::new_with_module(REFLECT) + .with_wasi(true) + .with_function( + "host_reflect", + [ValType::I64], + [ValType::I64], + None, + hello_world, + ) + .build() + .unwrap(); + let data = "a".repeat(65536 * 100); + g.bench_function("reflect_100", |b| { + b.iter(|| { + assert_eq!(data, plugin.call::<_, &str>("reflect", &data).unwrap()); + }) + }); +} + +criterion_group!( + benches, + basic, + create_plugin, + count_vowels, + reflect_1, + reflect_10, + reflect_100 +); +criterion_main!(benches); diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index bea460822a14cd0ebb1a93879a30a1a7dfd9ecf9..4a337788c90cd26851453a4e481110a27b67295b 100755 GIT binary patch delta 348 zcmZ{eu}Z^G6o$`#ZcPlAs|ANr5j>3&QS7J%1?}z7Cn(OHGdLBel4KMd9M0e)I0-`B zy68*z49?QU&5+<`&UE1X|93t;xZisf=BHj6^PMq2fZm$EzHNwpZ|;P`KA$?)ttjbR zp-Fe<=$d?Y@gh{MLeGAY>O*jXZM_OFqc0fb$dKzt(9_Q#-WB7>lgF51bI$AHy&y3S zbZ(Pj3v`*DF%8%XyrhRkH6&cWm>mJRrvZ5Uug{RGTh+6t;B4}j3zsq1^1_Y&O)YDHbAPWnp!;A_zyc3|K_iHdUHb zLf{%-!`ip7vJsrkaf+M^3j;HJ`_GPI*O@cobfZY|j#ej#_@IWJM>$~mCRN=<>E=P# zt+XcVz}TaZDQCE71H;VTW+@&?iLT$++B8q7l?eXUlmR4&hYY7}Hx94eW$PHpxPvI( zSuo@o+Qu+J!^(12zRhSp71BSTdktbq^?YI>A%W2@XD_K{IQMycPW_X!4>I$ICG(|Z zTdL)(*nP?CSr{~PQA<5ItLz|WUH(CjYPNf8UNt_vuiP+vUz@So12BSAYnk6}Al+Rm MM$wWg?xV5(282;vzW@LL diff --git a/runtime/src/tests/runtime.rs b/runtime/src/tests/runtime.rs index 938176106..a5d536faa 100644 --- a/runtime/src/tests/runtime.rs +++ b/runtime/src/tests/runtime.rs @@ -300,7 +300,7 @@ fn test_fuzz_reflect_plugin() { for i in 1..65540 { let input = "a".repeat(i); - let output = plugin.call("reflect", input.clone()); + let output = plugin.call("reflect", &input); let output = std::str::from_utf8(output.unwrap()).unwrap(); assert_eq!(output, input); } From c893faede4224088ea999f961dfa1a2933f6e848 Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 12 Oct 2023 17:57:50 -0700 Subject: [PATCH 076/176] fix(kernel): update outdated implementation of `MemoryBlock::next_ptr` (#509) `MemoryBlock::next_ptr` used to calculate the offset to the data of the next block, but it should be returning the start of the `MemoryBlock` structure in memory. Also updates the tests for this case. This was discovered when trying to update the kernel in the go-sdk: https://github.com/extism/go-sdk/pull/32 --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- kernel/src/lib.rs | 6 ++---- runtime/src/extism-runtime.wasm | Bin 3592 -> 3592 bytes runtime/src/tests/kernel.rs | 23 ++++++++++++----------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 4c8067698..f42a18a0b 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -283,7 +283,7 @@ impl MemoryRoot { // Bump the position by the size of the actual data + the size of the MemoryBlock structure self.position.fetch_add( - length + core::mem::size_of::() as u64 - 1, + length + core::mem::size_of::() as u64, Ordering::SeqCst, ); @@ -316,9 +316,7 @@ impl MemoryBlock { /// is calculated based on metadata provided by the current block #[inline] pub unsafe fn next_ptr(&mut self) -> *mut MemoryBlock { - self.data - .as_mut_ptr() - .add(self.size + core::mem::size_of::()) as *mut MemoryBlock + self.data.as_mut_ptr().add(self.size) as *mut MemoryBlock } /// Mark a block as free diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index 4a337788c90cd26851453a4e481110a27b67295b..5f3ead822fa9eb8d240de8e58ca2c39fcab30fd0 100755 GIT binary patch delta 25 hcmeB>>5$p5fQ5}&fh)_AXYw+ZO^iI7BU#sT003X(2TK3| delta 25 hcmeB>>5$p5fQ5}qfjP@jV)8PUO^n=|BU#sT003Zn2UY+8 diff --git a/runtime/src/tests/kernel.rs b/runtime/src/tests/kernel.rs index 0416bbb8b..6289cde16 100644 --- a/runtime/src/tests/kernel.rs +++ b/runtime/src/tests/kernel.rs @@ -182,17 +182,18 @@ fn test_kernel_allocations() { assert_eq!(extism_length(&mut store, instance, x), 2); extism_free(&mut store, instance, x); - // 64 bytes - let p = extism_alloc(&mut store, instance, 64); - assert!(p > 0); - assert_eq!(extism_length(&mut store, instance, p), 64); - extism_free(&mut store, instance, p); - - // 64 bytes, should re-use the last allocation - let q = extism_alloc(&mut store, instance, 64); - assert_eq!(p, q); - assert_eq!(extism_length(&mut store, instance, q), 64); - extism_free(&mut store, instance, q); + for i in 0..64 { + let p = extism_alloc(&mut store, instance, 64 - i); + assert!(p > 0); + assert_eq!(extism_length(&mut store, instance, p), 64 - i); + extism_free(&mut store, instance, p); + + // should re-use the last allocation + let q = extism_alloc(&mut store, instance, 64 - i); + assert_eq!(p, q); + assert_eq!(extism_length(&mut store, instance, q), 64 - i); + extism_free(&mut store, instance, q); + } // 512 bytes, test block re-use + splitting let p = extism_alloc(&mut store, instance, 512); From 09961010f6b478bc0f6a85bd781f35228966f53c Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Mon, 16 Oct 2023 10:35:26 -0700 Subject: [PATCH 077/176] v1.0.0-rc0 From 6e0fd3baa17670ef6c35494901dfcc83559859ac Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Mon, 16 Oct 2023 11:01:30 -0700 Subject: [PATCH 078/176] fix(build): release-python: disable unused poetry caching This workflow only _uploads_ existing artifacts, so keeping a poetry cache around just, uh, breaks the workflow since there's no `Poetry.lock` to cache. --- .github/workflows/release-python.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-python.yaml b/.github/workflows/release-python.yaml index 21dec6c57..7006d44fc 100644 --- a/.github/workflows/release-python.yaml +++ b/.github/workflows/release-python.yaml @@ -18,7 +18,6 @@ jobs: - uses: actions/setup-python@v4 with: python-version: '3.10' - cache: 'poetry' - name: install twine run: | From 18b01b5d16c534cb740df9018fc363c057927217 Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 16 Oct 2023 17:48:44 -0700 Subject: [PATCH 079/176] fix: undo change to `extism_memory_bytes` left over from debugging (#519) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- kernel/src/lib.rs | 2 +- runtime/src/extism-runtime.wasm | Bin 3592 -> 3592 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index f42a18a0b..2fb438b05 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -517,5 +517,5 @@ pub unsafe fn extism_error_get() -> Pointer { /// Get the position of the allocator, this can be used as an indication of how many bytes are currently in-use #[no_mangle] pub unsafe fn extism_memory_bytes() -> Length { - MemoryRoot::new().length.load(Ordering::Acquire) + MemoryRoot::new().position.load(Ordering::Acquire) } diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index 5f3ead822fa9eb8d240de8e58ca2c39fcab30fd0..52d18e5ae589839733d265810ceff2e5c0c6531d 100755 GIT binary patch delta 13 UcmeB>>5$p5f|rqD@=D%#03XH#R{#J2 delta 13 UcmeB>>5$p5f|rqF@=D%#03YrIUjP6A From 2ef701ae002449ca6a5774ddd25a4e56134dcca7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 14:54:35 -0500 Subject: [PATCH 080/176] chore(deps-dev): Bump @babel/traverse from 7.20.13 to 7.23.2 in /browser (#518) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.20.13 to 7.23.2.
    Release notes

    Sourced from @​babel/traverse's releases.

    v7.23.2 (2023-10-11)

    NOTE: This release also re-publishes @babel/core, even if it does not appear in the linked release commit.

    Thanks @​jimmydief for your first PR!

    :bug: Bug Fix

    • babel-traverse
    • babel-preset-typescript
    • babel-helpers
      • #16017 Fix: fallback to typeof when toString is applied to incompatible object (@​JLHwung)
    • babel-helpers, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime

    Committers: 5

    v7.23.1 (2023-09-25)

    Re-publishing @babel/helpers due to a publishing error in 7.23.0.

    v7.23.0 (2023-09-25)

    Thanks @​lorenzoferre and @​RajShukla1 for your first PRs!

    :rocket: New Feature

    • babel-plugin-proposal-import-wasm-source, babel-plugin-syntax-import-source, babel-plugin-transform-dynamic-import
    • babel-helper-module-transforms, babel-helpers, babel-plugin-proposal-import-defer, babel-plugin-syntax-import-defer, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone
    • babel-generator, babel-parser, babel-types
    • babel-generator, babel-helper-module-transforms, babel-parser, babel-plugin-transform-dynamic-import, babel-plugin-transform-modules-amd, babel-plugin-transform-modules-commonjs, babel-plugin-transform-modules-systemjs, babel-traverse, babel-types
    • babel-standalone
    • babel-helper-function-name, babel-helper-member-expression-to-functions, babel-helpers, babel-parser, babel-plugin-proposal-destructuring-private, babel-plugin-proposal-optional-chaining-assign, babel-plugin-syntax-optional-chaining-assign, babel-plugin-transform-destructuring, babel-plugin-transform-optional-chaining, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone, babel-types
    • babel-helpers, babel-plugin-proposal-decorators
    • babel-traverse, babel-types
    • babel-preset-typescript

    ... (truncated)

    Changelog

    Sourced from @​babel/traverse's changelog.

    v7.23.2 (2023-10-11)

    :bug: Bug Fix

    • babel-traverse
    • babel-preset-typescript
    • babel-helpers
      • #16017 Fix: fallback to typeof when toString is applied to incompatible object (@​JLHwung)
    • babel-helpers, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime

    v7.23.0 (2023-09-25)

    :rocket: New Feature

    • babel-plugin-proposal-import-wasm-source, babel-plugin-syntax-import-source, babel-plugin-transform-dynamic-import
    • babel-helper-module-transforms, babel-helpers, babel-plugin-proposal-import-defer, babel-plugin-syntax-import-defer, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone
    • babel-generator, babel-parser, babel-types
    • babel-generator, babel-helper-module-transforms, babel-parser, babel-plugin-transform-dynamic-import, babel-plugin-transform-modules-amd, babel-plugin-transform-modules-commonjs, babel-plugin-transform-modules-systemjs, babel-traverse, babel-types
    • babel-standalone
    • babel-helper-function-name, babel-helper-member-expression-to-functions, babel-helpers, babel-parser, babel-plugin-proposal-destructuring-private, babel-plugin-proposal-optional-chaining-assign, babel-plugin-syntax-optional-chaining-assign, babel-plugin-transform-destructuring, babel-plugin-transform-optional-chaining, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone, babel-types
    • babel-helpers, babel-plugin-proposal-decorators
    • babel-traverse, babel-types
    • babel-preset-typescript
    • babel-parser

    :bug: Bug Fix

    • babel-plugin-transform-block-scoping

    :nail_care: Polish

    • babel-traverse
    • babel-plugin-proposal-explicit-resource-management

    :microscope: Output optimization

    • babel-core, babel-helper-module-transforms, babel-plugin-transform-async-to-generator, babel-plugin-transform-classes, babel-plugin-transform-dynamic-import, babel-plugin-transform-function-name, babel-plugin-transform-modules-amd, babel-plugin-transform-modules-commonjs, babel-plugin-transform-modules-umd, babel-plugin-transform-parameters, babel-plugin-transform-react-constant-elements, babel-plugin-transform-react-inline-elements, babel-plugin-transform-runtime, babel-plugin-transform-typescript, babel-preset-env

    v7.22.20 (2023-09-16)

    ... (truncated)

    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/traverse&package-manager=npm_and_yarn&previous-version=7.20.13&new-version=7.23.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/extism/extism/network/alerts).
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- browser/package-lock.json | 256 +++++++++++++++++++------------------- 1 file changed, 130 insertions(+), 126 deletions(-) diff --git a/browser/package-lock.json b/browser/package-lock.json index ec1919e07..5a1e94868 100644 --- a/browser/package-lock.json +++ b/browser/package-lock.json @@ -1,12 +1,12 @@ { "name": "@extism/runtime-browser", - "version": "0.3.0", + "version": "0.3.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@extism/runtime-browser", - "version": "0.3.0", + "version": "0.3.1", "license": "BSD-3-Clause", "dependencies": { "@bjorn3/browser_wasi_shim": "^0.2.7" @@ -39,12 +39,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" @@ -99,13 +100,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -154,34 +156,34 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -240,30 +242,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -293,13 +295,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -307,9 +309,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -513,33 +515,33 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -548,13 +550,13 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -8288,12 +8290,13 @@ } }, "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" } }, "@babel/compat-data": { @@ -8334,13 +8337,14 @@ } }, "@babel/generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz", - "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.20.7", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "dependencies": { @@ -8378,28 +8382,28 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, "@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { @@ -8443,24 +8447,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" } }, "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true }, "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -8481,20 +8485,20 @@ } }, "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" } }, "@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -8635,42 +8639,42 @@ } }, "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", - "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.13", - "@babel/types": "^7.20.7", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, From 94f42413ab03a58e087f1aaa0622a4c33aeb60d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 14:54:44 -0500 Subject: [PATCH 081/176] chore(deps): Bump @types/ref-array-di from 1.2.5 to 1.2.6 in /node (#491) Bumps [@types/ref-array-di](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/ref-array-di) from 1.2.5 to 1.2.6.
    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/ref-array-di&package-manager=npm_and_yarn&previous-version=1.2.5&new-version=1.2.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 94b078ffa..f745ca5b9 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1164,9 +1164,9 @@ "integrity": "sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==" }, "node_modules/@types/ref-array-di": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/ref-array-di/-/ref-array-di-1.2.5.tgz", - "integrity": "sha512-dA/Himb7ca/Tf5vqLOhi7LewAAoOXghlocw7gAqvNrmLybAtu+w2BLzEsbFWAtx5ElNzMEHDaRybueYViFROjQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/ref-array-di/-/ref-array-di-1.2.6.tgz", + "integrity": "sha512-v1NeuLBJaHsqKpPTWr8gwH8UIvzrlbdJ/9aD91CZkczDD+DBM64woMIlYiFj/SpQJ/9dWhuZXAu7QEYM10dQwQ==", "dependencies": { "@types/ref-napi": "*" } From 8cd8135414d332fe89c11ea77db3b9d4cca17eeb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 14:54:54 -0500 Subject: [PATCH 082/176] chore(deps-dev): Bump typedoc from 0.25.1 to 0.25.2 in /node (#502) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.25.1 to 0.25.2.
    Release notes

    Sourced from typedoc's releases.

    v0.25.2

    Features

    • Added navigationLeaves option to remove branches from the navigation tree, #2382.
    • Added sortEntryPoints option (defaults to true) to allow disabling entry point sorting, #2393.
    • Improved support for multi-word searches, #2400.

    Bug Fixes

    • Fixed conversion of @template constraints on JSDoc defined type parameters, #2389.
    • Invalid link validation is now correctly suppressed before all projects have been converted in packages mode, #2403.
    • Fixed tsconfig handling for projects using a solution-style tsconfig, #2406.
    • Fixed broken settings icons caused by icon caching introduced in 0.25.1, #2408.
    • Corrected module comment handling on declaration files containing a single declare module "foo", #2401.

    Thanks!

    Changelog

    Sourced from typedoc's changelog.

    v0.25.2 (2023-10-08)

    Features

    • Added navigationLeaves option to remove branches from the navigation tree, #2382.
    • Added sortEntryPoints option (defaults to true) to allow disabling entry point sorting, #2393.
    • Improved support for multi-word searches, #2400.

    Bug Fixes

    • Fixed conversion of @template constraints on JSDoc defined type parameters, #2389.
    • Invalid link validation is now correctly suppressed before all projects have been converted in packages mode, #2403.
    • Fixed tsconfig handling for projects using a solution-style tsconfig, #2406.
    • Fixed broken settings icons caused by icon caching introduced in 0.25.1, #2408.
    • Corrected module comment handling on declaration files containing a single declare module "foo", #2401.

    Thanks!

    Commits
    • 22fe25c Update changelog for release
    • 73d7f3a Bump version to 0.25.2
    • 4e16473 Bump dev dep versions
    • 6cb49b2 Add sortEntryPoints option
    • 130ba48 Handle @template constraints correctly
    • 8e0aaf7 Handle @module on declare module "foo"
    • b12258d Add navigationLeaves option
    • 2cabd22 Fix invalid link handling in packages mode
    • 608cf48 Fix solution style tsconfigs
    • 878e06a Fix broken settings icons
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typedoc&package-manager=npm_and_yarn&previous-version=0.25.1&new-version=0.25.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index f745ca5b9..94354d76b 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -3855,9 +3855,9 @@ } }, "node_modules/typedoc": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.1.tgz", - "integrity": "sha512-c2ye3YUtGIadxN2O6YwPEXgrZcvhlZ6HlhWZ8jQRNzwLPn2ylhdGqdR8HbyDRyALP8J6lmSANILCkkIdNPFxqA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.25.2.tgz", + "integrity": "sha512-286F7BeATBiWe/qC4PCOCKlSTwfnsLbC/4cZ68oGBbvAqb9vV33quEOXx7q176OXotD+JdEerdQ1OZGJ818lnA==", "dev": true, "dependencies": { "lunr": "^2.3.9", From f0f2d59d8f6b7ac7c1d59dc8ecbd8fc3f7d56f95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 14:55:05 -0500 Subject: [PATCH 083/176] chore(deps-dev): Bump ex_doc from 0.30.6 to 0.30.7 in /elixir (#513) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.6 to 0.30.7.
    Changelog

    Sourced from ex_doc's changelog.

    v0.30.7 (2023-10-15)

    • Bug fixes

      • Do not crash on EDoc type annotations
      • Do not crash on functions without name
      • Handle remote types in records
      • Fix scrolling to top on iOS
      • Fix invalid output markup for “hover link” headings
    • Enhancements

      • Support any String.Chars as the extra page name
      • Improve screen reader accessibility
      • Add :skip_code_autolink_to option
    Commits
    • a27002e Release v0.30.7
    • 194a25b Change text decoration color on cheatsheet headers
    • aca43d0 Partially fix abstract Erlang types ({@type ...}) (#1787)
    • 51d8387 Use pattern matching on underscored functions, closes #1784
    • 16a8f53 Autolink support for handling remote types in records (#1763)
    • 3d85467 Use backticks consistently in mix docs docs (#1783)
    • 7a53ce9 Support any String.Chars.t on extras
    • d23503f Fix errors on search page
    • aee35dc Reuse .build instead of adding a new file
    • 032f625 Update assets
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.6&new-version=0.30.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- elixir/mix.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/elixir/mix.lock b/elixir/mix.lock index 88770e4fa..b89b99578 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -1,6 +1,6 @@ %{ - "earmark_parser": {:hex, :earmark_parser, "1.4.33", "3c3fd9673bb5dcc9edc28dd90f50c87ce506d1f71b70e3de69aa8154bc695d44", [:mix], [], "hexpm", "2d526833729b59b9fdb85785078697c72ac5e5066350663e5be6a1182da61b8f"}, - "ex_doc": {:hex, :ex_doc, "0.30.6", "5f8b54854b240a2b55c9734c4b1d0dd7bdd41f71a095d42a70445c03cf05a281", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "bd48f2ddacf4e482c727f9293d9498e0881597eae6ddc3d9562bd7923375109f"}, + "earmark_parser": {:hex, :earmark_parser, "1.4.37", "2ad73550e27c8946648b06905a57e4d454e4d7229c2dafa72a0348c99d8be5f7", [:mix], [], "hexpm", "6b19783f2802f039806f375610faa22da130b8edc21209d0bff47918bb48360e"}, + "ex_doc": {:hex, :ex_doc, "0.30.7", "dc7247091aec738ab781f71cbebfc07979d1040c98c7ee67dbde99b7829b743d", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "868ff1c7a44c462741853840d1e7ef19a07906e7467cb8da070c158ea6a42a51"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, From c5fce439d12fc1aa105aec20fb4ec9d343e83a31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 14:55:21 -0500 Subject: [PATCH 084/176] chore(deps-dev): Bump @types/node from 20.6.5 to 20.8.6 in /node (#515) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.6.5 to 20.8.6.
    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=20.6.5&new-version=20.8.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 94354d76b..4060bbf54 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -1159,9 +1159,12 @@ } }, "node_modules/@types/node": { - "version": "20.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.5.tgz", - "integrity": "sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==" + "version": "20.8.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.6.tgz", + "integrity": "sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==", + "dependencies": { + "undici-types": "~5.25.1" + } }, "node_modules/@types/ref-array-di": { "version": "1.2.6", @@ -3912,6 +3915,11 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, "node_modules/update-browserslist-db": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", From eb0538129727bc6a035f52cd148274392e4015a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 14:55:31 -0500 Subject: [PATCH 085/176] chore(deps-dev): Bump @babel/traverse from 7.19.6 to 7.23.2 in /node (#517) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.19.6 to 7.23.2.
    Release notes

    Sourced from @​babel/traverse's releases.

    v7.23.2 (2023-10-11)

    NOTE: This release also re-publishes @babel/core, even if it does not appear in the linked release commit.

    Thanks @​jimmydief for your first PR!

    :bug: Bug Fix

    • babel-traverse
    • babel-preset-typescript
    • babel-helpers
      • #16017 Fix: fallback to typeof when toString is applied to incompatible object (@​JLHwung)
    • babel-helpers, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime

    Committers: 5

    v7.23.1 (2023-09-25)

    Re-publishing @babel/helpers due to a publishing error in 7.23.0.

    v7.23.0 (2023-09-25)

    Thanks @​lorenzoferre and @​RajShukla1 for your first PRs!

    :rocket: New Feature

    • babel-plugin-proposal-import-wasm-source, babel-plugin-syntax-import-source, babel-plugin-transform-dynamic-import
    • babel-helper-module-transforms, babel-helpers, babel-plugin-proposal-import-defer, babel-plugin-syntax-import-defer, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone
    • babel-generator, babel-parser, babel-types
    • babel-generator, babel-helper-module-transforms, babel-parser, babel-plugin-transform-dynamic-import, babel-plugin-transform-modules-amd, babel-plugin-transform-modules-commonjs, babel-plugin-transform-modules-systemjs, babel-traverse, babel-types
    • babel-standalone
    • babel-helper-function-name, babel-helper-member-expression-to-functions, babel-helpers, babel-parser, babel-plugin-proposal-destructuring-private, babel-plugin-proposal-optional-chaining-assign, babel-plugin-syntax-optional-chaining-assign, babel-plugin-transform-destructuring, babel-plugin-transform-optional-chaining, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone, babel-types
    • babel-helpers, babel-plugin-proposal-decorators
    • babel-traverse, babel-types
    • babel-preset-typescript

    ... (truncated)

    Changelog

    Sourced from @​babel/traverse's changelog.

    v7.23.2 (2023-10-11)

    :bug: Bug Fix

    • babel-traverse
    • babel-preset-typescript
    • babel-helpers
      • #16017 Fix: fallback to typeof when toString is applied to incompatible object (@​JLHwung)
    • babel-helpers, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime

    v7.23.0 (2023-09-25)

    :rocket: New Feature

    • babel-plugin-proposal-import-wasm-source, babel-plugin-syntax-import-source, babel-plugin-transform-dynamic-import
    • babel-helper-module-transforms, babel-helpers, babel-plugin-proposal-import-defer, babel-plugin-syntax-import-defer, babel-plugin-transform-modules-commonjs, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone
    • babel-generator, babel-parser, babel-types
    • babel-generator, babel-helper-module-transforms, babel-parser, babel-plugin-transform-dynamic-import, babel-plugin-transform-modules-amd, babel-plugin-transform-modules-commonjs, babel-plugin-transform-modules-systemjs, babel-traverse, babel-types
    • babel-standalone
    • babel-helper-function-name, babel-helper-member-expression-to-functions, babel-helpers, babel-parser, babel-plugin-proposal-destructuring-private, babel-plugin-proposal-optional-chaining-assign, babel-plugin-syntax-optional-chaining-assign, babel-plugin-transform-destructuring, babel-plugin-transform-optional-chaining, babel-runtime-corejs2, babel-runtime-corejs3, babel-runtime, babel-standalone, babel-types
    • babel-helpers, babel-plugin-proposal-decorators
    • babel-traverse, babel-types
    • babel-preset-typescript
    • babel-parser

    :bug: Bug Fix

    • babel-plugin-transform-block-scoping

    :nail_care: Polish

    • babel-traverse
    • babel-plugin-proposal-explicit-resource-management

    :microscope: Output optimization

    • babel-core, babel-helper-module-transforms, babel-plugin-transform-async-to-generator, babel-plugin-transform-classes, babel-plugin-transform-dynamic-import, babel-plugin-transform-function-name, babel-plugin-transform-modules-amd, babel-plugin-transform-modules-commonjs, babel-plugin-transform-modules-umd, babel-plugin-transform-parameters, babel-plugin-transform-react-constant-elements, babel-plugin-transform-react-inline-elements, babel-plugin-transform-runtime, babel-plugin-transform-typescript, babel-preset-env

    v7.22.20 (2023-09-16)

    ... (truncated)

    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/traverse&package-manager=npm_and_yarn&previous-version=7.19.6&new-version=7.23.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/extism/extism/network/alerts).
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- node/package-lock.json | 197 ++++++++++++++++++++++++++++------------- 1 file changed, 135 insertions(+), 62 deletions(-) diff --git a/node/package-lock.json b/node/package-lock.json index 4060bbf54..f5586f28b 100644 --- a/node/package-lock.json +++ b/node/package-lock.json @@ -42,17 +42,89 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/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/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/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/@babel/compat-data": { "version": "7.19.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.19.4.tgz", @@ -93,13 +165,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.6.tgz", - "integrity": "sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.19.4", + "@babel/types": "^7.23.0", "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" }, "engines": { @@ -139,34 +212,34 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -225,30 +298,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -278,13 +351,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -363,9 +436,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", - "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -552,33 +625,33 @@ } }, "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.19.6.tgz", - "integrity": "sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.19.6", - "@babel/types": "^7.19.4", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -587,13 +660,13 @@ } }, "node_modules/@babel/types": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", - "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { From 2c82b928ab9c89e4949526efb86d5ab83c5b2fc9 Mon Sep 17 00:00:00 2001 From: Muhammad Azeez Date: Wed, 18 Oct 2023 10:47:16 +0300 Subject: [PATCH 086/176] ci(dotnet): publish nuget packages for all supported environments (#523) NuGet supports the distribution of native binaries. We already provide a win-x64 package, this PR adds packages for the other environments. We will be publishing these NuGet packages: - Extism.runtime.linux-arm64 - Extism.runtime.linux-musl-arm64 - Extism.runtime.linux-x64 - Extism.runtime.osx-arm64 - Extism.runtime.osx-x64 - Extism.runtime.win-x64 (msvc) - Extism.runtime.all -> this is a meta package that referencs all other packages. The idea is, in the getting started guides we instruct the user to take a dependency on `Extism.Sdk` and `Extism.runtime.all`. This will make sure their apps work on all supported operating systems automatically. Otherwise, they can just take a dependency on what they care about This PR also adds a dependency on [MinVer](https://github.com/adamralph/minver) which make sure packages are automatically versioned based on git tags. Related to #486 --- .github/workflows/release-dotnet-native.yaml | 29 ++++++-- dotnet/nuget/Directory.Build.props | 28 ++++++++ dotnet/nuget/Extism.runtime.all.csproj | 14 ++++ dotnet/nuget/Extism.runtime.all.nuspec | 27 ++++++++ .../nuget/Extism.runtime.linux-arm64.csproj | 15 +++++ .../Extism.runtime.linux-musl-arm64.csproj | 16 +++++ dotnet/nuget/Extism.runtime.linux-x64.csproj | 15 +++++ dotnet/nuget/Extism.runtime.osx-arm64.csproj | 15 +++++ dotnet/nuget/Extism.runtime.osx-x64.csproj | 15 +++++ dotnet/nuget/Extism.runtime.win-x64.csproj | 15 +++++ dotnet/nuget/Extism.runtime.win.csproj | 24 ------- dotnet/nuget/Nuget.sln | 66 +++++++++++++++++++ dotnet/nuget/README.md | 2 + 13 files changed, 251 insertions(+), 30 deletions(-) create mode 100644 dotnet/nuget/Directory.Build.props create mode 100644 dotnet/nuget/Extism.runtime.all.csproj create mode 100644 dotnet/nuget/Extism.runtime.all.nuspec create mode 100644 dotnet/nuget/Extism.runtime.linux-arm64.csproj create mode 100644 dotnet/nuget/Extism.runtime.linux-musl-arm64.csproj create mode 100644 dotnet/nuget/Extism.runtime.linux-x64.csproj create mode 100644 dotnet/nuget/Extism.runtime.osx-arm64.csproj create mode 100644 dotnet/nuget/Extism.runtime.osx-x64.csproj create mode 100644 dotnet/nuget/Extism.runtime.win-x64.csproj delete mode 100644 dotnet/nuget/Extism.runtime.win.csproj create mode 100644 dotnet/nuget/Nuget.sln create mode 100644 dotnet/nuget/README.md diff --git a/.github/workflows/release-dotnet-native.yaml b/.github/workflows/release-dotnet-native.yaml index 1d6acb420..83feb7643 100644 --- a/.github/workflows/release-dotnet-native.yaml +++ b/.github/workflows/release-dotnet-native.yaml @@ -10,6 +10,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + fetch-tags: true + - name: Setup .NET Core SDK uses: actions/setup-dotnet@v3.0.3 with: @@ -20,10 +22,25 @@ jobs: name: release-artifacts - name: Extract Archive run: | - tar -xvzf libextism-x86_64-pc-windows-msvc-v*.tar.gz --directory dotnet/nuget/runtimes - mv dotnet/nuget/runtimes/extism.dll dotnet/nuget/runtimes/win-x64.dll - - name: Publish win-x64 + mkdir -p dotnet/nuget/runtimes/win-x64/native/ + tar -xvzf libextism-x86_64-pc-windows-msvc-main.tar.gz -C dotnet/nuget/runtimes/win-x64/native/ + + mkdir -p dotnet/nuget/runtimes/osx-arm64/native/ + tar -xvzf libextism-aarch64-apple-darwin-main.tar.gz -C dotnet/nuget/runtimes/osx-arm64/native/ + + mkdir -p dotnet/nuget/runtimes/osx-x64/native/ + tar -xvzf libextism-x86_64-apple-darwin-main.tar.gz -C dotnet/nuget/runtimes/osx-x64/native/ + + mkdir -p dotnet/nuget/runtimes/linux-x64/native/ + tar -xvzf libextism-x86_64-unknown-linux-gnu-main.tar.gz -C dotnet/nuget/runtimes/linux-x64/native/ + + mkdir -p dotnet/nuget/runtimes/linux-arm64/native/ + tar -xvzf libextism-aarch64-unknown-linux-gnu-main.tar.gz -C dotnet/nuget/runtimes/linux-arm64/native/ + + mkdir -p dotnet/nuget/runtimes/linux-musl-arm64/native/ + tar -xvzf libextism-aarch64-unknown-linux-musl-main.tar.gz -C dotnet/nuget/runtimes/linux-musl-arm64/native/ + + - name: Publish NuGet packages run: | - cd dotnet/nuget - dotnet pack -o dist - dotnet nuget push --source https://api.nuget.org/v3/index.json ./dist/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} \ No newline at end of file + dotnet pack .\dotnet\nuget\Nuget.sln -o release-artifacts + dotnet nuget push --source https://api.nuget.org/v3/index.json ./release-artifacts/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} \ No newline at end of file diff --git a/dotnet/nuget/Directory.Build.props b/dotnet/nuget/Directory.Build.props new file mode 100644 index 000000000..6a06d8d0d --- /dev/null +++ b/dotnet/nuget/Directory.Build.props @@ -0,0 +1,28 @@ + + + + Extism Contributors + extism, wasm, plugin + BSD-3-Clause + README.md + https://extism.org + https://github.com/your/repository.git + + netstandard2.1 + true + true + false + + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + + \ No newline at end of file diff --git a/dotnet/nuget/Extism.runtime.all.csproj b/dotnet/nuget/Extism.runtime.all.csproj new file mode 100644 index 000000000..2748bea06 --- /dev/null +++ b/dotnet/nuget/Extism.runtime.all.csproj @@ -0,0 +1,14 @@ + + + + Extism.runtime.all.nuspec + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.all.nuspec b/dotnet/nuget/Extism.runtime.all.nuspec new file mode 100644 index 000000000..101b84f02 --- /dev/null +++ b/dotnet/nuget/Extism.runtime.all.nuspec @@ -0,0 +1,27 @@ + + + + Extism.runtime.all + $Version + Extism Contributors + Extism Contributors + Internal implementation package for Extism + extism wasm plugin + BSD-3-Clause + https://github.com/extism/extism + false + Copyright © 2023 Extism Contributors + README.md + + + + + + + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.linux-arm64.csproj b/dotnet/nuget/Extism.runtime.linux-arm64.csproj new file mode 100644 index 000000000..b84111e1f --- /dev/null +++ b/dotnet/nuget/Extism.runtime.linux-arm64.csproj @@ -0,0 +1,15 @@ + + + + Extism.runtime.linux-arm64 + Internal implementation package for Extism to work on Linux ARM64 + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.linux-musl-arm64.csproj b/dotnet/nuget/Extism.runtime.linux-musl-arm64.csproj new file mode 100644 index 000000000..eeea5eefa --- /dev/null +++ b/dotnet/nuget/Extism.runtime.linux-musl-arm64.csproj @@ -0,0 +1,16 @@ + + + + Extism.runtime.linux-musl-arm64 + Internal implementation package for Extism to work on Linux Musl ARM64 + true + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.linux-x64.csproj b/dotnet/nuget/Extism.runtime.linux-x64.csproj new file mode 100644 index 000000000..f43693ad5 --- /dev/null +++ b/dotnet/nuget/Extism.runtime.linux-x64.csproj @@ -0,0 +1,15 @@ + + + + Extism.runtime.linux-x64 + Internal implementation package for Extism to work on Linux x64 + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.osx-arm64.csproj b/dotnet/nuget/Extism.runtime.osx-arm64.csproj new file mode 100644 index 000000000..5554315ee --- /dev/null +++ b/dotnet/nuget/Extism.runtime.osx-arm64.csproj @@ -0,0 +1,15 @@ + + + + Extism.runtime.osx-arm64 + Internal implementation package for Extism to work on macOS ARM64 + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.osx-x64.csproj b/dotnet/nuget/Extism.runtime.osx-x64.csproj new file mode 100644 index 000000000..49cfd3fa4 --- /dev/null +++ b/dotnet/nuget/Extism.runtime.osx-x64.csproj @@ -0,0 +1,15 @@ + + + + Extism.runtime.osx-x64 + Internal implementation package for Extism to work on macOS x64 + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.win-x64.csproj b/dotnet/nuget/Extism.runtime.win-x64.csproj new file mode 100644 index 000000000..64aab9711 --- /dev/null +++ b/dotnet/nuget/Extism.runtime.win-x64.csproj @@ -0,0 +1,15 @@ + + + + Extism.runtime.win-x64 + Internal implementation package for Extism to work on Windows x64 + + + + + + + diff --git a/dotnet/nuget/Extism.runtime.win.csproj b/dotnet/nuget/Extism.runtime.win.csproj deleted file mode 100644 index da7662808..000000000 --- a/dotnet/nuget/Extism.runtime.win.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - netstandard2.0;netstandard2.1 - true - false - - - - Extism.runtime.win-x64 - 0.7.0 - Extism Contributors - Internal implementation package for Extism to work on Windows x64 - extism, wasm, plugin - BSD-3-Clause - - - - - - diff --git a/dotnet/nuget/Nuget.sln b/dotnet/nuget/Nuget.sln new file mode 100644 index 000000000..b489e2619 --- /dev/null +++ b/dotnet/nuget/Nuget.sln @@ -0,0 +1,66 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.linux-arm64", "Extism.runtime.linux-arm64.csproj", "{F1CF6818-43C4-4CD6-A3AD-748EFC83C21B}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.linux-musl-arm64", "Extism.runtime.linux-musl-arm64.csproj", "{2E563F73-9FD5-42B2-9368-12BBF5819148}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.linux-x64", "Extism.runtime.linux-x64.csproj", "{A2E24D65-8AE2-4C09-82CB-5AEBA0539973}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.osx-arm64", "Extism.runtime.osx-arm64.csproj", "{66461A9C-140C-48C1-B658-BE540220460D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.osx-x64", "Extism.runtime.osx-x64.csproj", "{BE23CF82-F668-4166-8579-0FF2B20EA095}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.win-x64", "Extism.runtime.win-x64.csproj", "{639F9EFE-AC2A-43A7-A9BB-EDAEB306455F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Extism.runtime.all", "Extism.runtime.all.csproj", "{88DF54A7-845B-409D-93FE-64CF2864FFDE}" + ProjectSection(ProjectDependencies) = postProject + {2E563F73-9FD5-42B2-9368-12BBF5819148} = {2E563F73-9FD5-42B2-9368-12BBF5819148} + {639F9EFE-AC2A-43A7-A9BB-EDAEB306455F} = {639F9EFE-AC2A-43A7-A9BB-EDAEB306455F} + {66461A9C-140C-48C1-B658-BE540220460D} = {66461A9C-140C-48C1-B658-BE540220460D} + {A2E24D65-8AE2-4C09-82CB-5AEBA0539973} = {A2E24D65-8AE2-4C09-82CB-5AEBA0539973} + {BE23CF82-F668-4166-8579-0FF2B20EA095} = {BE23CF82-F668-4166-8579-0FF2B20EA095} + {F1CF6818-43C4-4CD6-A3AD-748EFC83C21B} = {F1CF6818-43C4-4CD6-A3AD-748EFC83C21B} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F1CF6818-43C4-4CD6-A3AD-748EFC83C21B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F1CF6818-43C4-4CD6-A3AD-748EFC83C21B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F1CF6818-43C4-4CD6-A3AD-748EFC83C21B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F1CF6818-43C4-4CD6-A3AD-748EFC83C21B}.Release|Any CPU.Build.0 = Release|Any CPU + {2E563F73-9FD5-42B2-9368-12BBF5819148}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E563F73-9FD5-42B2-9368-12BBF5819148}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E563F73-9FD5-42B2-9368-12BBF5819148}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E563F73-9FD5-42B2-9368-12BBF5819148}.Release|Any CPU.Build.0 = Release|Any CPU + {A2E24D65-8AE2-4C09-82CB-5AEBA0539973}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2E24D65-8AE2-4C09-82CB-5AEBA0539973}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2E24D65-8AE2-4C09-82CB-5AEBA0539973}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2E24D65-8AE2-4C09-82CB-5AEBA0539973}.Release|Any CPU.Build.0 = Release|Any CPU + {66461A9C-140C-48C1-B658-BE540220460D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {66461A9C-140C-48C1-B658-BE540220460D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {66461A9C-140C-48C1-B658-BE540220460D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {66461A9C-140C-48C1-B658-BE540220460D}.Release|Any CPU.Build.0 = Release|Any CPU + {BE23CF82-F668-4166-8579-0FF2B20EA095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BE23CF82-F668-4166-8579-0FF2B20EA095}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BE23CF82-F668-4166-8579-0FF2B20EA095}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BE23CF82-F668-4166-8579-0FF2B20EA095}.Release|Any CPU.Build.0 = Release|Any CPU + {639F9EFE-AC2A-43A7-A9BB-EDAEB306455F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {639F9EFE-AC2A-43A7-A9BB-EDAEB306455F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {639F9EFE-AC2A-43A7-A9BB-EDAEB306455F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {639F9EFE-AC2A-43A7-A9BB-EDAEB306455F}.Release|Any CPU.Build.0 = Release|Any CPU + {88DF54A7-845B-409D-93FE-64CF2864FFDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {88DF54A7-845B-409D-93FE-64CF2864FFDE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {88DF54A7-845B-409D-93FE-64CF2864FFDE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {88DF54A7-845B-409D-93FE-64CF2864FFDE}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/dotnet/nuget/README.md b/dotnet/nuget/README.md new file mode 100644 index 000000000..1da2b4567 --- /dev/null +++ b/dotnet/nuget/README.md @@ -0,0 +1,2 @@ +# Extism +The cross-language framework for building with WebAssembly (wasm). \ No newline at end of file From 728ee84b739ac7ae0fbb50db116e3218663a7b8f Mon Sep 17 00:00:00 2001 From: zach Date: Fri, 20 Oct 2023 10:30:10 -0700 Subject: [PATCH 087/176] doc: add `runtime/README.md` and `libextism/README.md` (#526) C: https://github.com/extism/extism/blob/new-readmes/libextism/README.md Rust: https://github.com/extism/extism/blob/new-readmes/runtime/README.md Also includes some small usability improvements I stumbled across when working on the docs --- libextism/API.md | 235 +++++++++++++++++++++++++++ libextism/README.md | 292 ++++++++++++++++++++++++++++++++++ manifest/src/lib.rs | 16 +- runtime/README.md | 207 ++++++++++++++++++++++++ runtime/benches/bench.rs | 2 +- runtime/build.rs | 3 + runtime/extism.h | 7 +- runtime/src/current_plugin.rs | 12 ++ runtime/src/function.rs | 29 +++- runtime/src/lib.rs | 2 +- runtime/src/sdk.rs | 13 +- runtime/src/tests/runtime.rs | 2 +- 12 files changed, 806 insertions(+), 14 deletions(-) create mode 100644 libextism/API.md create mode 100644 libextism/README.md create mode 100644 runtime/README.md diff --git a/libextism/API.md b/libextism/API.md new file mode 100644 index 000000000..f1adca581 --- /dev/null +++ b/libextism/API.md @@ -0,0 +1,235 @@ +# libextism API + +We [generate C headers](https://github.com/extism/extism/blob/main/runtime/extism.h) so that any language with a C-compatible FFI can bind functions to the runtime itself and embed Extism. This is how most of the [official SDKs](/docs/concepts/host-sdk) are created. + +If you would like to embed Extism into a language that we currently do not support, you should take a look at the header file linked above. + +The general set of functions that is necessary to satisfy the runtime requirements is: + +### `extism_plugin_new` + +Create a new plugin. +- `wasm`: is a WASM module (wat or wasm) or a JSON encoded manifest +- `wasm_size`: the length of the `wasm` parameter +- `functions`: is an array of `ExtismFunction*` +- `n_functions`: is the number of functions +- `with_wasi`: enables/disables WASI +- `errmsg`: error message during plugin creation + +```c +ExtismPlugin extism_plugin_new(const uint8_t *wasm, + ExtismSize wasm_size, + const ExtismFunction **functions, + ExtismSize n_functions, + bool with_wasi, + char **errmsg); +``` + +### `extism_plugin_free` + +Remove a plugin from the registry and free associated memory. + +```c +void extism_plugin_free(ExtismPlugin *plugin); +``` + +### `extism_plugin_config` + +Update plugin config values, this will merge with the existing values. + +```c +bool extism_plugin_config(ExtismPlugin *plugin, + const uint8_t *json, + ExtismSize json_size); +``` + +### `extism_plugin_function_exists` + +Returns true if `func_name` exists. + +```c +bool extism_plugin_function_exists(ExtismPlugin *plugin, + const char *func_name); +``` + +### `extism_plugin_call` + +Call a function. +- `func_name`: is the function to call +- `data`: is the input data +- `data_len`: is the length of `data` + +```c +int32_t extism_plugin_call(ExtismPlugin *plugin, + const char *func_name, + const uint8_t *data, + ExtismSize data_len); +``` + +### `extism_plugin_error` + +Get the error associated with a `Plugin` + +```c +const char *extism_plugin_error(ExtismPlugin *plugin); +``` + +### `extism_plugin_output_length` + +Get the length of a plugin's output data. + +```c +ExtismSize extism_plugin_output_length(ExtismPlugin *plugin); +``` + +### `extism_plugin_output_data` + +Get the plugin's output data. + +```c +const uint8_t *extism_plugin_output_data(ExtismPlugin *plugin); +``` + +### `extism_log_file` + +Set log file and level. + +```c +bool extism_log_file(const char *filename, const char *log_level); +``` + +### `extism_version` + +Get the Extism version string. + +```c +const char *extism_version(void); +``` + +### `extism_current_plugin_memory` + +Returns a pointer to the memory of the currently running plugin + +```c +uint8_t *extism_current_plugin_memory(ExtismCurrentPlugin *plugin); +``` + +### `extism_current_plugin_memory_alloc` + +Allocate a memory block in the currently running plugin + +```c +uint64_t extism_current_plugin_memory_alloc(ExtismCurrentPlugin *plugin, ExtismSize n); +``` + +### `extism_current_plugin_memory_length` + +Get the length of an allocated block + +```c +ExtismSize extism_current_plugin_memory_length(ExtismCurrentPlugin *plugin, ExtismSize n); +``` + +### `extism_current_plugin_memory_free` + +Free an allocated memory block + +```c +void extism_current_plugin_memory_free(ExtismCurrentPlugin *plugin, uint64_t ptr); +``` + +### `extism_function_new` +Create a new host function +- `name`: function name, this should be valid UTF-8 +- `inputs`: argument types +- `n_inputs`: number of argument types +- `outputs`: return types +- `n_outputs`: number of return types +- `func`: the function to call +- `user_data`: a pointer that will be passed to the function when it's called + this value should live as long as the function exists +- `free_user_data`: a callback to release the `user_data` value when the resulting + `ExtismFunction` is freed. + +Returns a new `ExtismFunction` or `null` if the `name` argument is invalid. + +```c +ExtismFunction *extism_function_new(const char *name, + const ExtismValType *inputs, + ExtismSize n_inputs, + const ExtismValType *outputs, + ExtismSize n_outputs, + ExtismFunctionType func, + void *user_data, + void (*free_user_data)(void *_)); +``` + +### `extism_function_set_namespace` + +Set the namespace of an `ExtismFunction` + +```c +void extism_function_set_namespace(ExtismFunction *ptr, const char *namespace_); +``` + +### `extism_function_free` + +Free an `ExtismFunction` + +```c +void extism_function_free(ExtismFunction *ptr); +``` + +### `extism_plugin_cancel_handle` + +Get handle for plugin cancellation + +```c +const ExtismCancelHandle *extism_plugin_cancel_handle(const ExtismPlugin *plugin); +``` + +### `extism_plugin_cancel` + +Cancel a running plugin from another thread + +```c +bool extism_plugin_cancel(const ExtismCancelHandle *handle); +``` + +## Type definitions: + +### `ExtismPlugin` + +```c +typedef int32_t ExtismPlugin; +``` + +### `ExtismSize` + +```c +typedef uint64_t ExtismSize; +``` + +### `ExtismFunction` + +`ExtismFunction` is used to register host functions with plugins + +```c +typedef struct ExtismFunction ExtismFunction; +``` + +### `ExtismCurrentPlugin` + +`ExtismCurrentPlugin` provides access to the currently executing plugin from within a host function + +```c +typedef struct ExtismCurrentPlugin ExtismCurrentPlugin; +``` + +### `ExtismCancelHandle` + +`ExtismCancelHandle` can be used to cancel a running plugin from another thread + +```c +typedef struct ExtismCancelHandle ExtismCancelHandle; +``` diff --git a/libextism/README.md b/libextism/README.md new file mode 100644 index 000000000..9ac2e8cf9 --- /dev/null +++ b/libextism/README.md @@ -0,0 +1,292 @@ +# Extism C SDK + +This crate contains no actual code, but is used to generated `libextism` from the [extism](../runtime) crate. + +The C SDK is a little different from the other languages because it is generated from the Rust source using cbindgen. It operates at a lower level than the other SDKs because they build higher level abstractions on top of it. + +## Building from source + +`libextism` can be built using the `Makefile` in the root of the repository: + +```shell +make +``` + +`libextism` will be built in `target/release/libextism.*` and the header file can be found in `runtime/extism.h` + +## Installation + +The [Extism CLI](https://github.com/extism/cli) can be used to install releases from Github: + +```shell +sudo PATH="$PATH" env extism lib install +``` + +Or from source: + +```shell +sudo make install DEST=/usr/local +``` + +This will install the shared object into `/usr/local/lib` and `extism.h` into `/usr/local/include`. + + +## Getting Started + +To use libextism you should include the header file: + +```c +#include +``` + +and link the library: + +``` +-lextism +``` + +### Creating A Plug-in + +The primary concept in Extism is the [plug-in](https://extism.org/docs/concepts/plug-in). You can think of a plug-in as a code module stored in a `.wasm` file. + +Since you may not have an Extism plug-in on hand to test, let's load a demo plug-in from the web: + +```c +#include +#include +#include +#include +#include + +void print_plugin_output(ExtismPlugin *plugin, int32_t rc){ + if (rc != EXTISM_SUCCESS) { + fprintf(stderr, "ERROR: %s\n", extism_plugin_error(plugin)); + return; + } + + size_t outlen = extism_plugin_output_length(plugin); + const uint8_t *out = extism_plugin_output_data(plugin); + write(STDOUT_FILENO, out, outlen); +} + +int main(void) { + const char *manifest = "{\"wasm\": [{\"url\": " + "\"https://github.com/extism/plugins/releases/latest/" + "download/count_vowels.wasm\"}]}"; + + char *errmsg = NULL; + ExtismPlugin *plugin = extism_plugin_new( + (const uint8_t *)manifest, strlen(manifest), NULL, 0, true, &errmsg); + if (plugin == NULL) { + fprintf(stderr, "ERROR: %s\n", errmsg); + extism_plugin_new_error_free(errmsg); + exit(1); + } + + const char *input = "Hello, world!"; + print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, strlen(input))); + extism_plugin_free(plugin); + return 0; +} +``` + +> **Note**: In this case the manifest is a string constant, however it has a rich schema and a lot of options, see the [extism-manifest docs](https://docs.rs/extism-manifest/latest/extism_manifest/) for more details. + +### Calling A Plug-in's Exports + +This plug-in was written in Rust and it does one thing, it counts vowels in a string. As such, it exposes one "export" function: `count_vowels`. We can call exports using `extism_plugin_call`, then will use `extism_plugin_output_length` +and `extism_plugin_output_data` to get the result: + +```c +int32_t rc = extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, strlen(input)); +if (rc != EXTISM_SUCCESS) { + fprintf(stderr, "ERROR: %s\n", extism_plugin_error(plugin)); + exit(2); +} + +size_t outlen = extism_plugin_output_length(plugin); +const uint8_t *out = extism_plugin_output_data(plugin); +write(STDOUT_FILENO, out, outlen); +``` + +Will print + +``` +{"count": 3, "total": 3, "vowels": "aeiouAEIOU"} +``` + +All exports have a simple interface of bytes-in and bytes-out. This plug-in happens to take a string and return a JSON encoded string with a report of results. + +### Plug-in State + +Plug-ins may be stateful or stateless. Plug-ins can maintain state b/w calls by the use of variables. Our count vowels plug-in remembers the total number of vowels it's ever counted in the "total" key in the result. You can see this by making subsequent calls to the export: + +```c +print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, strlen(input))); +# => {"count": 3, "total": 6, "vowels": "aeiouAEIOU"} +print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, strlen(input))); +# => {"count": 3, "total": 9, "vowels": "aeiouAEIOU"} +``` + +These variables will persist until this plug-in is freed or you initialize a new one. + +### Configuration + +Plug-ins may optionally take a configuration object. This is a static way to configure the plug-in. Our count-vowels plugin takes an optional configuration to change out which characters are considered vowels. Example: + +```c +const char *input = "Yellow, world!"; +print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, strlen(input))); +# => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} +const char * config = "{\"vowels\": \"aeiouyAEIOUY\"}"; +extism_plugin_config(plugin, config, strlen(config)); +print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, strlen(input))); +# => {"count": 4, "total": 4, "vowels": "aeiouyAEIOUY"} +``` + +### Host Functions + +Let's extend our count-vowels example a little bit: Instead of storing the `total` in an ephemeral plug-in var, let's store it in a persistent key-value store! + +Wasm can't use our KV store on it's own. This is where [Host Functions](https://extism.org/docs/concepts/host-functions) come in. + +[Host functions](https://extism.org/docs/concepts/host-functions) allow us to grant new capabilities to our plug-ins from our application. They are simply some C functions you write which can be passed down and invoked from any language inside the plug-in. + +Let's load the manifest like usual but load up this `count_vowels_kvstore` plug-in from `https://github.com/extism/plugins/releases/latest/download/count_vowels.wasm` + +> *Note*: The source code for this is [here](https://github.com/extism/plugins/blob/main/count_vowels_kvstore/src/lib.rs) and is written in rust, but it could be written in any of our PDK languages. + +Unlike our previous plug-in, this plug-in expects you to provide host functions that satisfy our its import interface for a KV store. + +We want to expose two functions to our plugin, `kv_write(key: String, value: Bytes)` which writes a bytes value to a key and `kv_read(key: String) -> Bytes` which reads the bytes at the given `key`. + +```c +#include +#include +#include +#include +#include + +// A stubbed out KV store +typedef struct KVStore KVStore; +extern KVStore *fake_kv_store_new(); +extern void fake_kv_store_free(KVStore *kv); +extern void fake_kv_store_set(KVStore *kv, const char *key, size_t keylen, + uint32_t); +extern const uint32_t fake_kv_store_get(KVStore *kv, const char *key, + size_t keylen); + +// Our host functions to access the fake KV store +void kv_get(ExtismCurrentPlugin *plugin, const ExtismVal *inputs, + size_t ninputs, ExtismVal *outputs, size_t noutputs, + void *userdata) { + // Cast the userdata pointer + KVStore *kv = (KVStore *)userdata; + + // Get the offset to the key in the plugin memory + uint64_t offs = inputs[0].v.i64; + size_t keylen = extism_current_plugin_memory_length(plugin, offs); + + // Allocate a new block to return + uint64_t outoffs = + extism_current_plugin_memory_alloc(plugin, sizeof(uint32_t)); + + // Load the value from our k/v store + uint64_t value = fake_kv_store_get( + kv, (const char *)extism_current_plugin_memory(plugin) + offs, keylen); + + // Update the plugin memory + *(uint64_t *)(extism_current_plugin_memory(plugin) + outoffs) = value; + + // Return the offset to our allocated block + outputs[0].t = I64; + outputs[0].v.i64 = outoffs; +} + +void kv_set(ExtismCurrentPlugin *plugin, const ExtismVal *inputs, + size_t ninputs, ExtismVal *outputs, size_t noutputs, + void *userdata) { + // Cast the userdata pointer + KVStore *kv = (KVStore *)userdata; + + // Get the offset to the key in the plugin memory + uint64_t keyoffs = inputs[0].v.i64; + size_t keylen = extism_current_plugin_memory_length(plugin, keyoffs); + + // Get the offset to the value in the plugin memory + uint64_t valueoffs = inputs[1].v.i64; + size_t valuelen = extism_current_plugin_memory_length(plugin, valueoffs); + + // Set key => value + fake_kv_store_set( + kv, (const char *)extism_current_plugin_memory(plugin) + keyoffs, keylen, + *(uint32_t *)(extism_current_plugin_memory(plugin) + keyoffs)); +} + +int main(void) { + KVStore *kv = fake_kv_store_new(); + const char *manifest = "{\"wasm\": [{\"url\": " + "\"https://github.com/extism/plugins/releases/latest/" + "download/count_vowels_kvstore.wasm\"}]}"; + const ExtismValType kv_get_inputs[] = {I64}; + const ExtismValType kv_get_outputs[] = {I64}; + ExtismFunction *kv_get_fn = extism_function_new( + "kv_get", kv_get_inputs, 1, kv_get_outputs, 1, kv_get, kv, NULL); + + const ExtismValType kv_set_inputs[] = {I64}; + const ExtismValType kv_set_outputs[] = {I64}; + ExtismFunction *kv_set_fn = extism_function_new( + "kv_set", kv_set_inputs, 1, kv_set_outputs, 1, kv_set, kv, NULL); + const ExtismFunction *functions[] = {kv_get_fn}; + char *errmsg = NULL; + ExtismPlugin *plugin = extism_plugin_new( + (const uint8_t *)manifest, strlen(manifest), functions, 1, true, &errmsg); + if (plugin == NULL) { + fprintf(stderr, "ERROR: %s\n", errmsg); + extism_plugin_new_error_free(errmsg); + exit(1); + } + + const char *input = "Hello, world!"; + print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, + strlen(input))); + print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, + strlen(input))); + + extism_plugin_free(plugin); + extism_function_free(kv_get_fn); + extism_function_free(kv_set_fn); + fake_kv_store_free(kv); + return 0; +} +``` + +> *Note*: In order to write host functions you should get familiar with the `extism_current_plugin_*` functions. + +Now when we invoke the event: + +```c +print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, + strlen(input))); +# => Read from key=count-vowels" +# => Writing value=3 from key=count-vowels" +# => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} + +print_plugin_output(plugin, extism_plugin_call(plugin, "count_vowels", + (const uint8_t *)input, + strlen(input))); +# => Read from key=count-vowels" +# => Writing value=6 from key=count-vowels" +# => {"count": 3, "total": 6, "vowels": "aeiouAEIOU"} +``` + + diff --git a/manifest/src/lib.rs b/manifest/src/lib.rs index 7e66293d0..06f56e647 100644 --- a/manifest/src/lib.rs +++ b/manifest/src/lib.rs @@ -145,9 +145,21 @@ impl Wasm { } /// Load Wasm from a URL - pub fn url(req: HttpRequest) -> Self { + pub fn url(url: impl Into) -> Self { Wasm::Url { - req, + req: HttpRequest { + url: url.into(), + headers: Default::default(), + method: None, + }, + meta: Default::default(), + } + } + + /// Load Wasm from an HTTP request + pub fn http(req: impl Into) -> Self { + Wasm::Url { + req: req.into(), meta: Default::default(), } } diff --git a/runtime/README.md b/runtime/README.md new file mode 100644 index 000000000..e6290fca5 --- /dev/null +++ b/runtime/README.md @@ -0,0 +1,207 @@ +# Extism runtime and rust-sdk + +This repo contains the code for the [Extism](https://extism.org/) runtime and rust-sdk. It can be embedded in any Rust application to call Extism plug-ins. + +> **Note**: If you're unsure what Extism is or what an SDK is see our homepage: [https://extism.org](https://extism.org). + +## Installation + +### Cargo + +To use the `extism` crate, you can add it to your Cargo file: + +```toml +[depdendencies] +extism = "*" +``` + +## Getting Started + +This guide should walk you through some of the concepts in Extism and the `extism` crate. + +### Creating A Plug-in + +The primary concept in Extism is the [plug-in](https://extism.org/docs/concepts/plug-in). You can think of a plug-in as a code module stored in a `.wasm` file. + +Since you may not have an Extism plug-in on hand to test, let's load a demo plug-in from the web: + +```rust +use extism::*; + +fn main() { + let url = Wasm::url( + "https://github.com/extism/plugins/releases/latest/download/count_vowels.wasm" + ); + let manifest = Manifest::new([url]); + let mut plugin = Plugin::new_with_manifest(&manifest, [], true).unwrap(); + let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); + println!("{}", res); +} +``` + +> **Note**: See [the Manifest docs](https://docs.rs/extism-manifest/0.5.0/extism_manifest/) as it has a rich schema and a lot of options. + +### Calling A Plug-in's Exports + +This plug-in was written in Rust and it does one thing, it counts vowels in a string. As such, it exposes one "export" function: `count_vowels`. We can call exports using [Extism::Plugin::call](https://docs.rs/extism/latest/extism/struct.Plugin.html#method.call): + +```rust +let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); +println!("{}", res); +# => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} +``` + +All exports have a simple interface of bytes-in and bytes-out. This plug-in happens to take a string and return a JSON encoded string with a report of results. + +The `call` function uses [extism-convert](https://docs.rs/extism-convert) to determine which input/output types can be used. If we wanted to use a concrete type for +the `count_vowels` result, we could defined a struct: + +```rust +#[derive(Debug, serde::Deserialize)] +struct VowelCount { + count: usize, + total: usize, + vowels: String, +} +``` + +Then we can use [Json](https://docs.rs/extism-convert/latest/extism_convert/struct.Json.html) to get the JSON results decoded into `VowelCount`: + +```rust +let Json(res) = plugin.call::<&str, Json>::("count_vowels", "Hello, world!").unwrap(); +println!("{:?}", res); +# => VowelCount {count: 3, total: 3, vowels: "aeiouAEIOU"} +``` + +### Plug-in State + +Plug-ins may be stateful or stateless. Plug-ins can maintain state b/w calls by the use of variables. Our count vowels plug-in remembers the total number of vowels it's ever counted in the "total" key in the result. You can see this by making subsequent calls to the export: + +```rust +let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); +println!("{}", res); +# => {"count": 3, "total": 6, "vowels": "aeiouAEIOU"} + +let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); +println!("{}", res); +# => {"count": 3, "total": 9, "vowels": "aeiouAEIOU"} +``` + +These variables will persist until this plug-in is freed or you initialize a new one. + +### Configuration + +Plug-ins may optionally take a configuration object. This is a static way to configure the plug-in. Our count-vowels plugin takes an optional configuration to change out which characters are considered vowels. Example: + +```rust +let manifest = Manifest::new([url]); +let mut plugin = Plugin::new_with_manifest(&manifest, [], true); +let res = plugin.call::<&str, &str>::("count_vowels", "Yellow, world!").unwrap(); +println!("{}", res); +# => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} +let mut plugin = Plugin::new_with_manifest(&manifest, [], true).with_config_key("vowels", "aeiouyAEIOUY"); +let res = plugin.call::<&str, &str>::("count_vowels", "Yellow, world!").unwrap(); +println!("{}", res); +# => {"count": 4, "total": 4, "vowels": "aeiouyAEIOUY"} +``` + +### Host Functions + +Let's extend our count-vowels example a little bit: Instead of storing the `total` in an ephemeral plug-in var, let's store it in a persistent key-value store! + +Wasm can't use our KV store on it's own. This is where [Host Functions](https://extism.org/docs/concepts/host-functions) come in. + +[Host functions](https://extism.org/docs/concepts/host-functions) allow us to grant new capabilities to our plug-ins from our application. They are simply some Rust functions you write which can be passed down and invoked from any language inside the plug-in. + +Let's load the manifest like usual but load up this `count_vowels_kvstore` plug-in: + +```rust +let url = Wasm::url( + "https://github.com/extism/plugins/releases/latest/download/count_vowels_kvstore.wasm" +); +let manifest = Manifest::new([url]); +``` + +> *Note*: The source code for this is [here](https://github.com/extism/plugins/blob/main/count_vowels_kvstore/src/lib.rs) and is written in rust, but it could be written in any of our PDK languages. + +Unlike our previous plug-in, this plug-in expects you to provide host functions that satisfy our its import interface for a KV store. + +We want to expose two functions to our plugin, `kv_write(key: String, value: Bytes)` which writes a bytes value to a key and `kv_read(key: String) -> Bytes` which reads the bytes at the given `key`. + +```rust +use extism::*; + +// pretend this is redis or something :) +type Map = std::collections::BTreeMap>; +type KVStore = std::sync::Arc>; + +// When an untyped first argument is provided to `host_fn` it is used as the +// variable name for the `UserData` parameter +host_fn!(kv_read(user_data, key: String) -> u32 { + let kv = user_data.get::().unwrap(); + let value = kv + .lock() + .unwrap() + .get(&key) + .map(|x| u32::from_le_bytes(x.clone().try_into().unwrap())) + .unwrap_or_else(|| 0u32); + Ok(value) +}); + +host_fn!(kv_write(user_data, key: String, value: u32) { + let kv = user_data.get_mut::().unwrap(); + kv.lock().unwrap().insert(key, value.to_le_bytes().to_vec()); + Ok(()) +}); + +fn main() { + let kv_store = KVStore::default(); + + // Wrap kv_read function + let kv_read = Function::new( + "kv_read", + [ValType::I64], + [ValType::I64], + Some(UserData::new(kv_store.clone())), + kv_read, + ); + + // Wrap kv_write function + let kv_write = Function::new( + "kv_write", + [ValType::I64, ValType::I64], + [], + Some(UserData::new(kv_store.clone())), + kv_write, + ); + + let url = Wasm::url( + "https://github.com/extism/plugins/releases/latest/download/count_vowels_kvstore.wasm", + ); + let manifest = Manifest::new([url]); + let mut plugin = Plugin::new_with_manifest(&manifest, [kv_read, kv_write], true); + let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); + println!("{}", res); +} +``` + +> *Note*: In order to write host functions you should get familiar with the methods on the [Extism::CurrentPlugin](https://docs.rs/extism/latest/extism/struct.CurrentPlugin.html) and [Extism::CurrentPlugin](https://docs.rs/extism/latest/extism/struct.UserData.html) types. + +Now we can invoke the event: + +```rust +let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); +println!("{}", res); +# => Read from key=count-vowels" +# => Writing value=3 from key=count-vowels" +# => {"count": 3, "total": 3, "vowels": "aeiouAEIOU"} + +let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); +println!("{}", res); +# => Read from key=count-vowels" +# => Writing value=6 from key=count-vowels" +# => {"count": 3, "total": 6, "vowels": "aeiouAEIOU"} +``` + + + diff --git a/runtime/benches/bench.rs b/runtime/benches/bench.rs index d61ac245d..e6c6be01b 100644 --- a/runtime/benches/bench.rs +++ b/runtime/benches/bench.rs @@ -4,7 +4,7 @@ use extism::*; const COUNT_VOWELS: &[u8] = include_bytes!("../../wasm/code.wasm"); const REFLECT: &[u8] = include_bytes!("../../wasm/reflect.wasm"); -host_fn!(hello_world (a: String) -> String { a }); +host_fn!(hello_world (a: String) -> String { Ok(a) }); pub fn basic(c: &mut Criterion) { let mut g = c.benchmark_group("basic"); diff --git a/runtime/build.rs b/runtime/build.rs index 88057762e..e755bb58d 100644 --- a/runtime/build.rs +++ b/runtime/build.rs @@ -4,6 +4,9 @@ fn main() { let fn_macro = " #define EXTISM_FUNCTION(N) extern void N(ExtismCurrentPlugin*, const ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, void*) #define EXTISM_GO_FUNCTION(N) extern void N(void*, ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, uintptr_t) + +/** The return code from extism_plugin_call used to signal a successful call with no errors */ +#define EXTISM_SUCCESS 0 "; if let Ok(bindings) = cbindgen::Builder::new() .with_crate(".") diff --git a/runtime/extism.h b/runtime/extism.h index 57171f6fb..2560f2396 100644 --- a/runtime/extism.h +++ b/runtime/extism.h @@ -6,6 +6,9 @@ #define EXTISM_FUNCTION(N) extern void N(ExtismCurrentPlugin*, const ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, void*) #define EXTISM_GO_FUNCTION(N) extern void N(void*, ExtismVal*, ExtismSize, ExtismVal*, ExtismSize, uintptr_t) +/** The return code from extism_plugin_call used to signal a successful call with no errors */ +#define EXTISM_SUCCESS 0 + /** * An enumeration of all possible value types in WebAssembly. @@ -95,7 +98,7 @@ typedef void (*ExtismFunctionType)(ExtismCurrentPlugin *plugin, void *data); /** - * Get a plugin's ID, the returned bytes are a 16 byte buffer that represent a UUID value + * Get a plugin's ID, the returned bytes are a 16 byte buffer that represent a UUIDv4 */ const uint8_t *extism_plugin_id(ExtismPlugin *plugin); @@ -196,7 +199,7 @@ const ExtismCancelHandle *extism_plugin_cancel_handle(const ExtismPlugin *plugin bool extism_plugin_cancel(const ExtismCancelHandle *handle); /** - * Update plugin config values, this will merge with the existing values + * Update plugin config values. */ bool extism_plugin_config(ExtismPlugin *plugin, const uint8_t *json, ExtismSize json_size); diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index fc56f7e61..d99147a93 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -110,6 +110,18 @@ impl CurrentPlugin { } } + /// Encode a Rust type into Extism memory and store it in the given `Val`, this can be used to return + /// values from host functions. + pub fn memory_set_val<'a, T: ToBytes<'a>>( + &'a mut self, + offs: &mut Val, + data: T, + ) -> Result<(), Error> { + let mem = self.memory_new(data)?; + *offs = Val::I64(mem.offset as i64); + Ok(()) + } + pub fn memory_bytes(&mut self, handle: MemoryHandle) -> Result<&mut [u8], Error> { let (linker, mut store) = self.linker_and_store(); let mem = linker diff --git a/runtime/src/function.rs b/runtime/src/function.rs index 344a9322d..73a61c7c3 100644 --- a/runtime/src/function.rs +++ b/runtime/src/function.rs @@ -120,6 +120,11 @@ impl UserData { unsafe { Some(&*self.ptr) } } + /// Get a reference to the value stored in `UserData` if it matches the initial type + pub fn get(&self) -> Option<&T> { + self.any().and_then(|x| x.downcast_ref()) + } + /// Get the pointer as a mutable `Any` value - this will only return `Some` if `UserData::new` was used to create the value, /// when `UserData::new_pointer` is used there is no way to know the original type of the pointer pub fn any_mut(&mut self) -> Option<&mut dyn std::any::Any> { @@ -129,6 +134,11 @@ impl UserData { unsafe { Some(&mut *self.ptr) } } + + /// Get a mutable reference to the value stored in `UserData` if it matches the initial type + pub fn get_mut(&mut self) -> Option<&mut T> { + self.any_mut().and_then(|x| x.downcast_mut()) + } } impl Default for UserData { @@ -244,16 +254,25 @@ impl Function { /// For example, the following defines a host function named `add_newline` that takes a /// string parameter and returns a string result: /// ```rust -/// extism::host_fn!(add_newline(a: String) -> String { a + "\n" }); +/// extism::host_fn!(add_newline(_user_data, a: String) -> String { Ok(a + "\n") }); /// ``` +/// A few things worth noting: +/// - The function always returns a `Result` that wraps the specified return type +/// - If an untyped first parameter is passed (`_user_data` above) it will be +/// the name of the `UserData` parameter and can be used from inside the function +// definition. #[macro_export] macro_rules! host_fn { - ($name: ident ($($arg:ident : $argty:ty),*) -> $ret:ty $b:block) => { + ($name: ident ($($arg:ident : $argty:ty),*) $(-> $ret:ty)? $b:block) => { + $crate::host_fn!($name (user_data, $($arg : $argty),*) $(-> $ret)? {$b}); + }; + ($name: ident ($user_data:ident, $($arg:ident : $argty:ty),*) $(-> $ret:ty)? $b:block) => { fn $name( plugin: &mut $crate::CurrentPlugin, inputs: &[$crate::Val], outputs: &mut [$crate::Val], - _user_data: $crate::UserData, + #[allow(unused)] + mut $user_data: $crate::UserData, ) -> Result<(), $crate::Error> { let mut index = 0; $( @@ -263,8 +282,8 @@ macro_rules! host_fn { index += 1; } )* - let output = move || { $b }; - let output = plugin.memory_new(&output())?; + let output = move || -> Result<_, $crate::Error> { $b }; + let output: $crate::convert::MemoryHandle = plugin.memory_new(&output()?)?; outputs[0] = plugin.memory_to_val(output); Ok(()) } diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 746badc72..804a9a228 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -20,7 +20,7 @@ pub mod sdk; pub use current_plugin::CurrentPlugin; pub use extism_convert::{FromBytes, FromBytesOwned, ToBytes}; -pub use extism_manifest::Manifest; +pub use extism_manifest::{Manifest, Wasm}; pub use function::{Function, UserData, Val, ValType}; pub use plugin::{CancelHandle, Plugin}; pub use plugin_builder::PluginBuilder; diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index c51669275..e1005f108 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -8,6 +8,9 @@ use crate::*; pub type ExtismMemoryHandle = u64; pub type Size = u64; +/// The return code used to specify a successful plugin call +pub static EXTISM_SUCCESS: i32 = 0; + /// A union type for host function argument/return values #[repr(C)] pub union ValUnion { @@ -67,7 +70,7 @@ impl From<&wasmtime::Val> for ExtismVal { } } -/// Get a plugin's ID, the returned bytes are a 16 byte buffer that represent a UUID value +/// Get a plugin's ID, the returned bytes are a 16 byte buffer that represent a UUIDv4 #[no_mangle] pub unsafe extern "C" fn extism_plugin_id(plugin: *mut Plugin) -> *const u8 { if plugin.is_null() { @@ -230,6 +233,9 @@ pub unsafe extern "C" fn extism_function_new( /// Free `ExtismFunction` #[no_mangle] pub unsafe extern "C" fn extism_function_free(f: *mut Function) { + if f.is_null() { + return; + } drop(Box::from_raw(f)) } @@ -329,7 +335,10 @@ pub unsafe extern "C" fn extism_plugin_cancel(handle: *const CancelHandle) -> bo handle.cancel().is_ok() } -/// Update plugin config values, this will merge with the existing values +/// Update plugin config values. +// +// This will merge with the existing values, if an existing value is set to `null` it will +// be removed #[no_mangle] pub unsafe extern "C" fn extism_plugin_config( plugin: *mut Plugin, diff --git a/runtime/src/tests/runtime.rs b/runtime/src/tests/runtime.rs index a5d536faa..31ca03af8 100644 --- a/runtime/src/tests/runtime.rs +++ b/runtime/src/tests/runtime.rs @@ -7,7 +7,7 @@ const WASM_LOOP: &[u8] = include_bytes!("../../../wasm/loop.wasm"); const WASM_GLOBALS: &[u8] = include_bytes!("../../../wasm/globals.wasm"); const WASM_REFLECT: &[u8] = include_bytes!("../../../wasm/reflect.wasm"); -host_fn!(hello_world (a: String) -> String { a }); +host_fn!(hello_world (a: String) -> String { Ok(a) }); // Which is the same as: // fn hello_world( From 8ff9b9a01572d70e9a2510ac6315ae41947c5b04 Mon Sep 17 00:00:00 2001 From: zach Date: Fri, 20 Oct 2023 10:52:08 -0700 Subject: [PATCH 088/176] chore: support wasmtime 14.0.0 (#529) --- runtime/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 1179135d8..9b2dcaa5a 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,8 +9,8 @@ repository = "https://github.com/extism/extism" description = "Extism runtime and Rust SDK" [dependencies] -wasmtime = ">= 13.0.0, < 14.0.0" -wasmtime-wasi = ">= 13.0.0, < 14.0.0" +wasmtime = ">= 13.0.0, < 15.0.0" +wasmtime-wasi = ">= 13.0.0, < 15.0.0" anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" From 30322dba234d2894f9e3ed494dd2d531475c3aa1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 15:56:46 -0500 Subject: [PATCH 089/176] chore(deps-dev): Bump ex_doc from 0.30.7 to 0.30.9 in /elixir (#536) Bumps [ex_doc](https://github.com/elixir-lang/ex_doc) from 0.30.7 to 0.30.9.
    Changelog

    Sourced from ex_doc's changelog.

    v0.30.9 (2023-10-20)

    • Bug fixes

      • Fix a scenario where invalid assets would be generated
    • Enhancements

      • Add admonition EPUB styles

    v0.30.8 (2023-10-17)

    • Bug fixes
      • Fix regression in umbrella applications
    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ex_doc&package-manager=hex&previous-version=0.30.7&new-version=0.30.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- elixir/mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elixir/mix.lock b/elixir/mix.lock index b89b99578..06b439f66 100644 --- a/elixir/mix.lock +++ b/elixir/mix.lock @@ -1,6 +1,6 @@ %{ "earmark_parser": {:hex, :earmark_parser, "1.4.37", "2ad73550e27c8946648b06905a57e4d454e4d7229c2dafa72a0348c99d8be5f7", [:mix], [], "hexpm", "6b19783f2802f039806f375610faa22da130b8edc21209d0bff47918bb48360e"}, - "ex_doc": {:hex, :ex_doc, "0.30.7", "dc7247091aec738ab781f71cbebfc07979d1040c98c7ee67dbde99b7829b743d", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "868ff1c7a44c462741853840d1e7ef19a07906e7467cb8da070c158ea6a42a51"}, + "ex_doc": {:hex, :ex_doc, "0.30.9", "d691453495c47434c0f2052b08dd91cc32bc4e1a218f86884563448ee2502dd2", [:mix], [{:earmark_parser, "~> 1.4.31", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "d7aaaf21e95dc5cddabf89063327e96867d00013963eadf2c6ad135506a8bc10"}, "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"}, "json": {:hex, :json, "1.4.1", "8648f04a9439765ad449bc56a3ff7d8b11dd44ff08ffcdefc4329f7c93843dfa", [:mix], [], "hexpm", "9abf218dbe4ea4fcb875e087d5f904ef263d012ee5ed21d46e9dbca63f053d16"}, "makeup": {:hex, :makeup, "1.1.0", "6b67c8bc2882a6b6a445859952a602afc1a41c2e08379ca057c0f525366fc3ca", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "0a45ed501f4a8897f580eabf99a2e5234ea3e75a4373c8a52824f6e873be57a6"}, From abb31ee7ded4eea1b1e6cc23130b1f2bf39118c6 Mon Sep 17 00:00:00 2001 From: Chance Snow Date: Mon, 23 Oct 2023 16:00:17 -0500 Subject: [PATCH 090/176] feat(dlang): Add a D host SDK (#412) See [dlang.org](https://dlang.org). SDK Coverage: ~91.30% (21/23) ## Issues - [x] These symbols are undefined in the latest release ([v0.5.2](https://github.com/extism/extism/releases/tag/v0.5.2)): > Undefined symbols for architecture x86_64: > "_extism_plugin_id" > "_extism_plugin_new_error_free" Using `libextism` compiled from source does _not_ have this issue. - [ ] `dub lint` reads many intermediate targets files: https://github.com/dlang/dub/issues/2700 ## Todo List - [x] Flesh out initial binding - [ ] Cover host API: - [x] `ExtismFunctionType` See `FunctionType` alias. - [x] `extism_plugin_id` - [x] `extism_plugin_new_error_free` - [ ] `extism_plugin_error` - [ ] Add unit tests - [x] Add usage example --------- Co-authored-by: zach --- .github/workflows/ci-d.yml | 36 +++++ .gitignore | 2 + d/.gitignore | 7 + d/README.md | 42 ++++++ d/examples/hello/.gitignore | 17 +++ d/examples/hello/dub.json | 15 ++ d/examples/hello/source/app.d | 33 +++++ d/extism.d | 258 ++++++++++++++++++++++++++++++++++ d/runtime.c | 1 + dscanner.ini | 116 +++++++++++++++ dub.json | 23 +++ scripts/sdk_coverage.py | 1 + 12 files changed, 551 insertions(+) create mode 100644 .github/workflows/ci-d.yml create mode 100644 d/.gitignore create mode 100644 d/README.md create mode 100644 d/examples/hello/.gitignore create mode 100644 d/examples/hello/dub.json create mode 100644 d/examples/hello/source/app.d create mode 100644 d/extism.d create mode 100644 d/runtime.c create mode 100644 dscanner.ini create mode 100644 dub.json diff --git a/.github/workflows/ci-d.yml b/.github/workflows/ci-d.yml new file mode 100644 index 000000000..f14da46fd --- /dev/null +++ b/.github/workflows/ci-d.yml @@ -0,0 +1,36 @@ +on: + pull_request: + paths: + - .github/actions/extism/** + - .github/workflows/ci-d.yml + - manifest/** + - runtime/** + - libextism/** + - d/** + workflow_dispatch: + +name: D CI + +jobs: + d: + name: D + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + # TODO: Use multiple versions once stable + d_version: [ldc-1.33.0] + rust: + - stable + steps: + - uses: actions/checkout@v3 + - uses: ./.github/actions/extism + - name: Setup D environment + uses: dlang-community/setup-dlang@v1 + with: + compiler: ${{ matrix.d_version }} + + - name: Test D Host SDK + run: | + dub --version + LD_LIBRARY_PATH=/usr/local/lib dub test diff --git a/.gitignore b/.gitignore index 8d4811ccb..c6d30027e 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,8 @@ python/poetry.lock c/main cpp/test/test cpp/example +.dub +dub.selections.json go/main ruby/.bundle/ ruby/.yardoc diff --git a/d/.gitignore b/d/.gitignore new file mode 100644 index 000000000..8fba0fa8b --- /dev/null +++ b/d/.gitignore @@ -0,0 +1,7 @@ +# Generated by host system's C preprocessor +# See https://dlang.org/spec/importc.html#manual-cpp +runtime.i + +docs.json +extism-test-* +*.lst diff --git a/d/README.md b/d/README.md new file mode 100644 index 000000000..5d5e2743e --- /dev/null +++ b/d/README.md @@ -0,0 +1,42 @@ +# Extism D SDK + +D bindings to the Extism host SDK. + +## Development + +1. Ensure a [D compiler](https://dlang.org/download) is installed and available in your `PATH`. + > Note: The compiler's frontend must be at least version `2.102`. +2. Ensure the extism shared library is installed *before* running tests or examples: + + See [Installing Extism](https://extism.org/docs/install) documentation. + + ```sh + extism install latest + extism link + ``` + + > Note: The `extism install` command may require `sudo`. + +### Lint Sources + +```sh +dub lint +``` + +> Note: Until [dlang/dub#2700](https://github.com/dlang/dub/issues/2700) is fixed, ensure all non-D sources (e.g. intermediate `*.d` files in `targets`) are cleaned from the repo. +> +> Run `cargo clean` to avoid seeing many invalid lint issues. + +### Running Tests + +```sh +dub test +``` + +## Examples + +### Hello World + +```sh +dub run extism:hello +``` diff --git a/d/examples/hello/.gitignore b/d/examples/hello/.gitignore new file mode 100644 index 000000000..6fe9ad805 --- /dev/null +++ b/d/examples/hello/.gitignore @@ -0,0 +1,17 @@ +.dub +docs.json +__dummy.html +docs/ +/extism_hello +/hello +hello.so +hello.dylib +hello.dll +hello.a +hello.lib +hello-test-* +*.exe +*.pdb +*.o +*.obj +*.lst diff --git a/d/examples/hello/dub.json b/d/examples/hello/dub.json new file mode 100644 index 000000000..f10c6c462 --- /dev/null +++ b/d/examples/hello/dub.json @@ -0,0 +1,15 @@ +{ + "name": "hello", + "description": "A minimal Extism usage example", + "license": "BSD-3-Clause", + "authors": [ + "Chance Snow ", + "Extism contributors" + ], + "copyright": "Copyright © 2023, Extism contributors", + "dependencies": { + "extism": { + "path": "../../../" + } + } +} diff --git a/d/examples/hello/source/app.d b/d/examples/hello/source/app.d new file mode 100644 index 000000000..7a5eba008 --- /dev/null +++ b/d/examples/hello/source/app.d @@ -0,0 +1,33 @@ +import std.conv: castFrom, to; +import std.file; +import std.functional: toDelegate; +import std.stdio; +import std.string: representation; +import std.typecons : Yes; + +import extism; + +void main() { + auto wasm = cast(ubyte[]) read("wasm/code-functions.wasm"); + // FIXME: Creating the plugin results in EXC_BAD_ACCESS (segfault?) from `extism_plugin_new` + auto plugin = new Plugin(wasm, [ + Function!string( + "hello_world", /* Inputs */ [ValType.i64], /* Outputs */ [ValType.i64], toDelegate(&helloWorld), "Hello, again!" + ), + ], Yes.withWasi); + + auto input = "aeiou"; + plugin.call("count_vowels", cast(ubyte[]) input.representation); + writeln(plugin.outputData); +} + +/// +void helloWorld(CurrentPlugin plugin, const Val[] inputs, Val[] outputs, void *data) { + writeln("Hello from D!"); + writeln(data); + + ExtismSize ptr_offs = inputs[0].v.i64; + auto buf = plugin.memory(ptr_offs); + writeln(buf); + outputs[0].v.i64 = inputs[0].v.i64; +} diff --git a/d/extism.d b/d/extism.d new file mode 100644 index 000000000..8d4edab6c --- /dev/null +++ b/d/extism.d @@ -0,0 +1,258 @@ +module extism; + +import std.conv: castFrom, to; +import std.meta: Alias; +import std.string: fromStringz, toStringz; + +import runtime; + +/// A list of all possible value types in WebAssembly. +enum ValType { + i32 = I32, + i64 = I64, + f32 = F32, + f64 = F64, + v128 = V128, + funcRef = FuncRef, + externRef = ExternRef, +} + +// Opaque Pointers +/// +alias CancelHandle = Alias!(void*); +/// +alias CurrentPlugin = Alias!(void*); + +/// +alias ExtismSize = ulong; + +/// A union type for host function argument/return values. +union ValUnion { + /// + int i32; + /// + long i64; + /// + float f32; + /// + double f64; +} + +/// Holds the type and value of a function argument/return. +struct Val { + /// + ValType t; + /// + ValUnion v; +} + +/// Host function signature. +/// +/// Used to register host functions with plugins. +/// Params: +/// plugin: the currently executing plugin from within a host function +/// inputs: argument values +/// outputs: return values +/// data: user data associated with the host function +alias FunctionType = void delegate( + CurrentPlugin plugin, const Val[] inputs, Val[] outputs, void* data +); + +/// Returns: A slice of an allocated memory block of the currently running plugin. +ubyte[] memory(CurrentPlugin plugin, ulong n) { + auto length = extism_current_plugin_memory_length(cast(ExtismCurrentPlugin*) plugin, n); + return extism_current_plugin_memory(cast(ExtismCurrentPlugin*) plugin)[n .. (n + length)]; +} + +/// Allocate a memory block in the currently running plugin. +ulong memoryAlloc(CurrentPlugin plugin, ulong n) { + return extism_current_plugin_memory_alloc(cast(ExtismCurrentPlugin*) plugin, n); +} + +/// Free an allocated memory block. +void memoryFree(CurrentPlugin plugin, ulong ptr) { + extism_current_plugin_memory_free(cast(ExtismCurrentPlugin*) plugin, ptr); +} + +/// A host function, where `T` is the type of its user data. +struct Function(T) { + /// Managed pointer. + ExtismFunction* func; + alias func this; + private string _namespace = null; + + /// Create a new host function. + /// Params: + /// name: function name, this should be valid UTF-8 + /// inputs: argument types + /// outputs: return types + /// func: the function to call + /// userData: a pointer that will be passed to the function when it's called. This value should live as long as the function exists. + /// freeUserData: a callback to release the `userData`` value when the resulting `Function` is freed. + this( + string name, const ValType[] inputs, const ValType[] outputs, FunctionType func, + T userData, void function(T userData) freeUserData = null + ) { + import std.functional: toDelegate; + + // Bind the given host function with C linkage + auto funcClosure = (( + ExtismCurrentPlugin* plugin, + const ExtismVal* inputs, ulong numInputs, ExtismVal* outputs, ulong numOutputs, + void* data + ) { + func(plugin, (cast(const Val*) inputs)[0 .. numInputs], (cast(Val*) outputs)[0 .. numOutputs], data); + }).toDelegate.bindDelegate; + + // Bind the `freeUserData` function with C linkage + auto freeUserDataHandler = freeUserData is null ? null : ((void* userDataPtr) { + if (userDataPtr is null) return; + freeUserData((&userDataPtr).to!T); + }).toDelegate.bindDelegate; + + this.func = extism_function_new( + name.toStringz,// See https://dlang.org/spec/importc.html#enums + // See https://forum.dlang.org/post/qmidcpaxctbuphcyvkdc@forum.dlang.org + castFrom!(const(ValType)*) + .to!(typeof(ExtismVal.t)*)(inputs.ptr), inputs.length, + castFrom!(const(ValType)*).to!(typeof(ExtismVal.t)*)(outputs.ptr), outputs.length, + funcClosure, + &userData, + freeUserDataHandler, + ); + } + + ~this() { + extism_function_free(func); + } + + /// Get the namespace of this function. + string namespace() { + return this._namespace; + } + /// Set the namespace of this function. + void namespace(string value) { + this._namespace = value; + extism_function_set_namespace(func, value.toStringz); + } +} + +/// +struct Plugin { + import std.uuid: UUID; + + /// Managed pointer. + ExtismPlugin* plugin; + alias plugin this; + + /// Create a new plugin. + /// Params: + /// wasm: is a WASM module (wat or wasm) or a JSON encoded manifest + /// functions: is an array of ExtismFunction* + /// withWasi: enables/disables WASI + /// Throws: `Exception` if the plugin could not be created. + this(const ubyte[] wasm, const(ExtismFunction)*[] functions, bool withWasi = false) { + char* errorMsgPtr = null; + plugin = extism_plugin_new( + wasm.ptr, wasm.length, cast(ExtismFunction**) functions.ptr, functions.length, withWasi, &errorMsgPtr + ); + // See https://github.com/extism/extism/blob/ddcbeec3debe787293a9957c8be88f80a64b7c22/c/main.c#L67 + // Instead of terminating the host process, throw. + if (plugin !is null) + return; + auto errorMsg = errorMsgPtr.fromStringz.idup; + extism_plugin_new_error_free(errorMsgPtr); + // TODO: Subclass `Exception` for better error handling + throw new Exception(errorMsg); + } + + ~this() { + extism_plugin_free(plugin); + } + + /// Get a plugin's ID. + UUID id() { + return UUID(extism_plugin_id(plugin)[0 .. 16]); + } + + /// Get the error associated with this `Plugin`. + string error() { + return extism_error(plugin).fromStringz.idup; + } + + /// Update plugin config values, this will merge with the existing values. + bool config(ubyte[] json) { + return extism_plugin_config(plugin, json.ptr, json.length); + } + + /// See_Also: `cancel` + const(CancelHandle) cancelHandle() { + return extism_plugin_cancel_handle(plugin); + } + + /// Cancel a running plugin. + /// See_Also: `cancelHandle` + bool cancel(const CancelHandle handle) { + return extism_plugin_cancel(cast(ExtismCancelHandle*) handle); + } + + /// Returns: Whether a function with `name` exists. + bool functionExists(string name) { + return extism_plugin_function_exists(plugin, name.toStringz); + } + + /// Call a function. + /// Params: + /// funcName: is the function to call + /// data: is the input data + void call(string funcName, ubyte[] data = null) { + // Returns `0` if the call was successful, otherwise `-1`. + if (extism_plugin_call(plugin, funcName.toStringz, data.ptr, data.length) != 0) + throw new Exception(this.error); + } + + /// Get the plugin's output data. + /// + /// Note: This copies the data into a managed buffer. + /// Remarks: Use `outputData.length` to retrieve size of plugin output. + ubyte[] outputData() { + import std.algorithm: copy; + + auto outputLength = extism_plugin_output_length(plugin); + auto outputData = extism_plugin_output_data(plugin)[0 .. outputLength]; + auto buffer = new ubyte[outputLength]; + assert( + outputData.copy(buffer).length == 0, + "Output data was not completely copied into buffer, i.e. buffer was not filled." + ); + return buffer; + } +} + +/// Get the error associated with a `Context` or `Plugin`, if plugin is -1 then the context error will be returned. + +/// Set log file and level. +bool setLogFile(string filename, string logLevel) { + return extism_log_file(filename.toStringz, logLevel.toStringz); +} + +/// Get the Extism version string. +string version_() { + return extism_version().fromStringz.idup; +} + +import std.traits: isDelegate; + +/// Transform the given delegate into a static function pointer with C linkage. +/// See_Also: stackoverflow.com/a/22845722/1363247 +package auto bindDelegate(Func)(Func f) if (isDelegate!Func) { + import std.traits: ParameterTypeTuple, ReturnType; + + static Func delegate_; + delegate_ = f; + extern (C) static ReturnType!Func func(ParameterTypeTuple!Func args) { + return delegate_(args); + } + + return &func; +} diff --git a/d/runtime.c b/d/runtime.c new file mode 100644 index 000000000..fbb6a2863 --- /dev/null +++ b/d/runtime.c @@ -0,0 +1 @@ +#include "runtime/extism.h" diff --git a/dscanner.ini b/dscanner.ini new file mode 100644 index 000000000..03e42b7e3 --- /dev/null +++ b/dscanner.ini @@ -0,0 +1,116 @@ +; Configure which static analysis checks are enabled +[analysis.config.StaticAnalysisConfig] +; Check variable, class, struct, interface, union, and function names against t +; he Phobos style guide +style_check="enabled" +; Check for array literals that cause unnecessary allocation +enum_array_literal_check="enabled" +; Check for poor exception handling practices +exception_check="enabled" +; Check for use of the deprecated 'delete' keyword +delete_check="enabled" +; Check for use of the deprecated floating point operators +float_operator_check="enabled" +; Check number literals for readability +number_style_check="enabled" +; Checks that opEquals, opCmp, toHash, and toString are either const, immutable +; , or inout. +object_const_check="enabled" +; Checks for .. expressions where the left side is larger than the right. +backwards_range_check="enabled" +; Checks for if statements whose 'then' block is the same as the 'else' block +if_else_same_check="enabled" +; Checks for some problems with constructors +constructor_check="enabled" +; Checks for unused variables +unused_variable_check="enabled" +; Checks for unused labels +unused_label_check="enabled" +; Checks for unused function parameters +unused_parameter_check="enabled" +; Checks for duplicate attributes +duplicate_attribute="enabled" +; Checks that opEquals and toHash are both defined or neither are defined +opequals_tohash_check="enabled" +; Checks for subtraction from .length properties +length_subtraction_check="enabled" +; Checks for methods or properties whose names conflict with built-in propertie +; s +builtin_property_names_check="enabled" +; Checks for confusing code in inline asm statements +asm_style_check="enabled" +; Checks for confusing logical operator precedence +logical_precedence_check="enabled" +; Checks for undocumented public declarations +undocumented_declaration_check="enabled" +; Checks for poor placement of function attributes +function_attribute_check="enabled" +; Checks for use of the comma operator +comma_expression_check="enabled" +; Checks for local imports that are too broad. Only accurate when checking code +; used with D versions older than 2.071.0 +local_import_check="disabled" +; Checks for variables that could be declared immutable +could_be_immutable_check="enabled" +; Checks for redundant expressions in if statements +redundant_if_check="enabled" +; Checks for redundant parenthesis +redundant_parens_check="enabled" +; Checks for mismatched argument and parameter names +mismatched_args_check="enabled" +; Checks for labels with the same name as variables +label_var_same_name_check="enabled" +; Checks for lines longer than `max_line_length` characters +long_line_check="enabled" +; The maximum line length used in `long_line_check`. +max_line_length="120" +; Checks for assignment to auto-ref function parameters +auto_ref_assignment_check="enabled" +; Checks for incorrect infinite range definitions +incorrect_infinite_range_check="enabled" +; Checks for asserts that are always true +useless_assert_check="enabled" +; Check for uses of the old-style alias syntax +alias_syntax_check="enabled" +; Checks for else if that should be else static if +static_if_else_check="enabled" +; Check for unclear lambda syntax +lambda_return_check="enabled" +; Check for auto function without return statement +auto_function_check="enabled" +; Check for sortedness of imports +imports_sortedness="disabled" +; Check for explicitly annotated unittests +explicitly_annotated_unittests="disabled" +; Check for properly documented public functions (Returns, Params) +properly_documented_public_functions="disabled" +; Check for useless usage of the final attribute +final_attribute_check="enabled" +; Check for virtual calls in the class constructors +vcall_in_ctor="enabled" +; Check for useless user defined initializers +useless_initializer="disabled" +; Check allman brace style +allman_braces_check="disabled" +; Check for redundant attributes +redundant_attributes_check="enabled" +; Check public declarations without a documented unittest +has_public_example="disabled" +; Check for asserts without an explanatory message +assert_without_msg="disabled" +; Check indent of if constraints +if_constraints_indent="disabled" +; Check for @trusted applied to a bigger scope than a single function +trust_too_much="enabled" +; Check for redundant storage classes on variable declarations +redundant_storage_classes="enabled" +; Check for unused function return values +unused_result="enabled" +; Enable cyclomatic complexity check +cyclomatic_complexity="disabled" +; Maximum cyclomatic complexity after which to issue warnings +max_cyclomatic_complexity="50" +; Check for function bodies on disabled functions +body_on_disabled_func_check="enabled" +; ModuleFilters for selectively enabling (+std) and disabling (-std.internal) individual checks +[analysis.config.ModuleFilters] diff --git a/dub.json b/dub.json new file mode 100644 index 000000000..939e7b62b --- /dev/null +++ b/dub.json @@ -0,0 +1,23 @@ +{ + "name": "extism", + "description": "The Universal Plug-in System. Extend anything with WebAssembly (wasm).", + "license": "BSD-3-Clause", + "authors": [ + "Chance Snow ", + "Extism contributors" + ], + "copyright": "Copyright © 2023, Extism contributors", + "toolchainRequirements": { + "frontend": ">=2.102" + }, + "targetPath": "target", + "sourceFiles": ["d/extism.d"], + "importPaths": ["d"], + "systemDependencies": "extism >= 0.4.0", + "targetType": "sourceLibrary", + "subPackages": [ + "d/examples/hello" + ], + "dflags": ["-P-I$EXTISM_PACKAGE_DIR"], + "libs": ["extism"] +} diff --git a/scripts/sdk_coverage.py b/scripts/sdk_coverage.py index fb000341d..ee14962cf 100644 --- a/scripts/sdk_coverage.py +++ b/scripts/sdk_coverage.py @@ -51,6 +51,7 @@ def __init__(self, name, ext, path=None): # Check for missing SDK functions sdks = [ Lang('cpp', 'hpp'), + Lang('d', 'd'), Lang('go', 'go', path='..'), Lang('haskell', 'hs'), Lang('node', 'ts'), From dba0b67cd36429a524d62c159c25b89ef79fe5e8 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Wed, 25 Oct 2023 00:48:40 +0200 Subject: [PATCH 091/176] chore: fix docstring for Manifest/allowed_paths (#531) --- manifest/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest/src/lib.rs b/manifest/src/lib.rs index 06f56e647..4619297e9 100644 --- a/manifest/src/lib.rs +++ b/manifest/src/lib.rs @@ -213,7 +213,7 @@ pub struct Manifest { pub allowed_hosts: Option>, /// Specifies which paths should be made available on disk when using WASI. This is a mapping from - /// this is a mapping from the path on disk to the path it should be available inside the plugin. + /// the path on disk to the path it should be available inside the plugin. /// For example, `".": "/tmp"` would mount the current directory as `/tmp` inside the module #[serde(default)] pub allowed_paths: Option>, From 4bd0ed6d0375cdd2e171c5f63cb81356d047e148 Mon Sep 17 00:00:00 2001 From: zach Date: Tue, 24 Oct 2023 17:31:26 -0700 Subject: [PATCH 092/176] feat: add ability to dump extism kernel memory and generate coredumps, cleanup kernel memory layout (#539) Fixes https://github.com/extism/extism/issues/537 - Requires wasmtime 14.0.0 or greater for coredump serialization - Adds `EXTISM_COREDUMP` environment variable to write wasmtime coredump to a file when an error occurs - This will create a coredump from the main wasm module, which means it doesn't give us too much insight into the kernel - Adds `EXTISM_MEMDUMP` environment variable to write extism linear memory to a file when an error occurs - This gives us access to the kernel memory - Adds some missing profiling options - Converts timeouts to a Trap instead of a plain error, this helps us get better information about where the timeout occured - Some small improvements to error handling after a plugin call - Adds a test for coredump and memdump generation - Adds the ability to configure debug options using `PluginBuilder` - Fixes memory layout and a wasted page of memory in the kernel, found while debugging a memory dump --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- kernel/src/lib.rs | 129 ++++++++++++++-------------- runtime/Cargo.toml | 4 +- runtime/README.md | 12 ++- runtime/src/current_plugin.rs | 14 ++-- runtime/src/extism-runtime.wasm | Bin 3592 -> 3435 bytes runtime/src/lib.rs | 1 + runtime/src/plugin.rs | 143 +++++++++++++++++++++++++------- runtime/src/plugin_builder.rs | 38 ++++++++- runtime/src/tests/runtime.rs | 57 ++++++++++++- 9 files changed, 292 insertions(+), 106 deletions(-) diff --git a/kernel/src/lib.rs b/kernel/src/lib.rs index 2fb438b05..7328e6355 100644 --- a/kernel/src/lib.rs +++ b/kernel/src/lib.rs @@ -17,13 +17,13 @@ //! ## Input/Output //! //! Input and output are just allocated blocks of memory that are marked as either input or output using -//! the `extism_input_set` or `extism_output_set` functions. The global variables `INPUT_OFFSET` contains -//! the offset in memory to the input data and `INPUT_LENGTH` contains the size of the input data. `OUTPUT_OFFSET` -//! and `OUTPUT_LENGTH` are used for the output data. +//! the `extism_input_set` or `extism_output_set` functions. The MemoryRoot field `input_offset` contains +//! the offset in memory to the input data and `input_length` contains the size of the input data. `output_offset` +//! and `output_length` are used for the output data. //! //! ## Error handling //! -//! The `ERROR` global is used to track the current error message. If it is set to `0` then there is no error. +//! The `error` field is used to track the current error message. If it is set to `0` then there is no error. //! The length of the error message can be retreived using `extism_length`. //! //! ## Memory offsets @@ -45,31 +45,6 @@ pub type Length = u64; /// WebAssembly page size const PAGE_SIZE: usize = 65536; -/// Determines the amount of bytes that can be wasted by re-using a block. If more than this number is wasted by re-using -/// a block then it will be split into two smaller blocks. -const BLOCK_SPLIT_SIZE: usize = 128; - -/// Offset to the input data -static mut INPUT_OFFSET: Pointer = 0; - -/// Length of the input data -static mut INPUT_LENGTH: Length = 0; - -/// Offset to the output data -static mut OUTPUT_OFFSET: Pointer = 0; - -/// Offset to the input data -static mut OUTPUT_LENGTH: Length = 0; - -/// Current error message -static mut ERROR: AtomicU64 = AtomicU64::new(0); - -/// Determines if the kernel has been initialized already -static mut INITIALIZED: AtomicBool = AtomicBool::new(false); - -/// A pointer to the first page that will be managed by Extism, this is set during initialization -static mut START_PAGE: usize = 0; - /// Provides information about the usage status of a `MemoryBlock` #[repr(u8)] #[derive(PartialEq)] @@ -98,10 +73,22 @@ pub enum MemoryStatus { /// including their data. #[repr(C)] pub struct MemoryRoot { + /// Set to true after initialization + pub initialized: AtomicBool, /// Position of the bump allocator, relative to `blocks` field pub position: AtomicU64, /// The total size of all data allocated using this allocator pub length: AtomicU64, + /// Offset of error block + pub error: AtomicU64, + /// Input position in memory + pub input_offset: Pointer, + /// Input length + pub input_length: Length, + /// Output position in memory + pub output_offset: Pointer, + /// Output length + pub output_length: Length, /// A pointer to the start of the first block pub blocks: [MemoryBlock; 0], } @@ -131,32 +118,41 @@ pub fn num_pages(nbytes: u64) -> usize { } } -// Get the `MemoryRoot` at the correct offset in memory +// Get the `MemoryRoot`, this is always stored at offset 1 in memory #[inline] unsafe fn memory_root() -> &'static mut MemoryRoot { - &mut *((START_PAGE * PAGE_SIZE) as *mut MemoryRoot) + &mut *(1 as *mut MemoryRoot) } impl MemoryRoot { /// Initialize or load the `MemoryRoot` from the correct position in memory pub unsafe fn new() -> &'static mut MemoryRoot { + let root = memory_root(); + // If this fails then `INITIALIZED` is already `true` and we can just return the // already initialized `MemoryRoot` - if INITIALIZED + if root + .initialized .compare_exchange(false, true, Ordering::Acquire, Ordering::Relaxed) .is_err() { - return memory_root(); + return root; } // Ensure that at least one page is allocated to store the `MemoryRoot` data - START_PAGE = core::arch::wasm32::memory_grow(0, 1); - if START_PAGE == usize::MAX { - panic!("Out of memory"); + if core::arch::wasm32::memory_size(0) == 0 { + if core::arch::wasm32::memory_grow(0, 1) == usize::MAX { + core::arch::wasm32::unreachable() + } } + root.input_offset = 0; + root.input_length = 0; + root.output_offset = 0; + root.output_length = 0; + root.error.store(0, Ordering::Release); + // Initialize the `MemoryRoot` length, position and data - let root = memory_root(); root.length.store( PAGE_SIZE as u64 - core::mem::size_of::() as u64, Ordering::Release, @@ -181,6 +177,11 @@ impl MemoryRoot { self.length.load(Ordering::Acquire) as usize, ); self.position.store(0, Ordering::Release); + self.error.store(0, Ordering::Release); + self.input_offset = 0; + self.input_length = 0; + self.output_offset = 0; + self.output_length = 0; } #[inline(always)] @@ -224,7 +225,7 @@ impl MemoryRoot { // Re-use freed blocks when they're large enough if status == MemoryStatus::Free as u8 && b.size >= length as usize { // Split block if there is too much excess - if b.size - length as usize >= BLOCK_SPLIT_SIZE { + if b.size - length as usize >= 128 { b.size -= length as usize; b.used = 0; @@ -348,14 +349,15 @@ pub unsafe fn extism_free(p: Pointer) { if p == 0 { return; } - let block = MemoryRoot::new().find_block(p); + let root = MemoryRoot::new(); + let block = root.find_block(p); if let Some(block) = block { block.free(); // If the input pointer is freed for some reason, make sure the input length to 0 // since the original data is gone - if p == INPUT_OFFSET { - INPUT_LENGTH = 0; + if p == root.input_offset { + root.input_length = 0; } } } @@ -396,21 +398,23 @@ pub unsafe fn extism_load_u64(p: Pointer) -> u64 { /// Load a byte from the input data #[no_mangle] pub unsafe fn extism_input_load_u8(p: Pointer) -> u8 { + let root = MemoryRoot::new(); #[cfg(feature = "bounds-checking")] - if p >= INPUT_LENGTH { + if p >= root.input_length { return 0; } - *((INPUT_OFFSET + p) as *mut u8) + *((root.input_offset + p) as *mut u8) } /// Load a u64 from the input data #[no_mangle] pub unsafe fn extism_input_load_u64(p: Pointer) -> u64 { + let root = MemoryRoot::new(); #[cfg(feature = "bounds-checking")] - if p + core::mem::size_of::() as Pointer > INPUT_LENGTH { + if p + core::mem::size_of::() as Pointer > root.input_length { return 0; } - *((INPUT_OFFSET + p) as *mut u64) + *((root.input_offset + p) as *mut u64) } /// Write a byte in Extism-managed memory @@ -436,82 +440,83 @@ pub unsafe fn extism_store_u64(p: Pointer, x: u64) { /// Set the range of the input data in memory #[no_mangle] pub unsafe fn extism_input_set(p: Pointer, len: Length) { + let root = MemoryRoot::new(); #[cfg(feature = "bounds-checking")] { - let root = MemoryRoot::new(); if !root.pointer_in_bounds(p) || !root.pointer_in_bounds(p + len - 1) { return; } } - INPUT_OFFSET = p; - INPUT_LENGTH = len; + root.input_offset = p; + root.input_length = len; } /// Set the range of the output data in memory #[no_mangle] pub unsafe fn extism_output_set(p: Pointer, len: Length) { + let root = MemoryRoot::new(); #[cfg(feature = "bounds-checking")] { - let root = MemoryRoot::new(); if !root.pointer_in_bounds(p) || !root.pointer_in_bounds(p + len - 1) { return; } } - OUTPUT_OFFSET = p; - OUTPUT_LENGTH = len; + root.output_offset = p; + root.output_length = len; } /// Get the input length #[no_mangle] pub fn extism_input_length() -> Length { - unsafe { INPUT_LENGTH } + unsafe { MemoryRoot::new().input_length } } /// Get the input offset in Exitsm-managed memory #[no_mangle] pub fn extism_input_offset() -> Length { - unsafe { INPUT_OFFSET } + unsafe { MemoryRoot::new().input_offset } } /// Get the output length #[no_mangle] -pub fn extism_output_length() -> Length { - unsafe { OUTPUT_LENGTH } +pub unsafe fn extism_output_length() -> Length { + unsafe { MemoryRoot::new().output_length } } /// Get the output offset in Extism-managed memory #[no_mangle] -pub fn extism_output_offset() -> Length { - unsafe { OUTPUT_OFFSET } +pub unsafe fn extism_output_offset() -> Length { + MemoryRoot::new().output_offset } /// Reset the allocator #[no_mangle] pub unsafe fn extism_reset() { - ERROR.store(0, Ordering::SeqCst); MemoryRoot::new().reset() } /// Set the error message offset #[no_mangle] pub unsafe fn extism_error_set(ptr: Pointer) { + let root = MemoryRoot::new(); + // Allow ERROR to be set to 0 if ptr == 0 { - ERROR.store(ptr, Ordering::SeqCst); + root.error.store(ptr, Ordering::SeqCst); return; } #[cfg(feature = "bounds-checking")] - if !MemoryRoot::new().pointer_in_bounds(ptr) { + if !root.pointer_in_bounds(ptr) { return; } - ERROR.store(ptr, Ordering::SeqCst); + root.error.store(ptr, Ordering::SeqCst); } /// Get the error message offset, if it's `0` then no error has been set #[no_mangle] pub unsafe fn extism_error_get() -> Pointer { - ERROR.load(Ordering::SeqCst) + MemoryRoot::new().error.load(Ordering::SeqCst) } /// Get the position of the allocator, this can be used as an indication of how many bytes are currently in-use diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 9b2dcaa5a..9066689ca 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,8 +9,8 @@ repository = "https://github.com/extism/extism" description = "Extism runtime and Rust SDK" [dependencies] -wasmtime = ">= 13.0.0, < 15.0.0" -wasmtime-wasi = ">= 13.0.0, < 15.0.0" +wasmtime = ">= 14.0.0, < 15.0.0" +wasmtime-wasi = ">= 14.0.0, < 15.0.0" anyhow = "1" serde = {version = "1", features = ["derive"]} serde_json = "1" diff --git a/runtime/README.md b/runtime/README.md index e6290fca5..eaf38b292 100644 --- a/runtime/README.md +++ b/runtime/README.md @@ -15,6 +15,16 @@ To use the `extism` crate, you can add it to your Cargo file: extism = "*" ``` +## Environment variables + +There are a few environment variables that can be used for debugging purposes: + +- `EXTISM_ENABLE_WASI_OUTPUT=1`: show WASI stdout/stderr +- `EXTISM_MEMDUMP=extism.mem`: dump Extism linear memory to a file +- `EXTISM_COREDUMP=extism.core`: write [coredump](https://github.com/WebAssembly/tool-conventions/blob/main/Coredump.md) to a file when a WebAssembly function traps +- `EXTISM_DEBUG=1`: generate debug information +- `EXTISM_PROFILE=perf|jitdump|vtune`: enable Wasmtime profiling + ## Getting Started This guide should walk you through some of the concepts in Extism and the `extism` crate. @@ -39,7 +49,7 @@ fn main() { } ``` -> **Note**: See [the Manifest docs](https://docs.rs/extism-manifest/0.5.0/extism_manifest/) as it has a rich schema and a lot of options. +> **Note**: See [the Manifest docs](https://docs.rs/extism-manifest/extism_manifest/) as it has a rich schema and a lot of options. ### Calling A Plug-in's Exports diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index d99147a93..88f2ad93c 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -258,16 +258,20 @@ impl CurrentPlugin { /// Get a pointer to the plugin memory pub(crate) fn memory_ptr(&mut self) -> *mut u8 { - let (linker, mut store) = self.linker_and_store(); - if let Some(mem) = linker.get(&mut store, "env", "memory") { - if let Some(mem) = mem.into_memory() { - return mem.data_ptr(&mut store); - } + if let Some(mem) = self.memory() { + let (_, mut store) = self.linker_and_store(); + return mem.data_ptr(&mut store); } std::ptr::null_mut() } + /// Get extism memory + pub(crate) fn memory(&mut self) -> Option { + let (linker, mut store) = self.linker_and_store(); + linker.get(&mut store, "env", "memory")?.into_memory() + } + /// Get a `MemoryHandle` from a `Val` reference - this can be used to convert a host function's /// argument directly to `MemoryHandle` pub fn memory_from_val(&mut self, offs: &Val) -> Option { diff --git a/runtime/src/extism-runtime.wasm b/runtime/src/extism-runtime.wasm index 52d18e5ae589839733d265810ceff2e5c0c6531d..4225ef2d8c1d3fe1d9b8b6dd8d2083284227e9ff 100755 GIT binary patch literal 3435 zcmdT`y>BB$6n}4KcjIL2#O9Jn;hMMGTwJ6$2@-P6c~;^}6u=1~MC16#=I%BhzStXy zNIq{45Tc~H22s(Zim0e)&PWv0{1N;a;myo$h?88Gi-lM6?7V$5@ArQ1V+K0?T?7EU zQ`wMto@2g&LmcuSn3sG*40GT=o&t*j?awhMxoU` z$c!B$tKJ&7;V{?6rQNM9qdQx|EY=qe&Rq}}+Vzs8USbwEN<2xg*X>!`Z;Xo`vDU59 zuw%OY@GwjIFhA37Z+5ayJK5WmsM_tvN#|+%VW*!+G4s#j!f%K&7cJ2uq31rT0YNCM zs0cK_Zfm(8d1>hLXYXD2QMO1D-UA@1F^weoAJ#xA@=1`l9eH}NABi-Sc1Qex7ok4I zef|8K?xKuy-$ z;pM4ZlMOeY)+08df5iH8gW^rzqA44pD6N?3bR^>u3?eW713ohh9)~_J3sIgySpk@p z0U#*CW#NT^;orPP0r?--q#}=yf>c-22v0t@Yy-0`pT#ZS_{*B8`ifY0I|}p>GM`L2 ztcr?RwJO|VW??=xQuDE%lJDNkmRfK$*`l^lMf0gr^*9B{d&am=Pvy5UJRmQw|8UIe zhOhT)Y$3#|RJ_vg%zhJ|#P#n7%nnOT{;>0dxXOZQlE-Z3FG$(_h#?safAXw&9f3h% ztQ!>7^dx45+v)@nU21YK^`(Yg=1o}Ew;IGv@ID&tv5@W3E4 zDbrMQhK65In64Q!FD3yv5C4NKG?H*BNaAAZy-vu3^lia_m{*H&nHkj<;MFd2Dq3Z= zf@0`AVa2IIBpe|m93`BD9LlCFv|k_!yKfnybN(_Dmps0fViPSBh$g`ohG!d+!Exz; z_4X%@NRGo2)L0+5oH^G5iaF!*XU-}Ei;jsp!)E9biiE{RVAZZjGuvF1x`Q~hDz9Rn za7}XK{e9fYn_-?E9GR*xzBNpLvr!-}+d-TUY|9(_Ds7C&^;ZMDsG0v6cs>pc_;pwC zhqjnpPXaD*D9;$;bLBOiE=`*}ldv34%<}rgEZ?=3f5n>)^oR>f!?I`;7mM<`VUHVg y3*ka4?j*$xrMR!SApLwE@J)2Rv-7U#3w${^*B8*<2iD}$7%Q6n<}JZEw7G;?ndViSdFUl_>N8DfB|t;#YuLDpVmZZrV6)H%Xn^jzlHb z>;9o2M z2kCUN)o4(moX(aT=T3LdkUyEtoAV3xwO43jYD_Tu5*4RY$=P$OYn}RXsu=9Jj~MEu zY=d^E*=op^K`*B%e_2)<#~iJDV$MnzNamdQ|6mpCvKVYn3O^Pv}4 zb6ED?aEp4*Xv2qzjE*=CwaL9xrXVmmql~u{dQta$sN$-&JM!Bw;%Jl4N0%;N^_Qy( z=Fpr~WO9)ghdHC2xd&HO6^NBM(gu6v9^{LHNu18GQI$*mexCwG!F$Zf)0p%rGE1R) z#tv~NnpL|I8+h8sureH$Fhm?rLWgJ7G-jo^Vyy__8>)SE_xGD$Uisnb!XfQrdgtzs ze_gru?e$j=X$rpc3Y>6HC93D1L)YwFTTJOFf~iqe0n!MN9-!NDju6lpz3;G_SxsHW za>R33n^k{^5}?pg@}__hRXU+pBRDo*?e?aY19?%U1&bS8xhz5NEvW!VPsdOLxEvv- z5*}Z;xP1(7xM2lDKaReZS>>wO63#Z`oWfJp3yim4`;ztHS40%%#cdoGHbTD}D&v17 zoLH|;m_k+SRNLqSM3XvC3>@{0@~TB4l#IfnnK)9`0U+0=7z6N7ZydMu0Uu2MVr>=M zeq2^1=sK>z`g=Zn>>@~km1oQ_3m@rliZ8_AZD0zKhT(u-AD@&OM3C8I8e zs{K>3Fc*>(>snG|P1p}HW&_oSsV$^^ns31!cuoe_i zcz`0xQAA}FfpCl>pmnYCVVPbdXm1$85D`S3*a8;Oe*Ke>!q74CBb)s!^U(;V9)o1J zSWB&pmT4M(4HY6(GjwzufGu@m?yVAFZ2_<~q8$J_0|3HD0iYYdtZ;(SIE{LoNS{M5 z0-0DMx)0*0k18sHgXdZG5WCYWfcjS1D3>4<2GRr8IpqU`O(jz{Glo!rBYEqt54JwY zJlxvv4otA=n89HCr|1Evwaq>Vp2db%;{oS1EPXM!sgyLuVLMDa@nd$sf6AEhz@q!sv+sq0*~oTK5D ziyP7Ku$LmqYs5*jm+0{_4k|^aZIQ{Vl9Z24;b>D%lkeoeY=vTw{{K+UrTZ$7BTKMRLGV74 w`>*PCCiju2!tcmh$21p>d)>#pf^QkmcI(uO%V$r%&}tLSKvsn8bNpoOZ*X%OEdT%j diff --git a/runtime/src/lib.rs b/runtime/src/lib.rs index 804a9a228..f8617fdf0 100644 --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -27,6 +27,7 @@ pub use plugin_builder::PluginBuilder; pub(crate) use internal::{Internal, Wasi}; pub(crate) use log::{debug, error, trace}; +pub(crate) use plugin_builder::DebugOptions; pub(crate) use timer::{Timer, TimerAction}; #[cfg(test)] diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index eed3dae4e..160411c2e 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -70,6 +70,8 @@ pub struct Plugin { /// Set to `true` when de-initializarion may have occured (i.e.a call to `_start`), /// in this case we need to re-initialize the entire module. pub(crate) needs_reset: bool, + + pub(crate) debug_options: DebugOptions, } unsafe impl Send for Plugin {} @@ -108,6 +110,8 @@ const EXPORT_MODULE_NAME: &str = "env"; fn profiling_strategy() -> ProfilingStrategy { match std::env::var("EXTISM_PROFILE").as_deref() { Ok("perf") => ProfilingStrategy::PerfMap, + Ok("jitdump") => ProfilingStrategy::JitDump, + Ok("vtune") => ProfilingStrategy::VTune, Ok(x) => { log::warn!("Invalid value for EXTISM_PROFILE: {x}"); ProfilingStrategy::None @@ -116,12 +120,6 @@ fn profiling_strategy() -> ProfilingStrategy { } } -// Raise an error when the epoch deadline is encountered - this is used for timeout/cancellation -// to stop a plugin that is executing -fn deadline_callback(_: StoreContextMut) -> Result { - Err(Error::msg("timeout")) -} - impl Plugin { /// Create a new plugin from the given manifest, and host functions. The `with_wasi` parameter determines /// whether or not the module should be executed with WASI enabled. @@ -141,13 +139,36 @@ impl Plugin { imports: impl IntoIterator, with_wasi: bool, ) -> Result { - // Create a new engine, if the `EXTISM_DEBUG` environment variable is set - // then we enable debug info + Self::build_new(wasm, imports, with_wasi, Default::default()) + } + + pub(crate) fn build_new( + wasm: impl AsRef<[u8]>, + imports: impl IntoIterator, + with_wasi: bool, + mut debug_options: DebugOptions, + ) -> Result { + // Configure debug options + debug_options.debug_info = + debug_options.debug_info || std::env::var("EXTISM_DEBUG").is_ok(); + if let Ok(x) = std::env::var("EXTISM_COREDUMP") { + debug_options.coredump = Some(std::path::PathBuf::from(x)); + }; + if let Ok(x) = std::env::var("EXTISM_MEMDUMP") { + debug_options.memdump = Some(std::path::PathBuf::from(x)); + }; + let profiling_strategy = debug_options + .profiling_strategy + .map_or(ProfilingStrategy::None, |_| profiling_strategy()); + debug_options.profiling_strategy = Some(profiling_strategy.clone()); + + // Setup wasmtime types let engine = Engine::new( Config::new() .epoch_interruption(true) - .debug_info(std::env::var("EXTISM_DEBUG").is_ok()) - .profiler(profiling_strategy()), + .debug_info(debug_options.debug_info) + .coredump_on_trap(debug_options.coredump.is_some()) + .profiler(profiling_strategy), )?; let mut imports = imports.into_iter(); let (manifest, modules) = manifest::load(&engine, wasm.as_ref())?; @@ -245,6 +266,7 @@ impl Plugin { output: Output::default(), _functions: imports.collect(), needs_reset: false, + debug_options, }; plugin.current_plugin_mut().store = &mut plugin.store; @@ -576,11 +598,10 @@ impl Plugin { .map(std::time::Duration::from_millis), }) .unwrap(); - self.store.epoch_deadline_callback(deadline_callback); // Call the function let mut results = vec![wasmtime::Val::null(); n_results]; - let res = func.call(self.store_mut(), &[], results.as_mut_slice()); + let mut res = func.call(self.store_mut(), &[], results.as_mut_slice()); // Stop timer self.timer_tx @@ -592,13 +613,24 @@ impl Plugin { self.get_output_after_call(); self.needs_reset = name == "_start"; + let mut msg = None; + if self.output.error_offset != 0 && self.output.error_length != 0 { let handle = MemoryHandle { offset: self.output.error_offset, length: self.output.error_length, }; if let Ok(e) = self.current_plugin_mut().memory_str(handle) { - return Err((Error::msg(e.to_string()), -1)); + let x = e.to_string(); + error!("Call to {name} returned with error message: {}", x); + + // If `res` is `Ok` and there is an error message set, then convert the response + // to an `Error` + if res.is_ok() { + res = Err(Error::msg(x)); + } else { + msg = Some(x); + } } } @@ -613,24 +645,69 @@ impl Plugin { // Return result to caller Ok(0) } - Err(e) => match e.downcast::() { - Ok(exit) => { - trace!("WASI return code: {}", exit.0); - if exit.0 != 0 { - return Err((Error::msg("WASI return code"), exit.0)); + Err(e) => { + if let Some(coredump) = e.downcast_ref::() { + if let Some(file) = self.debug_options.coredump.clone() { + debug!("Saving coredump to {}", file.display()); + + if let Err(e) = + std::fs::write(file, coredump.serialize(self.store_mut(), "extism")) + { + error!("Unable to write coredump: {:?}", e); + } + } + } + + if let Some(file) = &self.debug_options.memdump.clone() { + trace!("Memory dump enabled"); + if let Some(memory) = self.current_plugin_mut().memory() { + debug!("Dumping memory to {}", file.display()); + let data = memory.data(&mut self.store); + if let Err(e) = std::fs::write(file, &data) { + error!("Unable to write memory dump: {:?}", e); + } + } else { + error!("Unable to get extism memory for writing to disk"); } - return Ok(0); } - Err(e) => { - let cause = e.root_cause().to_string(); - if cause == "timeout" || cause == "oom" { - return Err((Error::msg(cause), -1)); + + let wasi_exit_code = e + .downcast_ref::() + .map(|e| e.0) + .or_else(|| { + e.downcast_ref::() + .map(|e| e.0) + }); + if let Some(exit_code) = wasi_exit_code { + trace!("WASI exit code: {}", exit_code); + if exit_code == 0 && msg.is_none() { + return Ok(0); } - error!("Call: {e:?}"); - return Err((e.context("Call failed"), -1)); + return Err(( + Error::msg(msg.unwrap_or_else(|| "WASI exit code".to_string())), + exit_code, + )); + } + + // Handle timeout interrupts + if let Some(wasmtime::Trap::Interrupt) = e.downcast_ref::() { + trace!("Call to {name} timed out"); + return Err((Error::msg("timeout"), -1)); + } + + // Handle out-of-memory error from `MemoryLimiter` + let cause = e.root_cause().to_string(); + if cause == "oom" { + return Err((Error::msg(cause), -1)); } - }, + + error!("Call to {name} encountered an error: {e:?}"); + return Err(( + e.context(msg.unwrap_or_else(|| "Error in Extism plugin call".to_string())), + -1, + )); + } } } @@ -718,7 +795,7 @@ pub(crate) enum GuestRuntime { /// /// # const WASM: &[u8] = include_bytes!("../../wasm/code.wasm"); /// // Convert from `Plugin` to `MyPlugin` -/// let mut plugin: MyPlugin = extism::Plugin::new(WASM, [], true).unwrap().into(); +/// let mut plugin: MyPlugin = extism::Plugin::new(WASM, [], true).unwrap().try_into().unwrap(); /// // and call the `count_vowels` function /// let count = plugin.count_vowels("this is a test").unwrap(); /// ``` @@ -730,9 +807,15 @@ macro_rules! typed_plugin { unsafe impl Send for $name {} unsafe impl Sync for $name {} - impl From<$crate::Plugin> for $name { - fn from(x: $crate::Plugin) -> Self { - $name(x) + impl TryFrom<$crate::Plugin> for $name { + type Error = $crate::Error; + fn try_from(mut x: $crate::Plugin) -> Result { + $( + if !x.function_exists(stringify!($f)) { + return Err($crate::Error::msg(format!("Invalid function: {}", stringify!($f)))); + } + )* + Ok($name(x)) } } diff --git a/runtime/src/plugin_builder.rs b/runtime/src/plugin_builder.rs index 3fd46f6e3..5a492480e 100644 --- a/runtime/src/plugin_builder.rs +++ b/runtime/src/plugin_builder.rs @@ -5,11 +5,20 @@ enum Source { Data(Vec), } +#[derive(Default, Clone)] +pub(crate) struct DebugOptions { + pub(crate) profiling_strategy: Option, + pub(crate) coredump: Option, + pub(crate) memdump: Option, + pub(crate) debug_info: bool, +} + /// PluginBuilder is used to configure and create `Plugin` instances pub struct PluginBuilder { source: Source, wasi: bool, functions: Vec, + debug_options: DebugOptions, } impl PluginBuilder { @@ -19,6 +28,7 @@ impl PluginBuilder { source: Source::Data(data.into()), wasi: false, functions: vec![], + debug_options: DebugOptions::default(), } } @@ -28,6 +38,7 @@ impl PluginBuilder { source: Source::Manifest(manifest), wasi: false, functions: vec![], + debug_options: DebugOptions::default(), } } @@ -68,11 +79,34 @@ impl PluginBuilder { self } + pub fn with_profiling_strategy(mut self, p: wasmtime::ProfilingStrategy) -> Self { + self.debug_options.profiling_strategy = Some(p); + self + } + + pub fn with_coredump(mut self, path: impl AsRef) -> Self { + self.debug_options.coredump = Some(path.as_ref().to_path_buf()); + self + } + + pub fn with_memdump(mut self, path: impl AsRef) -> Self { + self.debug_options.memdump = Some(path.as_ref().to_path_buf()); + self + } + + pub fn with_debug_info(mut self) -> Self { + self.debug_options.debug_info = true; + self + } + /// Generate a new plugin with the configured settings pub fn build(self) -> Result { match self.source { - Source::Manifest(m) => Plugin::new_with_manifest(&m, self.functions, self.wasi), - Source::Data(d) => Plugin::new(d, self.functions, self.wasi), + Source::Manifest(m) => { + let data = serde_json::to_vec(&m)?; + Plugin::build_new(&data, self.functions, self.wasi, self.debug_options) + } + Source::Data(d) => Plugin::build_new(d, self.functions, self.wasi, self.debug_options), } } } diff --git a/runtime/src/tests/runtime.rs b/runtime/src/tests/runtime.rs index 31ca03af8..0e4faa15e 100644 --- a/runtime/src/tests/runtime.rs +++ b/runtime/src/tests/runtime.rs @@ -214,7 +214,9 @@ fn test_timeout() { let end = std::time::Instant::now(); let time = end - start; println!("Timed out plugin ran for {:?}", time); - assert!(output.unwrap_err().root_cause().to_string() == "timeout"); + let s = output.unwrap_err().root_cause().to_string(); + println!("{}", s); + assert!(s == "timeout"); // std::io::stdout().write_all(output).unwrap(); } @@ -236,7 +238,7 @@ fn test_typed_plugin_macro() { hello_world, ); - let mut plugin: CountVowelsPlugin = Plugin::new(WASM, [f], true).unwrap().into(); + let mut plugin: CountVowelsPlugin = Plugin::new(WASM, [f], true).unwrap().try_into().unwrap(); let Json(output0): Json = plugin.count_vowels("abc123").unwrap(); let Json(output1): Json = plugin.0.call("count_vowels", "abc123").unwrap(); @@ -254,7 +256,7 @@ fn test_multiple_instantiations() { hello_world, ); - let mut plugin: CountVowelsPlugin = Plugin::new(WASM, [f], true).unwrap().into(); + let mut plugin: CountVowelsPlugin = Plugin::new(WASM, [f], true).unwrap().try_into().unwrap(); // This is 10,001 because the wasmtime store limit is 10,000 - we want to test // that our reinstantiation process is working and that limit is never hit. @@ -314,7 +316,10 @@ fn test_memory_max() { let mut plugin = Plugin::new_with_manifest(&manifest, [], true).unwrap(); let output: Result = plugin.call("count_vowels", "a".repeat(65536 * 2)); assert!(output.is_err()); - assert!(output.unwrap_err().root_cause().to_string() == "oom"); + + let err = output.unwrap_err().root_cause().to_string(); + println!("{:?}", err); + assert_eq!(err, "oom"); // Should pass with memory.max set to a large enough number let manifest = @@ -356,3 +361,47 @@ fn test_extism_error() { assert!(output.is_err()); assert_eq!(output.unwrap_err().root_cause().to_string(), "TEST"); } + +#[test] +fn test_extism_memdump() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world_set_error, + ); + let mut plugin = PluginBuilder::new_with_module(WASM) + .with_wasi(true) + .with_functions([f]) + .with_memdump("extism.mem") + .build() + .unwrap(); + let output: Result = plugin.call("count_vowels", "a".repeat(1024)); + assert!(output.is_err()); + assert!(std::path::PathBuf::from("extism.mem").exists()); + let _ = std::fs::remove_file("extism.mem"); +} + +#[test] +fn test_extism_coredump() { + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + None, + hello_world_set_error, + ); + let manifest = Manifest::new([extism_manifest::Wasm::data(WASM_LOOP)]) + .with_timeout(std::time::Duration::from_secs(1)); + let mut plugin = PluginBuilder::new(manifest) + .with_wasi(true) + .with_functions([f]) + .with_coredump("extism.core") + .build() + .unwrap(); + let output: Result<&[u8], Error> = plugin.call("infinite_loop", "abc123"); + assert!(output.is_err()); + assert!(std::path::PathBuf::from("extism.core").exists()); + let _ = std::fs::remove_file("extism.core"); +} From 1f72c2a1ce1445fb39eae4a05c4a4461a2230de8 Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Wed, 25 Oct 2023 10:25:38 -0500 Subject: [PATCH 093/176] docs: Point to readmes (#541) Point everything to to new repos. We will eventually remove these subrepos to clean everything up but leaving them for the next month at least. --------- Co-authored-by: zach --- README.md | 31 +++++++++++++++------------ browser/README.md | 4 ++++ d/README.md | 42 ++----------------------------------- dotnet/README.md | 4 ++++ elixir/README.md | 53 ++--------------------------------------------- go/README.md | 4 ++++ haskell/README.md | 4 ++++ java/readme.md | 39 ++-------------------------------- node/README.md | 4 ++++ ocaml/README.md | 4 ++++ php/README.md | 4 ++++ python/README.md | 5 +++-- ruby/README.md | 3 +++ zig/README.md | 4 ++++ 14 files changed, 62 insertions(+), 143 deletions(-) create mode 100644 browser/README.md create mode 100644 dotnet/README.md create mode 100644 go/README.md create mode 100644 haskell/README.md create mode 100644 node/README.md create mode 100644 ocaml/README.md create mode 100644 php/README.md create mode 100644 ruby/README.md create mode 100644 zig/README.md diff --git a/README.md b/README.md index e7442df37..f639205b2 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,24 @@ If you're interested in working on or building with Extism, please join our [Dis # [Extism](https://extism.org) -The universal plug-in system. Run WebAssembly extensions inside your app. Use idiomatic Host SDKs for [Go](https://extism.org/docs/integrate-into-your-codebase/go-host-sdk), -[Ruby](https://extism.org/docs/integrate-into-your-codebase/ruby-host-sdk), [Python](https://extism.org/docs/integrate-into-your-codebase/python-host-sdk), -[Node](https://extism.org/docs/integrate-into-your-codebase/node-host-sdk), [Rust](https://extism.org/docs/integrate-into-your-codebase/rust-host-sdk), -[C](https://extism.org/docs/integrate-into-your-codebase/c-host-sdk), [C++](https://extism.org/docs/integrate-into-your-codebase/cpp-host-sdk), -[OCaml](https://extism.org/docs/integrate-into-your-codebase/ocaml-host-sdk), -[Haskell](https://extism.org/docs/integrate-into-your-codebase/haskell-host-sdk), -[PHP](https://extism.org/docs/integrate-into-your-codebase/php-host-sdk), -[Elixir/Erlang](https://extism.org/docs/integrate-into-your-codebase/elixir-or-erlang-host-sdk), -[.NET](https://extism.org/docs/integrate-into-your-codebase/dotnet-host-sdk), -[Java](https://extism.org/docs/integrate-into-your-codebase/java-host-sdk), -[Zig](https://extism.org/docs/integrate-into-your-codebase/zig-host-sdk) & more (others coming soon). - -Plug-in development kits (PDK) for plug-in authors supported in [Rust](https://github.com/extism/rust-pdk), [AssemblyScript](https://github.com/extism/assemblyscript-pdk), [Go](https://github.com/extism/go-pdk), [C/C++](https://github.com/extism/c-pdk), [Haskell](https://github.com/extism/haskell-pdk), and [Zig](https://github.com/extism/zig-pdk). +The universal plug-in system. Run WebAssembly extensions inside your app. Use idiomatic Host SDKs for [Go](https://github.com/extism/go-sdk#readme), +[Ruby](https://github.com/extism/ruby-sdk#readme), +[Python](https://github.com/extism/python-sdk#readme), +[JavaScript](https://github.com/extism/js-sdk#readme), +[Rust](/runtime/#readme), +[C](libextism/#readme), +[C++](https://github.com/extism/cpp-sdk/#readme), +[OCaml](https://github.com/extism/ocaml-sdk#readme), +[Haskell](https://github.com/extism/haskell-sdk#readme), +[PHP](https://github.com/extism/php-sdk#readme), +[Elixir](https://github.com/extism/elixir-sdk#readme), +[.NET](https://github.com/extism/dotnet-sdk#readme), +[Java](https://github.com/extism/java-sdk#readme), +[Zig](https://github.com/extism/zig-sdk#readme), +[D](https://github.com/extism/d-sdk#readme), +& more (others coming soon). + +Plug-in development kits (PDK) for plug-in authors supported in [Rust](https://github.com/extism/rust-pdk#readme), [AssemblyScript](https://github.com/extism/assemblyscript-pdk#readme), [Go](https://github.com/extism/go-pdk#readme), [C/C++](https://github.com/extism/c-pdk#readme), [Haskell](https://github.com/extism/haskell-pdk#readme), [JavaScript](https://github.com/extism/js-pdk#readme), [C#](https://github.com/extism/dotnet-pdk#readme), [F#](https://github.com/extism/dotnet-pdk#readme) and [Zig](https://github.com/extism/zig-pdk#readme).

    Extism embedded SDK language support diff --git a/browser/README.md b/browser/README.md new file mode 100644 index 000000000..ffb8c4170 --- /dev/null +++ b/browser/README.md @@ -0,0 +1,4 @@ +# Browser Host SDK + +This contains the `0.x` version of the SDK. This library is deprecated and all new integrations should use the new [Universal JavaScript library](https://github.com/extism/js-sdk#readme). + diff --git a/d/README.md b/d/README.md index 5d5e2743e..55ab887b9 100644 --- a/d/README.md +++ b/d/README.md @@ -1,42 +1,4 @@ -# Extism D SDK +# D Host SDK -D bindings to the Extism host SDK. +Development of this library has moved to [this repo](https://github.com/extism/d-sdk#readme). -## Development - -1. Ensure a [D compiler](https://dlang.org/download) is installed and available in your `PATH`. - > Note: The compiler's frontend must be at least version `2.102`. -2. Ensure the extism shared library is installed *before* running tests or examples: - - See [Installing Extism](https://extism.org/docs/install) documentation. - - ```sh - extism install latest - extism link - ``` - - > Note: The `extism install` command may require `sudo`. - -### Lint Sources - -```sh -dub lint -``` - -> Note: Until [dlang/dub#2700](https://github.com/dlang/dub/issues/2700) is fixed, ensure all non-D sources (e.g. intermediate `*.d` files in `targets`) are cleaned from the repo. -> -> Run `cargo clean` to avoid seeing many invalid lint issues. - -### Running Tests - -```sh -dub test -``` - -## Examples - -### Hello World - -```sh -dub run extism:hello -``` diff --git a/dotnet/README.md b/dotnet/README.md new file mode 100644 index 000000000..ab2f5f072 --- /dev/null +++ b/dotnet/README.md @@ -0,0 +1,4 @@ +# Dotnet Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/dotnet-sdk#readme). + diff --git a/elixir/README.md b/elixir/README.md index 8bfb5af4e..3a5ed8205 100644 --- a/elixir/README.md +++ b/elixir/README.md @@ -1,54 +1,5 @@ -# Extism +# Elixir Host SDK -Extism Host SDK for Elixir and Erlang +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/elixir-sdk#readme). -## Docs -Read the [docs on hexdocs.pm](https://hexdocs.pm/extism/). - -## Installation - -You can find this package on [hex.pm](https://hex.pm/packages/extism). - -```elixir -def deps do - [ - {:extism, "~> 0.1.0"} - ] -end -``` - -## Getting Started - -### Example - -```elixir -# point to some wasm code, this is the count_vowels example that ships with extism -manifest = %{ wasm: [ %{ path: "/Users/ben/code/extism/wasm/code.wasm" } ]} -{:ok, plugin} = Extism.Plugin.new(manifest, false) -# {:ok, -# %Extism.Plugin{ -# resource: 0, -# reference: #Reference<0.520418104.1263009793.80956> -# }} -{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") -# {:ok, "{\"count\": 4}"} -{:ok, result} = JSON.decode(output) -# {:ok, %{"count" => 4}} -``` - -### Modules - -The primary modules you should learn is: - -* [Extism.Plugin](Extism.Plugin.html) - -#### Plugin - -The [Plugin](Extism.Plugin.html) represents an instance of your WASM program from the given manifest. -The key method to know here is [Extism.Plugin#call](Extism.Plugin.html#call/3) which takes a function name to invoke and some input data, and returns the results from the plugin. - -```elixir -{:ok, plugin} = Extism.Plugin.new(manifest, false) -{:ok, output} = Extism.Plugin.call(plugin, "count_vowels", "this is a test") -``` diff --git a/go/README.md b/go/README.md new file mode 100644 index 000000000..5ed40a94e --- /dev/null +++ b/go/README.md @@ -0,0 +1,4 @@ +# Go Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/go-sdk#readme). + diff --git a/haskell/README.md b/haskell/README.md new file mode 100644 index 000000000..fe82d88eb --- /dev/null +++ b/haskell/README.md @@ -0,0 +1,4 @@ +# Haskell Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/haskell-sdk#readme). + diff --git a/java/readme.md b/java/readme.md index c790c05a4..5b4fd73af 100644 --- a/java/readme.md +++ b/java/readme.md @@ -1,39 +1,4 @@ -Extism Java-SDK ---- +# Java Host SDK -Java SDK for the [extism](https://extism.org/) WebAssembly Plugin-System. - -# Build - -To build the extism java-sdk run the following command: - -``` -mvn clean verify -``` - -# Usage - -To use the extism java-sdk you need to add the `org.extism.sdk` dependency to your dependency management and ensure that -the native extism library is installed on your system. For installing the native library refer to the [extism documentation](https://extism.org/docs/install). - -Instead of installing the native library on your system, you can also download the appropriate library for your platform -yourself. -To do that simply download the [extism release](https://github.com/extism/extism/releases) to a `folder` and run your java application with the system property `-Djna.library.path=/path/to/folder`. - -## Maven -To use the extism java-sdk with maven you need to add the following dependency to your `pom.xml` file: -```xml - - org.extism.sdk - extism - 0.1.0 - -``` - -## Gradle -To use the extism java-sdk with maven you need to add the following dependency to your `build.gradle` file: - -``` -implementation 'org.extism.sdk:extism:0.1.0' -``` +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/java-sdk#readme). diff --git a/node/README.md b/node/README.md new file mode 100644 index 000000000..57c3e4876 --- /dev/null +++ b/node/README.md @@ -0,0 +1,4 @@ +# Node.js Host SDK + +This contains the `0.x` version of the SDK. This library is deprecated and all new integrations should use the new [Universal JavaScript library](https://github.com/extism/js-sdk#readme). + diff --git a/ocaml/README.md b/ocaml/README.md new file mode 100644 index 000000000..f503300a0 --- /dev/null +++ b/ocaml/README.md @@ -0,0 +1,4 @@ +# Ocaml Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/ocaml-sdk#readme). + diff --git a/php/README.md b/php/README.md new file mode 100644 index 000000000..bd0621b4c --- /dev/null +++ b/php/README.md @@ -0,0 +1,4 @@ +# Php Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/php-sdk#readme). + diff --git a/python/README.md b/python/README.md index cc99ca917..f6499ca75 100644 --- a/python/README.md +++ b/python/README.md @@ -1,3 +1,4 @@ -# Extism Python Host SDK +# Python Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/python-sdk#readme). -See [https://extism.org/docs/integrate-into-your-codebase/python-host-sdk/](https://extism.org/docs/integrate-into-your-codebase/python-host-sdk/). \ No newline at end of file diff --git a/ruby/README.md b/ruby/README.md new file mode 100644 index 000000000..e18abacee --- /dev/null +++ b/ruby/README.md @@ -0,0 +1,3 @@ +# Ruby Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/ruby-sdk#readme). diff --git a/zig/README.md b/zig/README.md new file mode 100644 index 000000000..a8b33f42c --- /dev/null +++ b/zig/README.md @@ -0,0 +1,4 @@ +# Zig Host SDK + +This contains the `0.x` version of the SDK. Development of this library has moved to [this repo](https://github.com/extism/zig-sdk#readme). + From c2910bdc6062a39a6ea63fdeef603f4004311bc8 Mon Sep 17 00:00:00 2001 From: Chris Dickinson Date: Wed, 25 Oct 2023 13:34:34 -0700 Subject: [PATCH 094/176] fix(release): bump maturin manylinux floor for ring 0.17 dep (#548) An update to `ring` broke the maturin-extism builds. Tracked this down to [1]; the maintainers of `ring` don't intend to support linux sysroots that old. This PR updates the ARM Linux builds in particular to pull in a newer manylinux target. Tested on a [private fork](https://github.com/extism/dev-extism/actions/runs/6644247344) of the extism repo. [1]: https://github.com/briansmith/ring/issues/1728 --- .github/workflows/release.yml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 64c8311f2..20592cb0e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -93,13 +93,23 @@ jobs: # maturin's cffi integration struggles with gnu headers on windows. # there's partial work towards fixing this in `extism-maturin/build.rs`, but it's # not sufficient to get it to work. omit it for now! - if: ${{ matrix.target != 'x86_64-pc-windows-gnu' }} + if: ${{ matrix.target != 'x86_64-pc-windows-gnu' && matrix.target != 'aarch64-unknown-linux-gnu' }} with: target: ${{ matrix.target }} args: --release --out dist --find-interpreter -m extism-maturin/Cargo.toml sccache: 'true' manylinux: auto + - name: Build GNU Linux wheels + uses: PyO3/maturin-action@v1 + # One of our deps, "ring", needs a newer sysroot than what "manylinux: auto" provides. + if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }} + with: + target: ${{ matrix.target }} + args: --release --out dist --find-interpreter -m extism-maturin/Cargo.toml + sccache: 'true' + manylinux: 2_28 + - name: Prepare Artifact shell: bash run: | From fea4e6c2930e1bcff5a76b36cba6e1f183fb496a Mon Sep 17 00:00:00 2001 From: Benjamin Eckel Date: Thu, 26 Oct 2023 12:42:55 -0500 Subject: [PATCH 095/176] docs: Add some documentation for plugin.call (#546) We should go through some of the main ones people will be interacting with and make sure there is a little more description of how to use it. --- runtime/src/plugin.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 160411c2e..7d80b9b42 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -711,8 +711,23 @@ impl Plugin { } } - /// Call a function by name with the given input, the return value is the output data returned by the plugin. - /// This data will be invalidated next time the plugin is called. + /// Call a function by name with the given input, the return value is + /// the output data returned by the plugin. The return type can be anything that implements + /// [FromBytes]. This data will be invalidated next time the plugin is called. + /// + /// # Arguments + /// + /// * `name` - A string representing the name of the export function to call + /// * `input` - The input argument to the function. Type should implment [ToBytes]. + /// + /// # Examples + /// + /// ```ignore + /// // call takes a ToBytes and FromBytes type + /// // this function takes an &str and returns an &str + /// let output = plugin.call::<&str, &str>("greet", "Benjamin")?; + /// assert_eq!(output, "Hello, Benjamin!"); + /// ``` pub fn call<'a, 'b, T: ToBytes<'a>, U: FromBytes<'b>>( &'b mut self, name: impl AsRef, From 0e65c3afaecfe714c348c6995ddb07ad1c7b2c0b Mon Sep 17 00:00:00 2001 From: zach Date: Thu, 26 Oct 2023 11:19:48 -0700 Subject: [PATCH 096/176] refactor!: Cleanup UserData implementation, update example in README (#550) Fixes #545 - Adds a type parameter to `UserData` type to avoid dynamic typing issues - Adds KV example from README to `examples/readme.rs` to make sure it stays in-sync - Implement `Default` for `UserData` when `T` implements `Default` - Make `UserData` argument non-optional in `Function::new`, `UserData::default()` can be used instead. --- c/main.c | 10 +- runtime/README.md | 69 +++++++------ runtime/benches/bench.rs | 6 +- runtime/examples/readme.rs | 57 ++++++++++ runtime/extism.h | 5 +- runtime/src/current_plugin.rs | 8 +- runtime/src/function.rs | 189 ++++++++++++++++------------------ runtime/src/plugin.rs | 18 ++-- runtime/src/plugin_builder.rs | 38 +++++-- runtime/src/sdk.rs | 35 +++++-- runtime/src/tests/runtime.rs | 72 ++++++++++--- 11 files changed, 315 insertions(+), 192 deletions(-) create mode 100644 runtime/examples/readme.rs diff --git a/c/main.c b/c/main.c index 33a1442c8..fdfd4fb54 100644 --- a/c/main.c +++ b/c/main.c @@ -24,6 +24,8 @@ void hello_world(ExtismCurrentPlugin *plugin, const ExtismVal *inputs, outputs[0].v.i64 = inputs[0].v.i64; } +void free_data(void *x) { puts("FREE"); } + uint8_t *read_file(const char *filename, size_t *len) { FILE *fp = fopen(filename, "rb"); @@ -57,8 +59,9 @@ int main(int argc, char *argv[]) { uint8_t *data = read_file("../wasm/code-functions.wasm", &len); ExtismValType inputs[] = {I64}; ExtismValType outputs[] = {I64}; - ExtismFunction *f = extism_function_new("hello_world", inputs, 1, outputs, 1, - hello_world, "Hello, again!", NULL); + ExtismFunction *f = + extism_function_new("hello_world", inputs, 1, outputs, 1, hello_world, + "Hello, again!", free_data); char *errmsg = NULL; ExtismPlugin *plugin = extism_plugin_new( @@ -76,6 +79,9 @@ int main(int argc, char *argv[]) { const uint8_t *output = extism_plugin_output_data(plugin); write(STDOUT_FILENO, output, out_len); write(STDOUT_FILENO, "\n", 1); + puts("Freeing plugin"); extism_plugin_free(plugin); + puts("Freeing function"); + extism_function_free(f); return 0; } diff --git a/runtime/README.md b/runtime/README.md index eaf38b292..1035b0b00 100644 --- a/runtime/README.md +++ b/runtime/README.md @@ -142,56 +142,59 @@ We want to expose two functions to our plugin, `kv_write(key: String, value: Byt use extism::*; // pretend this is redis or something :) -type Map = std::collections::BTreeMap>; -type KVStore = std::sync::Arc>; +type KVStore = std::collections::BTreeMap>; -// When an untyped first argument is provided to `host_fn` it is used as the -// variable name for the `UserData` parameter -host_fn!(kv_read(user_data, key: String) -> u32 { - let kv = user_data.get::().unwrap(); +// When a first argument separated with a semicolon is provided to `host_fn` it is used as the +// variable name and type for the `UserData` parameter +host_fn!(kv_read(user_data: KVStore; key: String) -> u32 { + let kv = user_data.get()?; + let kv = kv.lock().unwrap(); let value = kv - .lock() - .unwrap() .get(&key) .map(|x| u32::from_le_bytes(x.clone().try_into().unwrap())) .unwrap_or_else(|| 0u32); Ok(value) }); -host_fn!(kv_write(user_data, key: String, value: u32) { - let kv = user_data.get_mut::().unwrap(); - kv.lock().unwrap().insert(key, value.to_le_bytes().to_vec()); +host_fn!(kv_write(user_data: KVStore; key: String, value: u32) { + let kv = user_data.get()?; + let mut kv = kv.lock().unwrap(); + kv.insert(key, value.to_le_bytes().to_vec()); Ok(()) }); fn main() { - let kv_store = KVStore::default(); - - // Wrap kv_read function - let kv_read = Function::new( - "kv_read", - [ValType::I64], - [ValType::I64], - Some(UserData::new(kv_store.clone())), - kv_read, - ); - - // Wrap kv_write function - let kv_write = Function::new( - "kv_write", - [ValType::I64, ValType::I64], - [], - Some(UserData::new(kv_store.clone())), - kv_write, - ); + let kv_store = UserData::new(KVStore::default()); let url = Wasm::url( "https://github.com/extism/plugins/releases/latest/download/count_vowels_kvstore.wasm", ); let manifest = Manifest::new([url]); - let mut plugin = Plugin::new_with_manifest(&manifest, [kv_read, kv_write], true); - let res = plugin.call::<&str, &str>::("count_vowels", "Hello, world!").unwrap(); - println!("{}", res); + let mut plugin = PluginBuilder::new(manifest) + .with_wasi(true) + .with_function( + "kv_read", + [ValType::I64], + [ValType::I64], + kv_store.clone(), + kv_read, + ) + .with_function( + "kv_write", + [ValType::I64, ValType::I64], + [], + kv_store.clone(), + kv_write, + ) + .build() + .unwrap(); + + for _ in 0..5 { + let res = plugin + .call::<&str, &str>("count_vowels", "Hello, world!") + .unwrap(); + println!("{}", res); + } } ``` diff --git a/runtime/benches/bench.rs b/runtime/benches/bench.rs index e6c6be01b..e6e04566e 100644 --- a/runtime/benches/bench.rs +++ b/runtime/benches/bench.rs @@ -63,7 +63,7 @@ pub fn reflect_1(c: &mut Criterion) { "host_reflect", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ) .build() @@ -87,7 +87,7 @@ pub fn reflect_10(c: &mut Criterion) { "host_reflect", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ) .build() @@ -111,7 +111,7 @@ pub fn reflect_100(c: &mut Criterion) { "host_reflect", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ) .build() diff --git a/runtime/examples/readme.rs b/runtime/examples/readme.rs new file mode 100644 index 000000000..61ce2176d --- /dev/null +++ b/runtime/examples/readme.rs @@ -0,0 +1,57 @@ +use extism::*; + +// pretend this is redis or something :) +type KVStore = std::collections::BTreeMap>; + +// When a first argument separated with a semicolon is provided to `host_fn` it is used as the +// variable name and type for the `UserData` parameter +host_fn!(kv_read(user_data: KVStore; key: String) -> u32 { + let kv = user_data.get()?; + let kv = kv.lock().unwrap(); + let value = kv + .get(&key) + .map(|x| u32::from_le_bytes(x.clone().try_into().unwrap())) + .unwrap_or_else(|| 0u32); + Ok(value) +}); + +host_fn!(kv_write(user_data: KVStore; key: String, value: u32) { + let kv = user_data.get()?; + let mut kv = kv.lock().unwrap(); + kv.insert(key, value.to_le_bytes().to_vec()); + Ok(()) +}); + +fn main() { + let kv_store = UserData::new(KVStore::default()); + + let url = Wasm::url( + "https://github.com/extism/plugins/releases/latest/download/count_vowels_kvstore.wasm", + ); + let manifest = Manifest::new([url]); + let mut plugin = PluginBuilder::new(manifest) + .with_wasi(true) + .with_function( + "kv_read", + [ValType::I64], + [ValType::I64], + kv_store.clone(), + kv_read, + ) + .with_function( + "kv_write", + [ValType::I64, ValType::I64], + [], + kv_store.clone(), + kv_write, + ) + .build() + .unwrap(); + + for _ in 0..5 { + let res = plugin + .call::<&str, &str>("count_vowels", "Hello, world!") + .unwrap(); + println!("{}", res); + } +} diff --git a/runtime/extism.h b/runtime/extism.h index 2560f2396..fa245d4ab 100644 --- a/runtime/extism.h +++ b/runtime/extism.h @@ -55,9 +55,6 @@ typedef struct ExtismCancelHandle ExtismCancelHandle; */ typedef struct ExtismCurrentPlugin ExtismCurrentPlugin; -/** - * Wraps raw host functions with some additional metadata and user data - */ typedef struct ExtismFunction ExtismFunction; /** @@ -163,7 +160,7 @@ void extism_function_free(ExtismFunction *f); void extism_function_set_namespace(ExtismFunction *ptr, const char *namespace_); /** - * Create a new plugin with additional host functions + * Create a new plugin with host functions, the functions passed to this function no longer need to be manually freed using * * `wasm`: is a WASM module (wat or wasm) or a JSON encoded manifest * `wasm_size`: the length of the `wasm` parameter diff --git a/runtime/src/current_plugin.rs b/runtime/src/current_plugin.rs index 88f2ad93c..073115845 100644 --- a/runtime/src/current_plugin.rs +++ b/runtime/src/current_plugin.rs @@ -259,8 +259,8 @@ impl CurrentPlugin { /// Get a pointer to the plugin memory pub(crate) fn memory_ptr(&mut self) -> *mut u8 { if let Some(mem) = self.memory() { - let (_, mut store) = self.linker_and_store(); - return mem.data_ptr(&mut store); + let (_, store) = self.linker_and_store(); + return mem.data_ptr(store); } std::ptr::null_mut() @@ -325,7 +325,7 @@ impl CurrentPlugin { pub fn set_error(&mut self, s: impl AsRef) -> Result<(u64, u64), Error> { let s = s.as_ref(); debug!("Set error: {:?}", s); - let handle = self.current_plugin_mut().memory_new(&s)?; + let handle = self.current_plugin_mut().memory_new(s)?; let (linker, mut store) = self.linker_and_store(); if let Some(f) = linker.get(&mut store, "env", "extism_error_set") { f.into_func().unwrap().call( @@ -333,7 +333,7 @@ impl CurrentPlugin { &[Val::I64(handle.offset() as i64)], &mut [], )?; - return Ok((handle.offset(), s.len() as u64)); + Ok((handle.offset(), s.len() as u64)) } else { anyhow::bail!("extism_error_set not found"); } diff --git a/runtime/src/function.rs b/runtime/src/function.rs index 73a61c7c3..e3b668f33 100644 --- a/runtime/src/function.rs +++ b/runtime/src/function.rs @@ -1,3 +1,6 @@ +use std::sync::Arc; +use wasmtime::Caller; + use crate::{CurrentPlugin, Error}; /// An enumeration of all possible value types in WebAssembly. @@ -55,118 +58,97 @@ impl From for wasmtime::ValType { /// Raw WebAssembly values pub type Val = wasmtime::Val; -/// UserData is an opaque pointer used to store additional data -/// that gets passed into host function callbacks -pub struct UserData { +/// A pointer to C userdata +#[derive(Debug)] +pub struct CPtr { ptr: *mut std::ffi::c_void, free: Option, - is_any: bool, } -extern "C" fn free_any(ptr: *mut std::ffi::c_void) { - let ptr = ptr as *mut dyn std::any::Any; - unsafe { drop(Box::from_raw(ptr)) } +/// UserDataHandle is an untyped version of `UserData` that is stored inside `Function` to keep a live reference. +#[derive(Clone)] +pub(crate) enum UserDataHandle { + C(Arc), + Rust(Arc>), +} + +/// UserData is used to store additional data that gets passed into host function callbacks +/// +/// `UserData` is used to store `C` and `Rust` data from hosts. The Rust data in wrapped in an `Arc>` and can be accessed +/// using `UserData::get`. The `C` data is stored as a pointer and cleanup function and isn't usable from Rust. The cleanup function +/// will be called when the inner `CPtr` is dropped. +#[derive(Debug)] +pub enum UserData { + C(Arc), + Rust(Arc>), +} + +impl Default for UserData { + fn default() -> Self { + UserData::new(T::default()) + } } -impl UserData { +impl Clone for UserData { + fn clone(&self) -> Self { + match self { + UserData::C(ptr) => UserData::C(ptr.clone()), + UserData::Rust(data) => UserData::Rust(data.clone()), + } + } +} + +impl UserData { /// Create a new `UserData` from an existing pointer and free function, this is used /// by the C API to wrap C pointers into user data pub(crate) fn new_pointer( ptr: *mut std::ffi::c_void, free: Option, ) -> Self { - UserData { - ptr, - free, - is_any: false, - } - } - - /// Create a new `UserData` with any Rust type - pub fn new(x: T) -> Self { - let ptr = Box::into_raw(Box::new(x)) as *mut _; - UserData { - ptr, - free: Some(free_any), - is_any: true, - } - } - - /// Returns `true` if the underlying pointer is `null` - pub fn is_null(&self) -> bool { - self.ptr.is_null() + UserData::C(Arc::new(CPtr { ptr, free })) } - /// Get the user data pointer + /// Access the underlying C pointer pub(crate) fn as_ptr(&self) -> *mut std::ffi::c_void { - self.ptr - } - - pub(crate) fn make_copy(&self) -> Self { - UserData { - ptr: self.ptr, - free: None, - is_any: self.is_any, - } - } - - /// Get the pointer as an `Any` value - this will only return `Some` if `UserData::new` was used to create the value, - /// when `UserData::new_pointer` is used there is no way to know the original type of the pointer - pub fn any(&self) -> Option<&dyn std::any::Any> { - if !self.is_any || self.is_null() { - return None; - } - - unsafe { Some(&*self.ptr) } - } - - /// Get a reference to the value stored in `UserData` if it matches the initial type - pub fn get(&self) -> Option<&T> { - self.any().and_then(|x| x.downcast_ref()) - } - - /// Get the pointer as a mutable `Any` value - this will only return `Some` if `UserData::new` was used to create the value, - /// when `UserData::new_pointer` is used there is no way to know the original type of the pointer - pub fn any_mut(&mut self) -> Option<&mut dyn std::any::Any> { - if !self.is_any || self.is_null() { - return None; + match self { + UserData::C(ptr) => ptr.ptr, + _ => { + log::error!("Rust UserData cannot be used by C"); + std::ptr::null_mut() + } } - - unsafe { Some(&mut *self.ptr) } } - /// Get a mutable reference to the value stored in `UserData` if it matches the initial type - pub fn get_mut(&mut self) -> Option<&mut T> { - self.any_mut().and_then(|x| x.downcast_mut()) + /// Create a new `UserData` from a Rust value + /// + /// This will wrap the provided value in a reference-counted mutex + pub fn new(x: T) -> Self { + let data = Arc::new(std::sync::Mutex::new(x)); + UserData::Rust(data) } -} -impl Default for UserData { - fn default() -> Self { - UserData { - ptr: std::ptr::null_mut(), - free: None, - is_any: false, + /// Get a copy of the inner value + pub fn get(&self) -> Result>, Error> { + match self { + UserData::C { .. } => anyhow::bail!("C UserData should not be used from Rust"), + UserData::Rust(data) => Ok(data.clone()), } } } -impl Drop for UserData { +impl Drop for CPtr { fn drop(&mut self) { - if self.ptr.is_null() { - return; + if !self.ptr.is_null() { + if let Some(free_data) = &self.free { + free_data(self.ptr); + self.ptr = std::ptr::null_mut(); + } } - - if let Some(free) = self.free { - free(self.ptr); - } - - self.ptr = std::ptr::null_mut(); } } -unsafe impl Send for UserData {} -unsafe impl Sync for UserData {} +unsafe impl Send for UserData {} +unsafe impl Sync for UserData {} type FunctionInner = dyn Fn(wasmtime::Caller, &[wasmtime::Val], &mut [wasmtime::Val]) -> Result<(), Error> + Sync @@ -185,40 +167,45 @@ pub struct Function { pub(crate) ty: wasmtime::FuncType, /// Function handle - pub(crate) f: std::sync::Arc, + pub(crate) f: Arc, /// UserData - pub(crate) _user_data: std::sync::Arc, + pub(crate) _user_data: UserDataHandle, } impl Function { /// Create a new host function - pub fn new( + pub fn new( name: impl Into, args: impl IntoIterator, returns: impl IntoIterator, - user_data: Option, + user_data: UserData, f: F, ) -> Function where F: 'static - + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + Sync + Send, { - let user_data = user_data.unwrap_or_default(); - let data = user_data.make_copy(); + let data = user_data.clone(); Function { name: name.into(), ty: wasmtime::FuncType::new( args.into_iter().map(wasmtime::ValType::from), returns.into_iter().map(wasmtime::ValType::from), ), - f: std::sync::Arc::new(move |mut caller, inp, outp| { - f(caller.data_mut(), inp, outp, data.make_copy()) - }), + f: Arc::new( + move |mut caller: Caller<_>, inp: &[Val], outp: &mut [Val]| { + let x = data.clone(); + f(caller.data_mut(), inp, outp, x) + }, + ), namespace: None, - _user_data: std::sync::Arc::new(user_data), + _user_data: match &user_data { + UserData::C(ptr) => UserDataHandle::C(ptr.clone()), + UserData::Rust(x) => UserDataHandle::Rust(x.clone()), + }, } } @@ -254,25 +241,25 @@ impl Function { /// For example, the following defines a host function named `add_newline` that takes a /// string parameter and returns a string result: /// ```rust -/// extism::host_fn!(add_newline(_user_data, a: String) -> String { Ok(a + "\n") }); +/// extism::host_fn!(add_newline(_user_data: (), a: String) -> String { Ok(a + "\n") }); /// ``` /// A few things worth noting: /// - The function always returns a `Result` that wraps the specified return type -/// - If an untyped first parameter is passed (`_user_data` above) it will be +/// - If a first parameter and type are passed (`_user_data` above) followed by a semicolon it will be /// the name of the `UserData` parameter and can be used from inside the function // definition. #[macro_export] macro_rules! host_fn { ($name: ident ($($arg:ident : $argty:ty),*) $(-> $ret:ty)? $b:block) => { - $crate::host_fn!($name (user_data, $($arg : $argty),*) $(-> $ret)? {$b}); + $crate::host_fn!($name (user_data: (); $($arg : $argty),*) $(-> $ret)? {$b}); }; - ($name: ident ($user_data:ident, $($arg:ident : $argty:ty),*) $(-> $ret:ty)? $b:block) => { + ($name: ident ($user_data:ident : $dataty:ty; $($arg:ident : $argty:ty),*) $(-> $ret:ty)? $b:block) => { fn $name( plugin: &mut $crate::CurrentPlugin, inputs: &[$crate::Val], outputs: &mut [$crate::Val], #[allow(unused)] - mut $user_data: $crate::UserData, + mut $user_data: $crate::UserData<$dataty>, ) -> Result<(), $crate::Error> { let mut index = 0; $( @@ -284,7 +271,9 @@ macro_rules! host_fn { )* let output = move || -> Result<_, $crate::Error> { $b }; let output: $crate::convert::MemoryHandle = plugin.memory_new(&output()?)?; - outputs[0] = plugin.memory_to_val(output); + if !outputs.is_empty() { + outputs[0] = plugin.memory_to_val(output); + } Ok(()) } }; diff --git a/runtime/src/plugin.rs b/runtime/src/plugin.rs index 7d80b9b42..18a88afb4 100644 --- a/runtime/src/plugin.rs +++ b/runtime/src/plugin.rs @@ -160,7 +160,7 @@ impl Plugin { let profiling_strategy = debug_options .profiling_strategy .map_or(ProfilingStrategy::None, |_| profiling_strategy()); - debug_options.profiling_strategy = Some(profiling_strategy.clone()); + debug_options.profiling_strategy = Some(profiling_strategy); // Setup wasmtime types let engine = Engine::new( @@ -170,7 +170,6 @@ impl Plugin { .coredump_on_trap(debug_options.coredump.is_some()) .profiler(profiling_strategy), )?; - let mut imports = imports.into_iter(); let (manifest, modules) = manifest::load(&engine, wasm.as_ref())?; let available_pages = manifest.memory.max_pages; @@ -241,12 +240,13 @@ impl Plugin { } } + let mut imports: Vec<_> = imports.into_iter().collect(); for f in &mut imports { let name = f.name().to_string(); let ns = f.namespace().unwrap_or(EXPORT_MODULE_NAME); - linker.func_new(ns, &name, f.ty().clone(), unsafe { - &*std::sync::Arc::as_ptr(&f.f) - })?; + unsafe { + linker.func_new(ns, &name, f.ty().clone(), &*(f.f.as_ref() as *const _))?; + } } let instance_pre = linker.instantiate_pre(main)?; @@ -264,9 +264,9 @@ impl Plugin { cancel_handle: CancelHandle { id, timer_tx }, instantiations: 0, output: Output::default(), - _functions: imports.collect(), needs_reset: false, debug_options, + _functions: imports, }; plugin.current_plugin_mut().store = &mut plugin.store; @@ -663,7 +663,7 @@ impl Plugin { if let Some(memory) = self.current_plugin_mut().memory() { debug!("Dumping memory to {}", file.display()); let data = memory.data(&mut self.store); - if let Err(e) = std::fs::write(file, &data) { + if let Err(e) = std::fs::write(file, data) { error!("Unable to write memory dump: {:?}", e); } } else { @@ -703,10 +703,10 @@ impl Plugin { } error!("Call to {name} encountered an error: {e:?}"); - return Err(( + Err(( e.context(msg.unwrap_or_else(|| "Error in Extism plugin call".to_string())), -1, - )); + )) } } } diff --git a/runtime/src/plugin_builder.rs b/runtime/src/plugin_builder.rs index 5a492480e..b644c0b7b 100644 --- a/runtime/src/plugin_builder.rs +++ b/runtime/src/plugin_builder.rs @@ -49,27 +49,43 @@ impl PluginBuilder { } /// Add a single host function - pub fn with_function( + pub fn with_function( mut self, name: impl Into, args: impl IntoIterator, returns: impl IntoIterator, - user_data: Option, + user_data: UserData, f: F, ) -> Self where F: 'static - + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + Sync + Send, { - self.functions.push(Function::new( - name, - args, - returns, - user_data.map(UserData::new), - f, - )); + self.functions + .push(Function::new(name, args, returns, user_data, f)); + self + } + + /// Add a single host function in a specific namespace + pub fn with_function_in_namespace( + mut self, + namespace: impl Into, + name: impl Into, + args: impl IntoIterator, + returns: impl IntoIterator, + user_data: UserData, + f: F, + ) -> Self + where + F: 'static + + Fn(&mut CurrentPlugin, &[Val], &mut [Val], UserData) -> Result<(), Error> + + Sync + + Send, + { + self.functions + .push(Function::new(name, args, returns, user_data, f).with_namespace(namespace)); self } @@ -104,7 +120,7 @@ impl PluginBuilder { match self.source { Source::Manifest(m) => { let data = serde_json::to_vec(&m)?; - Plugin::build_new(&data, self.functions, self.wasi, self.debug_options) + Plugin::build_new(data, self.functions, self.wasi, self.debug_options) } Source::Data(d) => Plugin::build_new(d, self.functions, self.wasi, self.debug_options), } diff --git a/runtime/src/sdk.rs b/runtime/src/sdk.rs index e1005f108..487d34318 100644 --- a/runtime/src/sdk.rs +++ b/runtime/src/sdk.rs @@ -7,6 +7,7 @@ use crate::*; pub type ExtismMemoryHandle = u64; pub type Size = u64; +pub struct ExtismFunction(std::cell::Cell>); /// The return code used to specify a successful plugin call pub static EXTISM_SUCCESS: i32 = 0; @@ -168,7 +169,7 @@ pub unsafe extern "C" fn extism_function_new( func: ExtismFunctionType, user_data: *mut std::ffi::c_void, free_user_data: Option, -) -> *mut Function { +) -> *mut ExtismFunction { let name = match std::ffi::CStr::from_ptr(name).to_str() { Ok(x) => x.to_string(), Err(_) => { @@ -190,12 +191,12 @@ pub unsafe extern "C" fn extism_function_new( } .to_vec(); - let user_data = UserData::new_pointer(user_data, free_user_data); + let user_data: UserData<()> = UserData::new_pointer(user_data, free_user_data); let f = Function::new( name, inputs, output_types.clone(), - Some(user_data), + user_data, move |plugin, inputs, outputs, user_data| { let inputs: Vec<_> = inputs.iter().map(ExtismVal::from).collect(); let mut output_tmp: Vec<_> = output_types @@ -227,30 +228,35 @@ pub unsafe extern "C" fn extism_function_new( Ok(()) }, ); - Box::into_raw(Box::new(f)) + Box::into_raw(Box::new(ExtismFunction(std::cell::Cell::new(Some(f))))) } /// Free `ExtismFunction` #[no_mangle] -pub unsafe extern "C" fn extism_function_free(f: *mut Function) { +pub unsafe extern "C" fn extism_function_free(f: *mut ExtismFunction) { if f.is_null() { return; } + drop(Box::from_raw(f)) } /// Set the namespace of an `ExtismFunction` #[no_mangle] pub unsafe extern "C" fn extism_function_set_namespace( - ptr: *mut Function, + ptr: *mut ExtismFunction, namespace: *const std::ffi::c_char, ) { let namespace = std::ffi::CStr::from_ptr(namespace); let f = &mut *ptr; - f.set_namespace(namespace.to_string_lossy().to_string()); + if let Some(x) = f.0.get_mut() { + x.set_namespace(namespace.to_string_lossy().to_string()); + } else { + debug!("Trying to set namespace of already registered function") + } } -/// Create a new plugin with additional host functions +/// Create a new plugin with host functions, the functions passed to this function no longer need to be manually freed using /// /// `wasm`: is a WASM module (wat or wasm) or a JSON encoded manifest /// `wasm_size`: the length of the `wasm` parameter @@ -261,7 +267,7 @@ pub unsafe extern "C" fn extism_function_set_namespace( pub unsafe extern "C" fn extism_plugin_new( wasm: *const u8, wasm_size: Size, - functions: *mut *const Function, + functions: *mut *const ExtismFunction, n_functions: Size, with_wasi: bool, errmsg: *mut *mut std::ffi::c_char, @@ -277,8 +283,15 @@ pub unsafe extern "C" fn extism_plugin_new( if f.is_null() { continue; } - let f = (*f).clone(); - funcs.push(f); + if let Some(f) = (*f).0.take() { + funcs.push(f); + } else { + let e = std::ffi::CString::new( + "Function cannot be registered with multiple different Plugins", + ) + .unwrap(); + *errmsg = e.into_raw(); + } } } } diff --git a/runtime/src/tests/runtime.rs b/runtime/src/tests/runtime.rs index 0e4faa15e..cb38a8bd1 100644 --- a/runtime/src/tests/runtime.rs +++ b/runtime/src/tests/runtime.rs @@ -1,5 +1,5 @@ use crate::*; -use std::time::Instant; +use std::{io::Write, time::Instant}; const WASM: &[u8] = include_bytes!("../../../wasm/code-functions.wasm"); const WASM_NO_FUNCTIONS: &[u8] = include_bytes!("../../../wasm/code.wasm"); @@ -14,7 +14,7 @@ host_fn!(hello_world (a: String) -> String { Ok(a) }); // plugin: &mut CurrentPlugin, // inputs: &[Val], // outputs: &mut [Val], -// _user_data: UserData, +// _user_data: UserData<()>, // ) -> Result<(), Error> { // let input: String = plugin.memory_get_val(&inputs[0]).unwrap(); // let output = plugin.memory_new(&input).unwrap(); @@ -26,7 +26,7 @@ fn hello_world_panic( _plugin: &mut CurrentPlugin, _inputs: &[Val], _outputs: &mut [Val], - _user_data: UserData, + _user_data: UserData<()>, ) -> Result<(), Error> { panic!("This should not run"); } @@ -44,7 +44,7 @@ fn it_works() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ) .with_namespace("env"); @@ -52,7 +52,7 @@ fn it_works() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world_panic, ) .with_namespace("test"); @@ -143,7 +143,7 @@ fn test_plugin_threads() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ) .with_wasi(true) @@ -176,7 +176,7 @@ fn test_cancel() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ); @@ -201,7 +201,7 @@ fn test_timeout() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ); @@ -234,7 +234,7 @@ fn test_typed_plugin_macro() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ); @@ -252,7 +252,7 @@ fn test_multiple_instantiations() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ); @@ -294,7 +294,7 @@ fn test_fuzz_reflect_plugin() { "host_reflect", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world, ); @@ -339,7 +339,7 @@ fn hello_world_set_error( plugin: &mut CurrentPlugin, inputs: &[Val], outputs: &mut [Val], - _user_data: UserData, + _user_data: UserData<()>, ) -> Result<(), Error> { plugin.set_error("TEST")?; outputs[0] = inputs[0].clone(); @@ -353,7 +353,7 @@ fn test_extism_error() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world_set_error, ); let mut plugin = Plugin::new_with_manifest(&manifest, [f], true).unwrap(); @@ -368,7 +368,7 @@ fn test_extism_memdump() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world_set_error, ); let mut plugin = PluginBuilder::new_with_module(WASM) @@ -389,7 +389,7 @@ fn test_extism_coredump() { "hello_world", [ValType::I64], [ValType::I64], - None, + UserData::default(), hello_world_set_error, ); let manifest = Manifest::new([extism_manifest::Wasm::data(WASM_LOOP)]) @@ -405,3 +405,45 @@ fn test_extism_coredump() { assert!(std::path::PathBuf::from("extism.core").exists()); let _ = std::fs::remove_file("extism.core"); } + +fn hello_world_user_data( + _plugin: &mut CurrentPlugin, + inputs: &[Val], + outputs: &mut [Val], + user_data: UserData, +) -> Result<(), Error> { + let data = user_data.get()?; + let mut data = data.lock().unwrap(); + let s = _plugin.memory_get_val(&inputs[0])?; + data.write_all(s)?; + outputs[0] = inputs[0].clone(); + Ok(()) +} + +#[test] +fn test_userdata() { + let path = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap()).join("tmp"); + let output = { + if path.exists() { + std::fs::remove_file(&path).unwrap(); + } + let file = std::fs::File::create(&path).unwrap(); + let f = Function::new( + "hello_world", + [ValType::I64], + [ValType::I64], + UserData::new(file), + hello_world_user_data, + ); + let mut plugin = PluginBuilder::new_with_module(WASM) + .with_wasi(true) + .with_functions([f]) + .build() + .unwrap(); + let output: Result = plugin.call("count_vowels", "a".repeat(1024)); + assert!(output.is_ok()); + output.unwrap() + }; + assert!(path.exists()); + assert_eq!(std::fs::read(path).unwrap(), output.as_bytes()); +} From fab44c5db8ccc669b6b66509163ad14461a2f140 Mon Sep 17 00:00:00 2001 From: Gavin Hayes Date: Fri, 27 Oct 2023 19:10:57 -0400 Subject: [PATCH 097/176] feat: build static libextism (#552) * libextism is now built to crate-type `staticlib` as recommend by @zshipko * updated `Makefile` to install and uninstall the static library. * updated c example to have `static` target to link libextism statically * Compiler is no longer hardcoded to `clang`. Set `CC` to use a compiler other than the system compiler. Tested with `gcc` and `clang`. * added `static-artifact` to actions release. Untested as it's only ran on push with tag. --------- Co-authored-by: zach --- .github/workflows/release.yml | 9 ++++++++- Makefile | 4 +++- c/Makefile | 11 ++++++++++- libextism/Cargo.toml | 2 +- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 20592cb0e..39bf42db9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,24 +27,31 @@ jobs: - os: 'macos' target: 'x86_64-apple-darwin' artifact: 'libextism.dylib' + static-artifact: 'libextism.a' - os: 'macos' target: 'aarch64-apple-darwin' artifact: 'libextism.dylib' + static-artifact: 'libextism.a' - os: 'ubuntu' target: 'aarch64-unknown-linux-gnu' artifact: 'libextism.so' + static-artifact: 'libextism.a' - os: 'ubuntu' target: 'aarch64-unknown-linux-musl' artifact: 'libextism.so' + static-artifact: 'libextism.a' - os: 'ubuntu' target: 'x86_64-unknown-linux-gnu' artifact: 'libextism.so' + static-artifact: 'libextism.a' - os: 'windows' target: 'x86_64-pc-windows-gnu' artifact: 'extism.dll' + static-artifact: 'libextism.a' - os: 'windows' target: 'x86_64-pc-windows-msvc' artifact: 'extism.dll' + static-artifact: 'extism.lib' steps: - name: Checkout @@ -122,7 +129,7 @@ jobs: # compress the shared library & create checksum cp runtime/extism.h ${SRC_DIR} cp LICENSE ${SRC_DIR} - tar -C ${SRC_DIR} -czvf ${ARCHIVE} ${{ matrix.artifact }} extism.h + tar -C ${SRC_DIR} -czvf ${ARCHIVE} ${{ matrix.artifact }} ${{ matrix.static-artifact }} extism.h ls -ll ${ARCHIVE} if &>/dev/null which shasum; then diff --git a/Makefile b/Makefile index 426631dbe..1bd913bc5 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,6 @@ DEST?=/usr/local SOEXT=so +AEXT=a FEATURES?=default DEFAULT_FEATURES?=yes @@ -38,8 +39,9 @@ install: mkdir -p $(DEST)/lib $(DEST)/include install runtime/extism.h $(DEST)/include/extism.h install target/release/libextism.$(SOEXT) $(DEST)/lib/libextism.$(SOEXT) + install target/release/libextism.$(AEXT) $(DEST)/lib/libextism.$(AEXT) uninstall: - rm -f $(DEST)/include/extism.h $(DEST)/lib/libextism.$(SOEXT) + rm -f $(DEST)/include/extism.h $(DEST)/lib/libextism.$(SOEXT) $(DEST)/lib/libextism.$(AEXT) diff --git a/c/Makefile b/c/Makefile index 75eef4de9..4dc8e1a49 100644 --- a/c/Makefile +++ b/c/Makefile @@ -1,2 +1,11 @@ +.PHONY: build build: - clang -g -o main main.c -lextism -L . \ No newline at end of file + $(CC) -g -o main main.c -lextism -L . + +.PHONY: static +static: + $(CC) -g -o main main.c -l:libextism.a -lm -L . + +.PHONY: clean +clean: + rm -f main \ No newline at end of file diff --git a/libextism/Cargo.toml b/libextism/Cargo.toml index a640c72e6..60d8ef81e 100644 --- a/libextism/Cargo.toml +++ b/libextism/Cargo.toml @@ -10,7 +10,7 @@ description = "libextism" [lib] name = "extism" -crate-type = ["cdylib"] +crate-type = ["cdylib", "staticlib"] doc = false [dependencies] From f3447a538c50674bfea191ddb2ce82c0c5a3927c Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 30 Oct 2023 11:43:40 -0700 Subject: [PATCH 098/176] refactor!: Use `extism:host/env` namespace for extism functions and `extism:host/user` for user-defined host functions (#511) See #504 Removes CI for the in-repo SDKs, we can remove the actual code closer to the 1.0 release. --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: zshipko --- .github/workflows/browser-ci.yml | 8 -- .github/workflows/ci-cpp.yml | 8 -- .github/workflows/ci-d.yml | 8 -- .github/workflows/ci-dotnet.yml | 8 -- .github/workflows/ci-elixir.yml | 8 -- .github/workflows/ci-go.yml | 12 --- .github/workflows/ci-haskell.yml | 8 -- .github/workflows/ci-java.yml | 8 -- .github/workflows/ci-node.yml | 8 -- .github/workflows/ci-ocaml.yml | 10 --- .github/workflows/ci-php.yml | 10 --- .github/workflows/ci-python.yml | 8 -- .github/workflows/ci-ruby.yml | 8 -- .github/workflows/ci-zig.yml | 8 -- .gitignore | 2 + browser/data/code.wasm | Bin 1749283 -> 1872909 bytes c/Makefile | 11 +-- convert/src/encoding.rs | 2 +- convert/src/from_bytes.rs | 2 +- elixir/README.md | 2 - elixir/mix.lock | 2 +- java/readme.md | 1 - java/src/test/resources/code-functions.wasm | Bin 22644 -> 18258 bytes java/src/test/resources/code.wasm | Bin 1749283 -> 1872909 bytes kernel/src/lib.rs | 51 +++++------ libextism/Makefile | 11 +++ c/main.c => libextism/example.c | 4 +- manifest/src/lib.rs | 2 +- ocaml/lib/test/code-functions.wasm | Bin 1749283 -> 18258 bytes ocaml/lib/test/code.wasm | Bin 1749283 -> 1872909 bytes python/README.md | 1 - runtime/benches/bench.rs | 14 ++- runtime/src/current_plugin.rs | 22 ++--- runtime/src/extism-runtime.wasm | Bin 3435 -> 3302 bytes runtime/src/lib.rs | 2 +- runtime/src/manifest.rs | 10 +-- runtime/src/plugin.rs | 93 ++++++++------------ runtime/src/tests/kernel.rs | 26 +++--- runtime/src/tests/runtime.rs | 19 ++-- scripts/sdk_coverage.py | 1 - wasm/code-functions.wasm | Bin 18635 -> 18258 bytes wasm/code.wasm | Bin 1749283 -> 1872909 bytes wasm/globals.wasm | Bin 18011 -> 17757 bytes wasm/loop.wasm | Bin 4723795 -> 1823986 bytes wasm/reflect.wasm | Bin 4823268 -> 1835768 bytes 45 files changed, 132 insertions(+), 266 deletions(-) create mode 100644 libextism/Makefile rename c/main.c => libextism/example.c (95%) diff --git a/.github/workflows/browser-ci.yml b/.github/workflows/browser-ci.yml index dc7d717e5..e1e0f9333 100644 --- a/.github/workflows/browser-ci.yml +++ b/.github/workflows/browser-ci.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-node.yml - - manifest/** - - runtime/** - - libextism/** - - browser/** workflow_dispatch: name: Browser CI diff --git a/.github/workflows/ci-cpp.yml b/.github/workflows/ci-cpp.yml index 117150ba5..99c32a98a 100644 --- a/.github/workflows/ci-cpp.yml +++ b/.github/workflows/ci-cpp.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-cpp.yml - - manifest/** - - runtime/** - - libextism/** - - cpp/** workflow_dispatch: name: C++ CI diff --git a/.github/workflows/ci-d.yml b/.github/workflows/ci-d.yml index f14da46fd..787f434ac 100644 --- a/.github/workflows/ci-d.yml +++ b/.github/workflows/ci-d.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-d.yml - - manifest/** - - runtime/** - - libextism/** - - d/** workflow_dispatch: name: D CI diff --git a/.github/workflows/ci-dotnet.yml b/.github/workflows/ci-dotnet.yml index 7de4ed15b..539f0b7e6 100644 --- a/.github/workflows/ci-dotnet.yml +++ b/.github/workflows/ci-dotnet.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-dotnet.yml - - manifest/** - - runtime/** - - libextism/** - - dotnet/** workflow_dispatch: name: .NET CI diff --git a/.github/workflows/ci-elixir.yml b/.github/workflows/ci-elixir.yml index 6279ed2cd..4a5046ba6 100644 --- a/.github/workflows/ci-elixir.yml +++ b/.github/workflows/ci-elixir.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-elixir.yml - - manifest/** - - runtime/** - - rust/** - - elixir/** workflow_dispatch: name: Elixir CI diff --git a/.github/workflows/ci-go.yml b/.github/workflows/ci-go.yml index 22607920d..e9d4e98a8 100644 --- a/.github/workflows/ci-go.yml +++ b/.github/workflows/ci-go.yml @@ -1,16 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-go.yml - - manifest/** - - runtime/** - - libextism/** - - extism.go - - extism_test.go - - go.mod - - libextism.pc - - go/** workflow_dispatch: name: Go CI diff --git a/.github/workflows/ci-haskell.yml b/.github/workflows/ci-haskell.yml index 26e7a4a17..0d7090361 100644 --- a/.github/workflows/ci-haskell.yml +++ b/.github/workflows/ci-haskell.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-haskell.yml - - manifest/** - - runtime/** - - libextism/** - - haskell/** workflow_dispatch: name: Haskell CI diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml index e6f169535..fd393691d 100644 --- a/.github/workflows/ci-java.yml +++ b/.github/workflows/ci-java.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-java.yml - - manifest/** - - runtime/** - - libextism/** - - java/** workflow_dispatch: name: Java CI diff --git a/.github/workflows/ci-node.yml b/.github/workflows/ci-node.yml index cb8e564ec..1c2981546 100644 --- a/.github/workflows/ci-node.yml +++ b/.github/workflows/ci-node.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-node.yml - - manifest/** - - runtime/** - - libextism/** - - node/** workflow_dispatch: name: Node CI diff --git a/.github/workflows/ci-ocaml.yml b/.github/workflows/ci-ocaml.yml index 88785a14d..42ac91c46 100644 --- a/.github/workflows/ci-ocaml.yml +++ b/.github/workflows/ci-ocaml.yml @@ -1,14 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-ocaml.yml - - manifest/** - - runtime/** - - libextism/** - - ocaml/** - - dune-project - - extism.opam workflow_dispatch: name: OCaml CI diff --git a/.github/workflows/ci-php.yml b/.github/workflows/ci-php.yml index b2452d148..52fabe497 100644 --- a/.github/workflows/ci-php.yml +++ b/.github/workflows/ci-php.yml @@ -1,14 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-php.yml - - manifest/** - - runtime/** - - libextism/** - - php/** - - composer.json - - composer.lock workflow_dispatch: name: PHP CI diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index 34994dee9..b78805fd3 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-python.yml - - manifest/** - - runtime/** - - libextism/** - - python/** workflow_dispatch: name: Python CI diff --git a/.github/workflows/ci-ruby.yml b/.github/workflows/ci-ruby.yml index a6124ead0..4ed94ce21 100644 --- a/.github/workflows/ci-ruby.yml +++ b/.github/workflows/ci-ruby.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-ruby.yml - - manifest/** - - runtime/** - - libextism/** - - ruby/** workflow_dispatch: name: Ruby CI diff --git a/.github/workflows/ci-zig.yml b/.github/workflows/ci-zig.yml index fbe502e7d..979a7d119 100644 --- a/.github/workflows/ci-zig.yml +++ b/.github/workflows/ci-zig.yml @@ -1,12 +1,4 @@ on: - pull_request: - paths: - - .github/actions/extism/** - - .github/workflows/ci-zig.yml - - manifest/** - - runtime/** - - libextism/** - - zig/** workflow_dispatch: name: Zig CI diff --git a/.gitignore b/.gitignore index c6d30027e..52f07990d 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,5 @@ java/*.log java/.idea java/.DS_Store extism-maturin/src/extism.h +runtime/*.log +libextism/example diff --git a/browser/data/code.wasm b/browser/data/code.wasm index c5fe777cb349b7fa2917feb905ca38c037b18661..d2506dcf049e76808bf0667c57a9d7a194bad140 100755 GIT binary patch literal 1872909 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

    -dh0N5LF6bq5&mIcoRZ>j0FoC@8}Ywu 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 T3!Apg6%XKE!ULLS3AB{c@7 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

    lRMKKFTVORY4?aWynkHz8HP;iM(ruv9w2O+Eq1 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


    }C%GTvmA(Du&h?Bx?euH+)tk+jI0 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 z z>K#3i`{Qv6M_&f=n7YxGjXNSn+qs0UB8tT}T9q02geHemK%jLTeFfFIZ8e9x(Cucj z)gD?=4lUc%R-iNOgp(gWc9C}C*OQH|uvO2yH~#i6blPq~iy>IpwapEA)%Jen zP~7+d-U|ANCbfQ(s^EdYn#WuC?&QfCJY;9^yGS&BVw>$_|9mA|zu$c8o3b*!E`eHN z1%`$|)&x3T%=SdFcgh7`mvT#1mxQmY1iUWh^+aF2&MHTIA0{axi|jfz-U+4x>EYXx zO-1jAysYngvF94^)^0`(X+Uz0H`t=ed>tPb52in_g<|cekD} zM~jL}a(op;vfsD(HjKzfKE8@D8#|S|hxop>$#*M*cb{F-y;qMmhW~LAJeOZ$OUYnb#(($;p5AwrKlkev6&Yq;JF5x6~gW*`#+*x`Iu^+IPVHioNBlaCRn>~p)^(or9i;AP;nFPh%iKKfKUOizx zMK=h;Hj&a~iq+XdYz0kn%$-zkR*j}f%NilC*+RZh=LRZSN>|ieVPu#SZX*(hxR$)s@ZR&DEg_v0Pk?gcj5%J_gSN#1utN88UrhQx7L3b{i(SgyLj|x zW*5*(ZpMJ1lUXny2;77fWqOh z2lLfI&6n%o;4?TSSi-eF=CQnh3%WAID6xB%Om=2@6El&KL)=X^THrXlF2o<`tgXk= zbCuYMD@PzaZy!+mm*+U41KpnT<%1L8Vf)_3}YrFUx`FEs(CI0G1_4L}VqqZwXXDj(lLmSD< zj^@b=^9^B%e-H{}q^ztof+k{=ukK%(1dv zb}-Xp?1-M2*YUh|Pk_rKBo%b0{94?X&7KjpNlxP67AyG`yEnQg(m8z(A4r|ybJ3b`b5d`W zWzju)-qrL!gF|Y%J=&C--r$K>?&igYd0A)j zUnc@4@9){Xk7fH(Z}Rb6;&v<{nlK8waAl@B5P{wDVy`x));0F~?oLga8*rxRm92m{ zUUp37b;3zC;Y)}H>#mjF%#t>J(}Xt+HI#zRmDatd;u47OPmp_~GhXL-v9;O41sOR* z6`Bzv{)vg)4<|>HWKDBpM=Ufe3DNaM%|g}^F^>#GtoqNoK+trVmO@CKkm>c1stjP0 zin~Uur&h2H6Zk(|YQ<9FcTVs)Zl244*SQKN#V2Wfqq%q$+NKl7G$wpwBz zN+GZG(-MVWUkC(bI$Jq{ zHU5}u^##haN4*oxT--Q+Ly8S+M|^g4wYA4CRGB>G9JdZ$FJ{)Tb@eK*w#oym-j}D{sN_eNG~J2+a};T48Y!vt z_nSoKWm^7^2pg+KdNH#y`aSO(O%~0q}z2fGsjf9^|JeUsCh~l{b+M}g{+;mQ6dp}`XEsJH}5#J2Iu|OK+WqAIVVr; zI0x)-EAy~IgXZEk2W75{AmB<+c+&%6WdDyU&T)ODfu~2AH@r$a!mH(qDt}naF&_qd zP-Ok=_o5Su!dq|UmEH#cVO)Mmb_x^FXUpej(ukSC_+iq&VQ(gh$<$WO*{

    IA;Sj1hE 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�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 {7?`Ml)J3fpdb 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ǻ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

    $F;`29c`I6io#^f;b2U$nsHEDR4!v1Ak_I~S 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

    Changelog

    Sourced from ffi's changelog.

    1.16.1 / 2023-09-24

    Fixed:

    • Fix compiling the builtin libffi. #1049

    1.16.0 / 2023-09-23

    Fixed:

    • Fix an issue with signed bitmasks when using flags on the most significant bit. #949
    • Fix FFI::Pointer#initialize using NUM2LL instead of NUM2ULL.
    • Fix FFI::Type#inspect to properly display the constant name. #1002
    • Use libffi closure allocations on hppa-Linux. #1017 Previously they would segfault.
    • Fix class name of Symbol#inspect.
    • Fix MSVC support of libtest. #1028
    • Fix attach_function of functions ending in ? or ! #971

    Added:

    • Convert all C-based classes to TypedData and use write barriers. #994, #995, #996, #997, #998, #999, #1000, #1001, #1003, #1004, #1005, #1006, #1007, #1008, #1009, #1010, #1011, #1012 This results in less pressure on the garbage collector, since the objects can be promoted to the old generation, which means they only get marked on major GC.
    • Implement ObjectSpace.memsize_of() of all C-based classes.
    • Make FFI Ractor compatible. #1023 Modules extended per extend FFI::Library need to be frozen in order to be used by non-main Ractors. This can be done by calling freeze below of all C interface definitions.
      • In a Ractor it's possible to:
        • load DLLs and call its functions, access its global variables
        • use builtin typedefs
        • use and modify ractor local typedefs
        • define callbacks
        • receive async callbacks from non-ruby threads
        • use frozen FFI::Library based modules with all attributes (enums, structs, typedefs, functions, callbacks)
        • invoke frozen functions and callbacks defined in the main Ractor
        • use FFI::Struct definitions from the main Ractor
      • In a Ractor it's impossible to:
        • create new FFI::Library based modules
        • create new FFI::Struct definitions
        • use custom global typedefs
        • use non-frozen FFI::Library based modules
    • Allow type retrieval of attached functions+variables. #1023
    • Make FFI classes GC.compact friendly. #1021
    • Update libffi and disable custom trampoline when using libffi closure allocation. #1020 This is because libffi changed the way how closures are allocated to static trampolines.
    • Add types.conf for loongarch64-linux. #943
    • Add types.conf for sw_64-linux (Shen Wei 64-bit, based on Alpha). #1018
    • Add support for aarch64-windows. #1035
    • Windows: Update LoadLibrary error message to include error code. #1026
    • Allow private release method for FFI::ManagedStruct and FFI::AutoPointer. #1029

    ... (truncated)

  • Release notes

    Sourced from jest's releases.

    v29.7.0

    Features

    • [create-jest] Add npm init / yarn create initialiser for Jest projects (#14465)
    • [jest-validate] Allow deprecation warnings for unknown options (#14499)

    Fixes

    • [jest-resolver] Replace unmatched capture groups in moduleNameMapper with empty string instead of undefined (#14507)
    • [jest-snapshot] Allow for strings as well as template literals in inline snapshots (#14465)
    • [@jest/test-sequencer] Calculate test runtime if perStats.duration is missing (#14473)

    Performance

    • [@jest/create-cache-key-function] Cache access of NODE_ENV and BABEL_ENV (#14455)

    Chore & Maintenance

    • [jest-cli] Move internal config initialisation logic to the create-jest package (#14465)

    New Contributors

    Full Changelog: https://github.com/jestjs/jest/compare/v29.6.4...v29.7.0