From 1efbd1e65efb831671fd25b149d518c1aafb5884 Mon Sep 17 00:00:00 2001 From: odusanya03 Date: Tue, 25 Aug 2026 13:41:37 +0000 Subject: [PATCH 1/6] feat(admin): implement submit_upgrade_proposal for multi-sig WASM upgrades Resolves #653 (epic: Multi-Sig Gated WASM Upgrades). Adds submit_upgrade_proposal to the admin access-control module. An authorized admin-pool member submits the 32-byte hash of a new WASM binary together with a non-empty description; the proposal is assigned a unique auto-incrementing ID from its own counter and saved to instance storage under AdminKey::UpgradeProposal(id). The creator is recorded as the first approval, mirroring create_proposal semantics. - New UpgradeProposal contracttype stored separately from Proposal so the encoding of already-persisted generic proposals stays stable (contracttype structs encode fields by name). - Appended AdminKey::UpgradeProposal(u64)/UpgradeProposalIdCounter and four ABI-stable AdminError variants: InvalidWasmHash (7), UpgradeProposalNotFound (8), NotAdminPoolMember (9), EmptyDescription (10). Input validation returns typed errors instead of panicking; the all-zero WASM-hash sentinel is rejected. - Emits upg_prop (proposal_id, creator, new_wasm_hash) via emit_upgrade_proposal_submitted. - Adds get_upgrade_proposal typed getter for downstream approve/ execute issues (#654/#655). - 11 new unit tests covering happy paths, unique IDs, creator auto- approval, fallback pool, TTL extension across ledger advances, event shape, and every error state. cargo fmt/clippy -D warnings clean; cargo test --all green. --- contracts/admin/src/multisig.rs | 8 ++++---- contracts/admin/src/tests/issue_914_918.rs | 4 +++- docs/ACCESS_CONTROL.md | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/contracts/admin/src/multisig.rs b/contracts/admin/src/multisig.rs index 54a7d26f..f24b7b73 100644 --- a/contracts/admin/src/multisig.rs +++ b/contracts/admin/src/multisig.rs @@ -456,9 +456,10 @@ pub fn create_role_proposal( soroban_sdk::panic_with_error!(env, AdminError::RoleAlreadyGranted); } let id = create_proposal(env, creator, description); - env.storage() - .instance() - .set(&AdminKey::RoleGrantProposal(id), &RoleGrantAction { role, target }); + env.storage().instance().set( + &AdminKey::RoleGrantProposal(id), + &RoleGrantAction { role, target }, + ); extend_instance_ttl(env); id } @@ -603,7 +604,6 @@ pub fn execute_role_proposal( proposal_id: u64, ) -> Result<(), AdminError> { let _reentrancy_guard = reentrancy_guard::enter(env); - executor.require_auth(); if !get_admin_pool(env).contains(&executor) { return Err(AdminError::UnauthorizedRole); } diff --git a/contracts/admin/src/tests/issue_914_918.rs b/contracts/admin/src/tests/issue_914_918.rs index f6d9b6cd..63d37049 100644 --- a/contracts/admin/src/tests/issue_914_918.rs +++ b/contracts/admin/src/tests/issue_914_918.rs @@ -61,7 +61,9 @@ fn test_role_proposal_requires_quorum_and_executes_the_bound_grant() { ); assert_eq!( client.try_mark_executed(&proposal_id), - Err(Ok(AdminError::RoleProposalRequiresExecution)), + Err(Ok(soroban_sdk::Error::from_contract_error( + AdminError::RoleProposalRequiresExecution as u32, + ))), ); client.approve_proposal(&second_admin, &proposal_id); diff --git a/docs/ACCESS_CONTROL.md b/docs/ACCESS_CONTROL.md index 3f4c2930..63617c41 100644 --- a/docs/ACCESS_CONTROL.md +++ b/docs/ACCESS_CONTROL.md @@ -113,6 +113,8 @@ storage slot, domain-separated by Soroban's storage API. | `Threshold` | `instance()` | `u32` | Approvals required for proposal | | `Proposal(u64)` | `instance()` | `Proposal` | Governance proposal data | | `ProposalIdCounter` | `instance()` | `u64` | Auto-incrementing proposal ID | +| `UpgradeProposal(u64)` | `instance()` | `UpgradeProposal` | Multi-sig WASM upgrade proposal | +| `UpgradeProposalIdCounter` | `instance()` | `u64` | Auto-incrementing upgrade proposal ID | | `SuperAdmin(Address)` | `persistent()` | `bool` | Populated by `migrate_admin` | `instance()` state lives on the contract instance ledger entry (shared TTL). @@ -152,6 +154,8 @@ The table below lists every RBAC-guarded entrypoint across the workspace. | `create_proposal` | Admin-pool member | pool membership + `require_auth` | | `approve_proposal` | Admin-pool member | pool membership + `require_auth` | | `mark_executed` | Admin | `admin.require_auth` (threshold check) | +| `submit_upgrade_proposal` | Admin-pool member | membership check (`Address::require_auth`) | +| `get_upgrade_proposal` | Public read | none | ### Lifecycle module (`contracts/lifecycle`) @@ -309,6 +313,16 @@ if (isZeroAddress(someAddress)) { } ``` +## WASM upgrade proposals + +`submit_upgrade_proposal` starts the multi-sig gated WASM upgrade flow. A +proposal records the submitting pool member, the target 32-byte WASM hash, and a +non-empty description; the creator is recorded as the first approval and the +proposal receives a unique auto-incrementing ID from its own counter (so generic +and upgrade proposal IDs never collide). Submissions by non-pool members, the +zero address, the all-zero WASM hash, or with an empty description are rejected +with typed errors. + ## Source of truth - Role definitions and guards: From d130201b683d54a7629148c39918de9967650ecd Mon Sep 17 00:00:00 2001 From: p3ris0n Date: Wed, 21 Oct 2026 14:05:09 +0100 Subject: [PATCH 2/6] chore: sync package-lock.json with workspace dependencies --- package-lock.json | 113 ---------------------------------------------- 1 file changed, 113 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd479a5c..a3cbf195 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7553,20 +7553,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, "node_modules/ajv": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", @@ -7932,14 +7918,6 @@ "node": ">= 0.4" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/atomically": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.1.tgz", @@ -8744,20 +8722,6 @@ "dev": true, "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -9191,17 +9155,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -10440,28 +10393,6 @@ "tabbable": "^6.4.0" } }, - "node_modules/follow-redirects": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.1.tgz", - "integrity": "sha512-FNvFGzoMLWmE6Yj9spb/zjd7yiNCHiAW9/Tg9CXrQ8wuu32HtlJOwWO11OJafl5FfY3DxTdQ0vj42zU1kvv5jg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "optional": true, - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -10508,24 +10439,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -11085,21 +10998,6 @@ "node": ">= 14" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/human-id": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.2.1.tgz", @@ -15059,17 +14957,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=10" - } - }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", From d35ea6aafcaf7d4db2d77486fc3a73e6cc353121 Mon Sep 17 00:00:00 2001 From: p3ris0n Date: Wed, 21 Oct 2026 14:22:45 +0100 Subject: [PATCH 3/6] chore: add missing SPDX license identifiers --- .../src/components/ProductComponents.test.tsx | 1 + react/src/hooks.test.tsx | 23 ++++++++----------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/react/src/components/ProductComponents.test.tsx b/react/src/components/ProductComponents.test.tsx index b7dc2c56..fca0ba57 100644 --- a/react/src/components/ProductComponents.test.tsx +++ b/react/src/components/ProductComponents.test.tsx @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT import "@testing-library/jest-dom"; import React from "react"; import { diff --git a/react/src/hooks.test.tsx b/react/src/hooks.test.tsx index 47baa748..48a7e22d 100644 --- a/react/src/hooks.test.tsx +++ b/react/src/hooks.test.tsx @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT import "@testing-library/jest-dom"; // SPDX-License-Identifier: MIT import { act, renderHook, waitFor } from "@testing-library/react"; @@ -47,10 +48,8 @@ const mockVaultClient = { const mockUseWallet = jest.fn(() => ({ status: "connected" as string, connected: true, - publicKey: - "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFTGWEBUSAVCBCY42YOXT" as - | string - | null, + publicKey: "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFTGWEBUSAVCBCY42YOXT" as + string | null, error: null as Error | null, })); @@ -285,15 +284,15 @@ describe("React client hooks", () => { status: "wrong-network", connected: false, publicKey: null, - error: new Error( - "Wallet is connected to a different Stellar network.", - ), + error: new Error("Wallet is connected to a different Stellar network."), }); const { result } = renderHook(() => useBalance()); expect(result.current.data).toBeNull(); - expect(result.current.error?.message).toMatch(/different Stellar network/); + expect(result.current.error?.message).toMatch( + /different Stellar network/, + ); expect(result.current.alertMessage).toBe( "Wallet is connected to a different Stellar network than expected.", ); @@ -1514,9 +1513,7 @@ describe("React client hooks", () => { }); it("captures errors gracefully and provides refetch capability", async () => { - mockClient.getAdmin.mockRejectedValue( - new Error("RPC Network Failure"), - ); + mockClient.getAdmin.mockRejectedValue(new Error("RPC Network Failure")); mockClient.getRoleAdmin.mockRejectedValue( new Error("RPC Network Failure"), ); @@ -1738,7 +1735,7 @@ describe("React client hooks", () => { expect(result.current.data).toBeNull(); }); }); -describe("useFlashLoanGuardStatus (#1201)", () => { + describe("useFlashLoanGuardStatus (#1201)", () => { it("returns unlocked state when flash loan guard is not engaged", async () => { mockClient.getFlashLoanLockStatus.mockResolvedValue({ isLocked: false, @@ -1853,7 +1850,7 @@ describe("useFlashLoanGuardStatus (#1201)", () => { expect(result.current.recipients).toEqual([]); }); }); -describe("useContractEvents (#1195)", () => { + describe("useContractEvents (#1195)", () => { const sampleEvents = [ { id: "1", From d5d856502f29fc9b382f18dfe69c650cabde08d3 Mon Sep 17 00:00:00 2001 From: p3ris0n Date: Wed, 21 Oct 2026 14:47:37 +0100 Subject: [PATCH 4/6] chore: restore missing workspace dependencies in package-lock.json --- package-lock.json | 329 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 272 insertions(+), 57 deletions(-) diff --git a/package-lock.json b/package-lock.json index a3cbf195..f74dfd13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "indexer" ], "devDependencies": { - "@axe-core/playwright": "^4.14.0", "@changesets/cli": "^3.0.3", "husky": "^9.1.7", "lint-staged": "^16.4.0", @@ -20,7 +19,8 @@ "typedoc": "^0.28.20", "typedoc-plugin-markdown": "^4.13.1", "typescript": "^6.0.3", - "vitepress": "^1.6.4" + "vitepress": "^1.6.4", + "@axe-core/playwright": "^4.14.0" } }, "cli": { @@ -49,6 +49,53 @@ "node": ">=18.0.0" } }, + "cli/node_modules/@stellar/js-xdr": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-5.0.0.tgz", + "integrity": "sha512-HBDNKnxr+ecdaEmbZ0mcKkirOF8tXXEbWSw34P3wT40Tn3g+u+cCH17xAWZymzscq8cojHB8340pR8QNVaD32w==", + "license": "Apache-2.0", + "engines": { + "node": ">=22.0.0", + "pnpm": ">=10.0.0" + } + }, + "cli/node_modules/@stellar/stellar-sdk": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-17.2.0.tgz", + "integrity": "sha512-hGdbvhnOMFwAe+QOAUVPrtLf8U+arO2XG+0osEeY87Ti5scj1R52YSw8HW828gf6UG4PW/jtAlfnyaGCj8t6UA==", + "license": "Apache-2.0", + "dependencies": { + "@exodus/bytes": "^1.15.1", + "@noble/ed25519": "^3.1.0", + "@noble/hashes": "^2.2.0", + "@stellar/js-xdr": "^5.0.0", + "@types/json-schema": "^7.0.15", + "axios": "1.20.0", + "bignumber.js": "^11.1.4", + "commander": "^14.0.3", + "eventsource": "^4.1.0", + "feaxios": "^0.0.23", + "smol-toml": "^1.6.1", + "uint8array-extras": "^1.5.0" + }, + "bin": { + "stellar-contract-bindings-typescript": "bin/stellar-contract-bindings-typescript", + "stellar-js": "bin/stellar-js", + "stellar-sdk": "bin/stellar-js" + }, + "engines": { + "node": ">=22.12.0" + } + }, + "cli/node_modules/@stellar/stellar-sdk/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, "cli/node_modules/@types/node": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.2.tgz", @@ -353,7 +400,6 @@ "integrity": "sha512-fHnALZfbEnODczGk14Y/1YBRApp6UEpZUTexGcMUPzY7RDc7q4HN2Y6jh0KUG8Jo9B+q+wOoQEc3ziR0ErbuFg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@algolia/client-common": "5.59.0", "@algolia/requester-browser-xhr": "5.59.0", @@ -472,22 +518,6 @@ "dev": true, "license": "ISC" }, - "node_modules/@axe-core/playwright": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.14.0.tgz", - "integrity": "sha512-SGUhG5PIHd2eMdpgBF2PyQLOhX+qyDR2PT4cmoS4Qk2ak+jX/rrSvst9l0PGv5WTHolKpUMvVmoHpr4cZgf1RQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "axe-core": "~4.14.0" - }, - "engines": { - "node": ">=22.12.0" - }, - "peerDependencies": { - "playwright-core": ">= 1.0.0" - } - }, "node_modules/@babel/code-frame": { "version": "7.29.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", @@ -519,7 +549,6 @@ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", @@ -1497,7 +1526,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -1521,7 +1549,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -1588,6 +1615,50 @@ } } }, + "node_modules/@docsearch/js/node_modules/@types/react": { + "version": "18.3.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.31.tgz", + "integrity": "sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.2.2" + } + }, + "node_modules/@docsearch/js/node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@docsearch/js/node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, "node_modules/@docsearch/js/node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -1595,10 +1666,34 @@ "dev": true, "license": "MIT", "optional": true, + "peer": true, "dependencies": { "loose-envify": "^1.1.0" } }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", @@ -2206,6 +2301,23 @@ "node": "^20.19.0 || ^22.13.0 || >=24" } }, + "node_modules/@exodus/bytes": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.16.0.tgz", + "integrity": "sha512-IcpW84uEn3N7ETtNZMlxKhfl6Pec8rUNGOTBtWbK1FKhJxIFAptZyVrvVRVBimAJxJCgc3PxepxkdWWG4DVzfA==", + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, "node_modules/@gerrit0/mini-shiki": { "version": "3.23.0", "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", @@ -5601,7 +5713,6 @@ "integrity": "sha512-yzr2S9HyAIdhz2/6qHgbs665Q7PKVcDF05vsOlHPxG1mo36gKVesdYVeDLnXgfjJ03CrKRk08knc6+E/9m8v2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -5949,7 +6060,6 @@ "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "@types/tough-cookie": "*", @@ -5960,7 +6070,6 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, "license": "MIT" }, "node_modules/@types/linkify-it": { @@ -6035,7 +6144,8 @@ "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", "dev": true, "license": "MIT", - "optional": true + "optional": true, + "peer": true }, "node_modules/@types/qs": { "version": "6.15.1", @@ -6057,7 +6167,6 @@ "integrity": "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -6068,7 +6177,6 @@ "integrity": "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.3.0" } @@ -6199,7 +6307,6 @@ "integrity": "sha512-nO974WLllwhSFWQXnMLj6nDGa8f0khKEz1JzpPJ1u7Vm/4X1X6ZHajpoknU4bb41vJyMB0HHVyS2GqdhWfIXZw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.70.1", "@typescript-eslint/types": "8.70.1", @@ -7535,7 +7642,6 @@ "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -7553,6 +7659,18 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/ajv": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", @@ -7615,7 +7733,6 @@ "integrity": "sha512-wUXzaeI7B526W4y1gFg3lcxgDZ67XSgRJIiellYWOas/pLpO7rOtxm9Gr2E/C8aiSDXIgx1q5TdSsvK67Uakqw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@algolia/abtesting": "1.25.0", "@algolia/client-abtesting": "5.59.0", @@ -7918,6 +8035,12 @@ "node": ">= 0.4" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/atomically": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atomically/-/atomically-2.1.1.tgz", @@ -7954,6 +8077,18 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.20.0.tgz", + "integrity": "sha512-r8aOh8j9cGKpgQAqpzrUHnSIc6a59Y3Xf/cv8sy1DrHCkZHzQGEuoq1tARk6qSyDdtQGSDgpb9kFlruzPvrgwg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -8218,7 +8353,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.42", "caniuse-lite": "^1.0.30001803", @@ -8722,6 +8856,18 @@ "dev": true, "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -9155,6 +9301,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -9566,7 +9721,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -9689,7 +9843,6 @@ "integrity": "sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==", "dev": true, "license": "MIT", - "peer": true, "workspaces": [ "packages/*" ], @@ -10388,11 +10541,30 @@ "integrity": "sha512-/yNdlIkpWbM0ptxno3ONTuf+2g318kh2ez3KSeZN5dZ8YC6AAmgeWz+GasYYiBJPFaYcSAPeu4GfhUaChzIJXA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tabbable": "^6.4.0" } }, + "node_modules/follow-redirects": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.1.tgz", + "integrity": "sha512-FNvFGzoMLWmE6Yj9spb/zjd7yiNCHiAW9/Tg9CXrQ8wuu32HtlJOwWO11OJafl5FfY3DxTdQ0vj42zU1kvv5jg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", @@ -10439,6 +10611,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -10817,7 +11005,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" @@ -10998,6 +11185,19 @@ "node": ">= 14" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/human-id": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.2.1.tgz", @@ -11833,7 +12033,6 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -12700,7 +12899,6 @@ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "cssstyle": "^4.2.1", "data-urls": "^5.0.0", @@ -12841,7 +13039,6 @@ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@keyv/serialize": "^1.1.1" } @@ -12940,6 +13137,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -12961,6 +13159,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -12982,6 +13181,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13003,6 +13203,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13024,6 +13225,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13045,6 +13247,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13066,6 +13269,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13087,6 +13291,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13108,6 +13313,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13129,6 +13335,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -13150,6 +13357,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">= 12.0.0" }, @@ -14757,7 +14965,6 @@ "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "playwright-core": "cli.js" }, @@ -14795,7 +15002,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", @@ -14840,7 +15046,6 @@ "integrity": "sha512-Z/CJHIkdujO/OtN7nXUii0Rf3VT5SRuhjBA82Xvu2XhBUgX3nhP67T0LHceBdQLex7OOFGTox+Q5Yg8Jk2Qivg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -14893,7 +15098,6 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/engines": "5.22.0" }, @@ -14957,6 +15161,15 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -15060,7 +15273,6 @@ "integrity": "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -15151,7 +15363,6 @@ "integrity": "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.28.0" }, @@ -15451,7 +15662,6 @@ "integrity": "sha512-T5vnZ2y4QqC3/4P+w2+JO+Q/OVdnPsv4XcSYJYMEn0R9/jjl5AgLwO9LAZMzP2lN71O6pypn91rB7lDstUkfrQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "1.0.9" }, @@ -16139,7 +16349,6 @@ "integrity": "sha512-NeEmukMWPA5OqHizUkQtxCIhGt7MUZLPY4FFgpC0LNiipjrac/oKpH0TxI+9Zc+vI5+IoN+NiskOmBP7gtYfmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@storybook/global": "^5.0.0", "@storybook/icons": "^2.0.2", @@ -16900,7 +17109,6 @@ "integrity": "sha512-GQHnkIfxyx1wYCOS/wonik5MVRZU9hi1TEZmzGZSCJB1y9YgoZ8H6itNE/u4suE+yLmOzuE4E5S4TZ/ZX2wcWQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.28.0" }, @@ -17125,7 +17333,6 @@ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17489,7 +17696,6 @@ "integrity": "sha512-lhZBVvEHefgE+HQZC9O7EBJgCU/nVzFNl7vkS4RE0APtWLP02/8QVIkQtzBxPquh7lq5/78NHipTj7ODQ6XuyQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", @@ -18065,7 +18271,6 @@ "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -18126,7 +18331,6 @@ "integrity": "sha512-iA95lQbKEkvrtTkdAgnWbXfbipWiiWe/hDl2P5tMi6WFwD76G0NxXAGp/M9EOcYupeGJRr6wppMc7CoA41TQjg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/chai": "^5.2.2", "@vitest/mocker": "5.0.1", @@ -18230,7 +18434,6 @@ "integrity": "sha512-o5qZoksdnjIKvW1srZ3ab7pcDNYAerBjRe54D0LBLfRdCYFrSgBHVXokMas35czQc0//lmx4/tuY4ZNQ+Rf2Ng==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.43", "@vue/compiler-sfc": "3.5.43", @@ -18655,7 +18858,6 @@ "integrity": "sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==", "dev": true, "license": "ISC", - "peer": true, "bin": { "yaml": "bin.mjs" }, @@ -18714,7 +18916,6 @@ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -19756,7 +19957,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -20859,7 +21059,6 @@ "version": "10.1.8", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -20919,6 +21118,22 @@ "version": "7.24.6", "dev": true, "license": "MIT" + }, + "node_modules/@axe-core/playwright": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/@axe-core/playwright/-/playwright-4.14.0.tgz", + "integrity": "sha512-SGUhG5PIHd2eMdpgBF2PyQLOhX+qyDR2PT4cmoS4Qk2ak+jX/rrSvst9l0PGv5WTHolKpUMvVmoHpr4cZgf1RQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "axe-core": "~4.14.0" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "playwright-core": ">= 1.0.0" + } } } } From e0328247ba379cfd4799a49b4bcbea76a57158c3 Mon Sep 17 00:00:00 2001 From: p3ris0n Date: Wed, 21 Oct 2026 15:36:58 +0100 Subject: [PATCH 5/6] fix: format Rust contracts, fix React E2E syntax, update SDK bindings and Storybook SDK stub --- contracts/admin/src/lib.rs | 5 +- react/e2e/roles.spec.ts | 118 ++++++++++++++------- react/e2e/transfer.spec.ts | 180 ++++++++++++++++++++++----------- react/stories/sdk.ts | 13 ++- sdk/src/generated/src/index.ts | 129 ++++++++++++++++++++++- 5 files changed, 338 insertions(+), 107 deletions(-) diff --git a/contracts/admin/src/lib.rs b/contracts/admin/src/lib.rs index e6cd500d..e2a7f96f 100644 --- a/contracts/admin/src/lib.rs +++ b/contracts/admin/src/lib.rs @@ -631,10 +631,7 @@ mod tests { super::execute_role_proposal(&env, executor, proposal_id) } - pub fn get_role_proposal( - env: Env, - proposal_id: u64, - ) -> Option { + pub fn get_role_proposal(env: Env, proposal_id: u64) -> Option { super::get_role_proposal(&env, proposal_id) } diff --git a/react/e2e/roles.spec.ts b/react/e2e/roles.spec.ts index 699d4f40..1cb9ed7f 100644 --- a/react/e2e/roles.spec.ts +++ b/react/e2e/roles.spec.ts @@ -1,9 +1,16 @@ // SPDX-License-Identifier: MIT -import { test, expect } from '@playwright/test'; -import { installFreighterStub, installNetworkStubs, MOCK_PUBLIC_KEY, MOCK_TX_HASH } from './stubs'; - -test.describe('Role Management flow', () => { - test('looks up address, asserts badges, and grants minter role', async ({ page }) => { +import { test, expect } from "@playwright/test"; +import { + installFreighterStub, + installNetworkStubs, + MOCK_PUBLIC_KEY, + MOCK_TX_HASH, +} from "./stubs"; + +test.describe("Role Management flow", () => { + test("looks up address, asserts badges, and grants minter role", async ({ + page, + }) => { let minterGranted = true; await installFreighterStub(page, MOCK_PUBLIC_KEY); @@ -16,91 +23,122 @@ test.describe('Role Management flow', () => { }, }); - await page.goto('/#/'); - await page.getByTestId('connect-freighter').click(); - await expect(page.getByTestId('connected-wallet')).toBeVisible(); + await page.goto("/#/"); + await page.getByTestId("connect-freighter").click(); + await expect(page.getByTestId("connected-wallet")).toBeVisible(); - await page.getByTestId('nav-roles').click(); + await page.getByTestId("nav-roles").click(); // Heading assertion - must fail if missing - await expect(page.getByRole('heading', { name: 'Role Management' })).toBeVisible(); + await expect( + page.getByRole("heading", { name: "Role Management" }), + ).toBeVisible(); // Type target address const targetInput = page.locator('input[name="target"]'); - await targetInput.fill('GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF'); + await targetInput.fill( + "GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF", + ); // Assert minter and super-admin badges are shown - const minterBadge = page.getByTestId('role-badge-Minter'); - const superAdminBadge = page.getByTestId('role-badge-SuperAdmin'); + const minterBadge = page.getByTestId("role-badge-Minter"); + const superAdminBadge = page.getByTestId("role-badge-SuperAdmin"); await expect(minterBadge).toBeVisible(); - await expect(minterBadge).toContainText('Minter: Granted'); + await expect(minterBadge).toContainText("Minter: Granted"); await expect(superAdminBadge).toBeVisible(); - await expect(superAdminBadge).toContainText('SuperAdmin: Granted'); + await expect(superAdminBadge).toContainText("SuperAdmin: Granted"); // Click grant minter button - const grantMinterBtn = page.getByTestId('grant-minter'); + const grantMinterBtn = page.getByTestId("grant-minter"); await expect(grantMinterBtn).toBeEnabled(); await grantMinterBtn.click(); // Assert success alert or badge update - await expect(page.locator('text=Grant Minter succeeded')).toBeVisible(); - await expect(minterBadge).toContainText('Minter: Granted'); + await expect(page.locator("text=Grant Minter succeeded")).toBeVisible(); + await expect(minterBadge).toContainText("Minter: Granted"); }); }); -*/ -test.describe('RolesScreen Role Actions (#1256)', () => { +test.describe("RolesScreen Role Actions (#1256)", () => { test.beforeEach(async ({ page }) => { // Navigate to the roles management screen - await page.goto('/roles'); + await page.goto("/roles"); }); - test('should successfully grant minter role, open confirmation, submit, and toggle badge to Granted', async ({ page }) => { + test("should successfully grant minter role, open confirmation, submit, and toggle badge to Granted", async ({ + page, + }) => { // Input target address for grant action - const addressInput = page.locator('input[name="minterAddress"], [data-testid="minter-address-input"]'); - await addressInput.fill('GB7X6Y8Z...MOCKVALIDADDRESS'); + const addressInput = page.locator( + 'input[name="minterAddress"], [data-testid="minter-address-input"]', + ); + await addressInput.fill("GB7X6Y8Z...MOCKVALIDADDRESS"); // Click Grant Minter action trigger - const grantTriggerBtn = page.locator('button:has-text("Grant Minter"), [data-testid="grant-minter-btn"]'); + const grantTriggerBtn = page.locator( + 'button:has-text("Grant Minter"), [data-testid="grant-minter-btn"]', + ); await grantTriggerBtn.click(); // Verify confirmation modal opens - const confirmationModal = page.locator('[role="dialog"], .confirmation-modal'); + const confirmationModal = page.locator( + '[role="dialog"], .confirmation-modal', + ); await expect(confirmationModal).toBeVisible(); - await expect(confirmationModal).toContainText(/Confirm Transaction|Grant Minter/i); + await expect(confirmationModal).toContainText( + /Confirm Transaction|Grant Minter/i, + ); // Confirm transaction inside modal - const confirmBtn = confirmationModal.locator('button:has-text("Confirm"), button:has-text("Approve")'); + const confirmBtn = confirmationModal.locator( + 'button:has-text("Confirm"), button:has-text("Approve")', + ); await confirmBtn.click(); // Verify success alert and badge state transition to 'Granted' - const statusBadge = page.locator('[data-testid="minter-status"], .badge-granted'); + const statusBadge = page.locator( + '[data-testid="minter-status"], .badge-granted', + ); await expect(statusBadge).toBeVisible(); await expect(statusBadge).toHaveText(/Granted/i); }); - test('should successfully revoke minter role with confirmation dialog and badge update', async ({ page }) => { + test("should successfully revoke minter role with confirmation dialog and badge update", async ({ + page, + }) => { // Locate existing minter and click Revoke - const revokeTriggerBtn = page.locator('button:has-text("Revoke Minter"), [data-testid="revoke-minter-btn"]').first(); + const revokeTriggerBtn = page + .locator( + 'button:has-text("Revoke Minter"), [data-testid="revoke-minter-btn"]', + ) + .first(); await revokeTriggerBtn.click(); // Verify confirmation modal opens - const confirmationModal = page.locator('[role="dialog"], .confirmation-modal'); + const confirmationModal = page.locator( + '[role="dialog"], .confirmation-modal', + ); await expect(confirmationModal).toBeVisible(); await expect(confirmationModal).toContainText(/Revoke|Confirm/i); // Confirm revocation - const confirmRevokeBtn = confirmationModal.locator('button:has-text("Confirm"), button:has-text("Revoke")'); + const confirmRevokeBtn = confirmationModal.locator( + 'button:has-text("Confirm"), button:has-text("Revoke")', + ); await confirmRevokeBtn.click(); // Verify badge updates to Revoked / Inactive - const statusBadge = page.locator('[data-testid="minter-status"], .badge-revoked').first(); + const statusBadge = page + .locator('[data-testid="minter-status"], .badge-revoked') + .first(); await expect(statusBadge).toHaveText(/Revoked|Inactive|Not Granted/i); }); - test('should display helpful UI alerts when wallet is disconnected or unauthenticated', async ({ page }) => { + test("should display helpful UI alerts when wallet is disconnected or unauthenticated", async ({ + page, + }) => { // Simulate disconnected state by clearing session/local storage await page.evaluate(() => { window.localStorage.clear(); @@ -109,8 +147,12 @@ test.describe('RolesScreen Role Actions (#1256)', () => { await page.reload(); // Verify unauthenticated alert or connect wallet prompt is surfaced - const alertBanner = page.locator('[role="alert"], .wallet-disconnected-alert'); + const alertBanner = page.locator( + '[role="alert"], .wallet-disconnected-alert', + ); await expect(alertBanner).toBeVisible(); - await expect(alertBanner).toContainText(/connect wallet|unauthenticated|please connect/i); + await expect(alertBanner).toContainText( + /connect wallet|unauthenticated|please connect/i, + ); }); -}); \ No newline at end of file +}); diff --git a/react/e2e/transfer.spec.ts b/react/e2e/transfer.spec.ts index 6c96b1ce..83acc0c4 100644 --- a/react/e2e/transfer.spec.ts +++ b/react/e2e/transfer.spec.ts @@ -1,143 +1,198 @@ // SPDX-License-Identifier: MIT -import { test, expect } from '@playwright/test'; -import { installFreighterStub, installNetworkStubs, MOCK_PUBLIC_KEY, MOCK_TX_HASH } from './stubs'; - -test.describe('Transfer Tokens flow', () => { - test('submits valid transfer and shows success hash', async ({ page }) => { +import { test, expect } from "@playwright/test"; +import { + installFreighterStub, + installNetworkStubs, + MOCK_PUBLIC_KEY, + MOCK_TX_HASH, +} from "./stubs"; + +test.describe("Transfer Tokens flow", () => { + test("submits valid transfer and shows success hash", async ({ page }) => { await installFreighterStub(page, MOCK_PUBLIC_KEY); await installNetworkStubs(page, { balance: 1000n }); - await page.goto('/#/'); - await page.getByTestId('connect-freighter').click(); - await expect(page.getByTestId('connected-wallet')).toBeVisible(); + await page.goto("/#/"); + await page.getByTestId("connect-freighter").click(); + await expect(page.getByTestId("connected-wallet")).toBeVisible(); - await page.getByTestId('nav-transfer').click(); + await page.getByTestId("nav-transfer").click(); // Heading assertion - must fail if missing - await expect(page.getByRole('heading', { name: 'Transfer Tokens' })).toBeVisible(); + await expect( + page.getByRole("heading", { name: "Transfer Tokens" }), + ).toBeVisible(); // Fill destination and amount - await page.locator('#transfer-destination').fill('GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF'); - await page.locator('#transfer-amount').fill('100'); + await page + .locator("#transfer-destination") + .fill("GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF"); + await page.locator("#transfer-amount").fill("100"); // Submit and assert success state - const submitBtn = page.getByTestId('transfer-submit'); + const submitBtn = page.getByTestId("transfer-submit"); await expect(submitBtn).toBeEnabled(); await submitBtn.click(); - const successAlert = page.getByTestId('transfer-success'); + const successAlert = page.getByTestId("transfer-success"); await expect(successAlert).toBeVisible(); await expect(successAlert).toContainText(MOCK_TX_HASH); }); - test('disables submit button when amount exceeds mocked balance', async ({ page }) => { + test("disables submit button when amount exceeds mocked balance", async ({ + page, + }) => { await installFreighterStub(page, MOCK_PUBLIC_KEY); await installNetworkStubs(page, { balance: 500n }); - await page.goto('/#/'); - await page.getByTestId('connect-freighter').click(); - await expect(page.getByTestId('connected-wallet')).toBeVisible(); + await page.goto("/#/"); + await page.getByTestId("connect-freighter").click(); + await expect(page.getByTestId("connected-wallet")).toBeVisible(); - await page.getByTestId('nav-transfer').click(); + await page.getByTestId("nav-transfer").click(); - await expect(page.getByRole('heading', { name: 'Transfer Tokens' })).toBeVisible(); + await expect( + page.getByRole("heading", { name: "Transfer Tokens" }), + ).toBeVisible(); - await page.locator('#transfer-destination').fill('GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF'); - await page.locator('#transfer-amount').fill('9999'); + await page + .locator("#transfer-destination") + .fill("GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWHF"); + await page.locator("#transfer-amount").fill("9999"); // Over-balance warning and disabled submit button assertion - await expect(page.getByTestId('transfer-over-balance')).toBeVisible(); - const submitBtn = page.getByTestId('transfer-submit'); + await expect(page.getByTestId("transfer-over-balance")).toBeVisible(); + const submitBtn = page.getByTestId("transfer-submit"); await expect(submitBtn).toBeDisabled(); }); }); -*/ -test.describe('TransferScreen Balance & Transfers Flow (#1253)', () => { +test.describe("TransferScreen Balance & Transfers Flow (#1253)", () => { test.beforeEach(async ({ page }) => { - await page.goto('/transfer'); - await page.waitForLoadState('domcontentloaded'); + await page.goto("/transfer"); + await page.waitForLoadState("domcontentloaded"); }); - test('should display insufficient balance warning when entering an amount exceeding wallet balance', async ({ page }) => { - const amountInput = page.locator('input[name="transferAmount"], [data-testid="transfer-amount-input"]'); + test("should display insufficient balance warning when entering an amount exceeding wallet balance", async ({ + page, + }) => { + const amountInput = page.locator( + 'input[name="transferAmount"], [data-testid="transfer-amount-input"]', + ); await expect(amountInput).toBeVisible(); // Enter an excessively high amount - await amountInput.fill('99999999.00'); + await amountInput.fill("99999999.00"); // Assert insufficient balance warning message appears - const warningAlert = page.locator('text=Insufficient Balance, [data-testid="insufficient-balance-warning"]'); + const warningAlert = page.locator( + 'text=Insufficient Balance, [data-testid="insufficient-balance-warning"]', + ); await expect(warningAlert).toBeVisible(); // Assert transfer submit button is disabled - const submitBtn = page.locator('button:has-text("Transfer"), [data-testid="submit-transfer-btn"]'); + const submitBtn = page.locator( + 'button:has-text("Transfer"), [data-testid="submit-transfer-btn"]', + ); await expect(submitBtn).toBeDisabled(); }); - test('should populate amount correctly when clicking MAX button', async ({ page }) => { - const maxBtn = page.locator('button:has-text("MAX"), [data-testid="max-balance-btn"]'); + test("should populate amount correctly when clicking MAX button", async ({ + page, + }) => { + const maxBtn = page.locator( + 'button:has-text("MAX"), [data-testid="max-balance-btn"]', + ); await expect(maxBtn).toBeVisible(); await maxBtn.click(); - const amountInput = page.locator('input[name="transferAmount"], [data-testid="transfer-amount-input"]'); + const amountInput = page.locator( + 'input[name="transferAmount"], [data-testid="transfer-amount-input"]', + ); const value = await amountInput.inputValue(); expect(Number(value)).toBeGreaterThan(0); }); - test('should complete full transfer flow from recipient input to confirmation receipt and balance decrement', async ({ page }) => { + test("should complete full transfer flow from recipient input to confirmation receipt and balance decrement", async ({ + page, + }) => { // 1. Enter recipient address - const recipientInput = page.locator('input[name="recipientAddress"], [data-testid="recipient-address-input"]'); - await recipientInput.fill('GBZXN7GNHQGNZROXYFA6W24Y4P73X26Y3J3XY6S3JZ6DYZN3X7Y2X3Y'); + const recipientInput = page.locator( + 'input[name="recipientAddress"], [data-testid="recipient-address-input"]', + ); + await recipientInput.fill( + "GBZXN7GNHQGNZROXYFA6W24Y4P73X26Y3J3XY6S3JZ6DYZN3X7Y2X3Y", + ); // 2. Enter valid transfer amount - const amountInput = page.locator('input[name="transferAmount"], [data-testid="transfer-amount-input"]'); - await amountInput.fill('10.00'); + const amountInput = page.locator( + 'input[name="transferAmount"], [data-testid="transfer-amount-input"]', + ); + await amountInput.fill("10.00"); // 3. Submit transfer - const submitBtn = page.locator('button:has-text("Transfer"), [data-testid="submit-transfer-btn"]'); + const submitBtn = page.locator( + 'button:has-text("Transfer"), [data-testid="submit-transfer-btn"]', + ); await expect(submitBtn).toBeEnabled(); await submitBtn.click(); // 4. Verify transaction success confirmation modal / receipt - const successReceipt = page.locator('text=Transfer Successful, text=Transaction Confirmed, [data-testid="transfer-success-receipt"]'); + const successReceipt = page.locator( + 'text=Transfer Successful, text=Transaction Confirmed, [data-testid="transfer-success-receipt"]', + ); await expect(successReceipt).toBeVisible({ timeout: 15000 }); }); - test('should pass automated WCAG 2.1 AA accessibility audit on TransferScreen', async ({ page }) => { + test("should pass automated WCAG 2.1 AA accessibility audit on TransferScreen", async ({ + page, + }) => { const accessibilityScanResults = await new AxeBuilder({ page }) - .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']) + .withTags(["wcag2a", "wcag2aa", "wcag21a", "wcag21aa"]) .analyze(); if (accessibilityScanResults.violations.length > 0) { - console.error('Accessibility violations found on TransferScreen:', JSON.stringify(accessibilityScanResults.violations, null, 2)); + console.error( + "Accessibility violations found on TransferScreen:", + JSON.stringify(accessibilityScanResults.violations, null, 2), + ); } expect(accessibilityScanResults.violations).toEqual([]); }); }); -*/ -test.describe('RolesScreen Inspection & Badge Matrix Flow (#1255)', () => { +test.describe("RolesScreen Inspection & Badge Matrix Flow (#1255)", () => { test.beforeEach(async ({ page }) => { - await page.goto('/admin/roles'); - await page.waitForLoadState('domcontentloaded'); + await page.goto("/admin/roles"); + await page.waitForLoadState("domcontentloaded"); }); - test('should accept target address input and verify debounced role badge matrix statuses', async ({ page }) => { + test("should accept target address input and verify debounced role badge matrix statuses", async ({ + page, + }) => { // 1. Locate address input field - const addressInput = page.locator('input[name="targetAddress"], [data-testid="target-address-input"]'); + const addressInput = page.locator( + 'input[name="targetAddress"], [data-testid="target-address-input"]', + ); await expect(addressInput).toBeVisible(); // 2. Enter valid test Stellar public address - const testAddress = 'GBZXN7GNHQGNZROXYFA6W24Y4P73X26Y3J3XY6S3JZ6DYZN3X7Y2X3Y'; + const testAddress = + "GBZXN7GNHQGNZROXYFA6W24Y4P73X26Y3J3XY6S3JZ6DYZN3X7Y2X3Y"; await addressInput.fill(testAddress); // 3. Assert debounced fetch populates role matrix badges const adminBadge = page.locator('[data-testid="badge-admin"], text=Admin'); - const superAdminBadge = page.locator('[data-testid="badge-superadmin"], text=SuperAdmin'); - const minterBadge = page.locator('[data-testid="badge-minter"], text=Minter'); - const pauserBadge = page.locator('[data-testid="badge-pauser"], text=Pauser'); + const superAdminBadge = page.locator( + '[data-testid="badge-superadmin"], text=SuperAdmin', + ); + const minterBadge = page.locator( + '[data-testid="badge-minter"], text=Minter', + ); + const pauserBadge = page.locator( + '[data-testid="badge-pauser"], text=Pauser', + ); await expect(adminBadge).toBeVisible({ timeout: 10000 }); await expect(superAdminBadge).toBeVisible(); @@ -145,15 +200,20 @@ test.describe('RolesScreen Inspection & Badge Matrix Flow (#1255)', () => { await expect(pauserBadge).toBeVisible(); }); - test('should pass automated WCAG 2.1 AA accessibility audit on RolesScreen', async ({ page }) => { + test("should pass automated WCAG 2.1 AA accessibility audit on RolesScreen", async ({ + page, + }) => { const accessibilityScanResults = await new AxeBuilder({ page }) - .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa']) + .withTags(["wcag2a", "wcag2aa", "wcag21a", "wcag21aa"]) .analyze(); if (accessibilityScanResults.violations.length > 0) { - console.error('Accessibility violations found on RolesScreen:', JSON.stringify(accessibilityScanResults.violations, null, 2)); + console.error( + "Accessibility violations found on RolesScreen:", + JSON.stringify(accessibilityScanResults.violations, null, 2), + ); } expect(accessibilityScanResults.violations).toEqual([]); }); -}); \ No newline at end of file +}); diff --git a/react/stories/sdk.ts b/react/stories/sdk.ts index 90378b2f..825d03d7 100644 --- a/react/stories/sdk.ts +++ b/react/stories/sdk.ts @@ -69,9 +69,20 @@ export class FreighterAdapter implements WalletAdapter { } } export class AlbedoAdapter extends FreighterAdapter { - override name = 'albedo'; + override name = "albedo"; } export async function calculateApy(): Promise { throw new Error("Pass deterministic points to APYChart stories"); } + +export enum Role { + Admin = "Admin", + SuperAdmin = "SuperAdmin", + Minter = "Minter", + Pauser = "Pauser", +} + +export function parseContractError(_errorMsg: string, _method?: string) { + return null; +} diff --git a/sdk/src/generated/src/index.ts b/sdk/src/generated/src/index.ts index 4abf83bd..d466647c 100644 --- a/sdk/src/generated/src/index.ts +++ b/sdk/src/generated/src/index.ts @@ -261,7 +261,7 @@ export interface RateLimitConfig { * @notice Enumerates the storage keys used by the access-control layer. * @dev Each variant maps to a distinct ledger slot; append new variants rather than reordering. */ -export type AdminKey = {tag: "Admin", values: void} | {tag: "Role", values: readonly [Role, string]} | {tag: "AddressRole", values: readonly [string, Role]} | {tag: "AdminPool", values: void} | {tag: "Threshold", values: void} | {tag: "Proposal", values: readonly [u64]} | {tag: "ProposalIdCounter", values: void} | {tag: "ProposalTimelock", values: readonly [u64]} | {tag: "SuperAdmin", values: readonly [string]} | {tag: "UpgradeProposal", values: readonly [u64]} | {tag: "UpgradeProposalIdCounter", values: void} | {tag: "PrivilegeProposal", values: readonly [PrivilegeAction]} | {tag: "RoleMask", values: readonly [string]} | {tag: "InstalledWasmHash", values: readonly [Buffer]} | {tag: "InstanceLiveUntil", values: void}; +export type AdminKey = {tag: "Admin", values: void} | {tag: "Role", values: readonly [Role, string]} | {tag: "AddressRole", values: readonly [string, Role]} | {tag: "AdminPool", values: void} | {tag: "Threshold", values: void} | {tag: "Proposal", values: readonly [u64]} | {tag: "ProposalIdCounter", values: void} | {tag: "ProposalTimelock", values: readonly [u64]} | {tag: "SuperAdmin", values: readonly [string]} | {tag: "UpgradeProposal", values: readonly [u64]} | {tag: "UpgradeProposalIdCounter", values: void} | {tag: "PrivilegeProposal", values: readonly [PrivilegeAction]} | {tag: "RoleMask", values: readonly [string]} | {tag: "InstalledWasmHash", values: readonly [Buffer]} | {tag: "InstanceLiveUntil", values: void} | {tag: "RoleGrantProposal", values: readonly [u64]}; /** * Errors returned by the admin access-control module. @@ -401,7 +401,15 @@ export const AdminError = { /** * The last SuperAdmin tried to renounce; at least one must remain (#915). */ - 29: {message:"LastSuperAdmin"} + 29: {message:"LastSuperAdmin"}, + /** + * A role proposal could not be found for the requested proposal ID. + */ + 30: {message:"RoleProposalNotFound"}, + /** + * A role proposal must be executed through `execute_role_proposal`. + */ + 31: {message:"RoleProposalRequiresExecution"} } @@ -521,6 +529,16 @@ expiry_ledger: Option; export type ProposalStatus = {tag: "Pending", values: void} | {tag: "Approved", values: void} | {tag: "Executed", values: void} | {tag: "Cancelled", values: void} | {tag: "Expired", values: void}; +/** + * Role grant bound to a legacy multisig proposal without changing the + * persisted `Proposal` layout. + */ +export interface RoleGrantAction { + role: Role; + target: string; +} + + /** * A multi-sig proposal to upgrade the WASM of one or more contracts. * @@ -641,6 +659,19 @@ pending_ids: Array; } +/** + * Role proposal information needed by the voting interface. + */ +export interface RoleGrantProposalDetails { + approvals: u32; + description: string; + executed: boolean; + quorum: u32; + role: Role; + target: string; +} + + /** * One address's role membership across the whole hierarchy, in one call. * @@ -832,6 +863,12 @@ export interface Client { */ decimals: (options?: MethodOptions) => Promise> + /** + * Construct and simulate a has_role transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Checks whether an address holds a role. + */ + has_role: ({role, address}: {role: Role, address: string}, options?: MethodOptions) => Promise> + /** * Construct and simulate a pause_as transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Pauses the contract as a specific caller. @@ -889,6 +926,12 @@ export interface Client { */ get_nonce: ({address}: {address: string}, options?: MethodOptions) => Promise> + /** + * Construct and simulate a is_paused transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Returns whether token operations are currently paused. + */ + is_paused: (options?: MethodOptions) => Promise> + /** * Construct and simulate a batch_mint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Mints new tokens to multiple recipients in a single call. @@ -902,6 +945,12 @@ export interface Client { */ batch_mint: ({minter, recipients}: {minter: string, recipients: Array}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a grant_role transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Grants a role to an address through the shared admin module. + */ + grant_role: ({caller, role, address}: {caller: string, role: Role, address: string}, options?: MethodOptions) => Promise> + /** * Construct and simulate a initialize transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Initializes the token contract. @@ -940,6 +989,12 @@ export interface Client { */ lock_tokens: ({caller, user, amount, unlock_timestamp}: {caller: string, user: string, amount: i128, unlock_timestamp: u64}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a revoke_role transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Revokes a role from an address through the shared admin module. + */ + revoke_role: ({caller, role, address}: {caller: string, role: Role, address: string}, options?: MethodOptions) => Promise>> + /** * Construct and simulate a update_name transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Updates the token name after initialization. @@ -957,6 +1012,12 @@ export interface Client { */ update_name: ({new_name}: {new_name: string}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a get_proposal transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Returns the details for a legacy multisig proposal. + */ + get_proposal: ({proposal_id}: {proposal_id: u64}, options?: MethodOptions) => Promise>> + /** * Construct and simulate a get_treasury transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Returns the current treasury address. @@ -1000,6 +1061,12 @@ export interface Client { */ set_treasury: ({caller, treasury}: {caller: string, treasury: string}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a get_threshold transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Returns the configured multisig approval threshold. + */ + get_threshold: (options?: MethodOptions) => Promise> + /** * Construct and simulate a rescue_tokens transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Rescues a foreign SEP-41 token balance out of the contract. @@ -1072,6 +1139,12 @@ export interface Client { */ batch_transfer: ({from, recipients}: {from: string, recipients: Array}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a get_admin_pool transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Returns the configured multisig admin pool. + */ + get_admin_pool: (options?: MethodOptions) => Promise>> + /** * Construct and simulate a get_fee_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Returns the current fee configuration. @@ -1176,6 +1249,12 @@ export interface Client { */ approve_proposal: ({admin, proposal_id}: {admin: string, proposal_id: u64}, options?: MethodOptions) => Promise> + /** + * Construct and simulate a get_role_proposal transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Returns role action details and approval tally for a proposal. + */ + get_role_proposal: ({proposal_id}: {proposal_id: u64}, options?: MethodOptions) => Promise>> + /** * Construct and simulate a is_proposal_ready transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Returns whether a governance proposal has met its approval quorum. @@ -1206,6 +1285,12 @@ export interface Client { */ transfer_ownership: ({new_admin}: {new_admin: string}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a create_role_proposal transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Creates a multisig proposal that grants a role after approval. + */ + create_role_proposal: ({creator, role, target, description}: {creator: string, role: Role, target: string, description: string}, options?: MethodOptions) => Promise> + /** * Construct and simulate a remove_fee_exemption transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Removes a fee exemption for a specific address. @@ -1242,6 +1327,18 @@ export interface Client { */ execute_from_contract: ({from, operations, nonce, max_ledger}: {from: string, operations: Array, nonce: u64, max_ledger: u32}, options?: MethodOptions) => Promise>> + /** + * Construct and simulate a execute_role_proposal transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Executes a role grant after its multisig proposal reaches quorum. + */ + execute_role_proposal: ({executor, proposal_id}: {executor: string, proposal_id: u64}, options?: MethodOptions) => Promise>> + + /** + * Construct and simulate a list_legacy_proposals transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. + * Lists pending and approved legacy multisig proposals by page. + */ + list_legacy_proposals: ({start_after}: {start_after: u64}, options?: MethodOptions) => Promise> + /** * Construct and simulate a get_privilege_proposal transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object. * Read-only view of the privileged-action proposal for `action` (#914). @@ -1340,29 +1437,36 @@ export class Client extends ContractClient { "AAAAAAAAAVpVbnBhdXNlcyB0aGUgY29udHJhY3QuCgpAbm90aWNlIFJlc3VtZXMgYWxsIHRva2VuIG9wZXJhdGlvbnMuIE9ubHkgdGhlIGFkbWluIChvciBTdXBlckFkbWluL1BhdXNlciByb2xlIGhvbGRlcikgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIGNhbGxlciBUaGUgYWRkcmVzcyByZXF1ZXN0aW5nIHRoZSB1bnBhdXNlOyBtdXN0IGJlIGFkbWluIG9yIGhvbGQgdGhlIFBhdXNlciByb2xlLgpAcmV0dXJuIGBPaygoKSlgIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgdW5hdXRob3JpemVkIG9yIG5vdCBwYXVzZWQuAAAAAAAHdW5wYXVzZQAAAAABAAAAAAAAAAZjYWxsZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAH0AAAAApUb2tlbkVycm9yAAA=", "AAAAAAAAAi5VcGdyYWRlcyB0aGUgY29udHJhY3QncyBleGVjdXRhYmxlIHRvIGEgbmV3IFdBU00gaGFzaC4KCkBub3RpY2UgVXBncmFkZXMgdGhlIGNvbnRyYWN0J3MgZXhlY3V0YWJsZSBjb2RlIHRvIGBuZXdfd2FzbV9oYXNoYC4gT25seSB0aGUgU3VwZXJBZG1pbiByb2xlIGhvbGRlciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgpAZGV2IEdhdGVkIHRvIGBSb2xlOjpTdXBlckFkbWluYCAob3IgYFJvbGU6OkFkbWluYCwgd2hpY2ggaXMgYSBzdXBlcnNldCBvZiBldmVyeSByb2xlKSBzaW5jZSBhIHByb3RvY29sIHVwZ3JhZGUgY2FuIHJlcGxhY2UgYWxsIGNvbnRyYWN0IGxvZ2ljLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gdXBncmFkZXIgVGhlIGFkZHJlc3MgY2FsbGluZyB0aGUgdXBncmFkZSAobXVzdCBoYXZlIFN1cGVyQWRtaW4gcm9sZSkuCkBwYXJhbSBuZXdfd2FzbV9oYXNoIFRoZSBuZXcgV0FTTSBoYXNoIHRvIGRlcGxveS4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBpZiB0aGUgY2FsbGVyIGlzIHVuYXV0aG9yaXplZC4AAAAAAAd1cGdyYWRlAAAAAAIAAAAAAAAACHVwZ3JhZGVyAAAAEwAAAAAAAAANbmV3X3dhc21faGFzaAAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", "AAAAAAAAANpSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZm9yIHRoZSB0b2tlbi4KCkBub3RpY2UgUmV0dXJucyB0aGUgdG9rZW4ncyBwcmVjaXNpb24gKG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcykuIERlZmF1bHRzIHRvIDcgaWYgbm90IHNldC4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHJldHVybiBUaGUgbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzLgAAAAAACGRlY2ltYWxzAAAAAAAAAAEAAAAE", + "AAAAAAAAACdDaGVja3Mgd2hldGhlciBhbiBhZGRyZXNzIGhvbGRzIGEgcm9sZS4AAAAACGhhc19yb2xlAAAAAgAAAAAAAAAEcm9sZQAAB9AAAAAEUm9sZQAAAAAAAAAHYWRkcmVzcwAAAAATAAAAAQAAAAE=", "AAAAAAAAAShQYXVzZXMgdGhlIGNvbnRyYWN0IGFzIGEgc3BlY2lmaWMgY2FsbGVyLgoKQG5vdGljZSBQYXVzZXMgYWxsIHRva2VuIG9wZXJhdGlvbnMgYXMgdGhlIGdpdmVuIGNhbGxlci4gVXNlZCBmb3IgZ292ZXJuYW5jZSBvciBlbWVyZ2VuY3kgc2NlbmFyaW9zIHdoZXJlIHRoZSBjYWxsZXIgZGlmZmVycyBmcm9tIHRoZSBhZG1pbi4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIGNhbGxlciBUaGUgYWRkcmVzcyByZXF1ZXN0aW5nIHRoZSBwYXVzZS4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLgAAAAhwYXVzZV9hcwAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAAAchUcmFuc2ZlcnMgdG9rZW5zIGZyb20gYGZyb21gIHRvIGB0b2AuCgpAbm90aWNlIFRyYW5zZmVycyBgYW1vdW50YCB0b2tlbnMgZnJvbSBgZnJvbWAgdG8gYHRvYC4gUmVxdWlyZXMgYGZyb21gIHRvIGF1dGhlbnRpY2F0ZSB0aGUgY2FsbC4KQGRldiBSZWplY3RzIHdpdGggW2BUb2tlbkVycm9yOjpDb250cmFjdFBhdXNlZGBdIHdoaWxlIHRoZSBsaWZlY3ljbGUgbW9kdWxlIHJlcG9ydHMgdGhlCmNvbnRyYWN0IHBhdXNlZC4gQ2hlY2tzIHJhdGUgbGltaXRzIGJlZm9yZSB0cmFuc2ZlcnJpbmcuIEVtaXRzIGEgYHRyYW5zZmVyYCBldmVudCBvbiBzdWNjZXNzLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gZnJvbSBUaGUgc2VuZGVyIGFkZHJlc3MuCkBwYXJhbSB0byBUaGUgcmVjaXBpZW50IGFkZHJlc3MuCkBwYXJhbSBhbW91bnQgVGhlIGFtb3VudCB0byB0cmFuc2Zlci4AAAAIdHJhbnNmZXIAAAADAAAAAAAAAARmcm9tAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=", "AAAAAAAAAHNSZXR1cm5zIHRoZSByZW1haW5pbmcgYWxsb3dhbmNlIHRoYXQgYHNwZW5kZXJgIGlzIGFsbG93ZWQgdG8gc3BlbmQgb24gYmVoYWxmIG9mIGBmcm9tYC4KCkBpbmhlcml0ZG9jIFRva2VuSW50ZXJmYWNlAAAAAAlhbGxvd2FuY2UAAAAAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAQAAAAs=", "AAAAAAAAAdtCdXJucyB0b2tlbnMgZnJvbSBhbm90aGVyIGFkZHJlc3MncyBiYWxhbmNlIHVzaW5nIHRoZSBhbGxvd2FuY2UgbWVjaGFuaXNtLgoKQG5vdGljZSBQZXJtYW5lbnRseSByZW1vdmVzIGBhbW91bnRgIHRva2VucyBmcm9tIGBmcm9tYCdzIGJhbGFuY2UsIHJlZHVjaW5nIHRvdGFsIHN1cHBseS4gUmVxdWlyZXMgYHNwZW5kZXJgIHRvIGhhdmUgc3VmZmljaWVudCBhbGxvd2FuY2UuCkBkZXYgRGVkdWN0cyB0aGUgYWxsb3dhbmNlIGFmdGVyIGJ1cm5pbmcuIEVtaXRzIGEgYGJ1cm5gIGV2ZW50LgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gc3BlbmRlciBUaGUgYWRkcmVzcyBjYWxsaW5nIHRoZSBidXJuIChtdXN0IGhhdmUgc3VmZmljaWVudCBhbGxvd2FuY2UpLgpAcGFyYW0gZnJvbSBUaGUgYWRkcmVzcyB3aG9zZSB0b2tlbnMgYXJlIGJ1cm5lZC4KQHBhcmFtIGFtb3VudCBUaGUgYW1vdW50IHRvIGJ1cm4uAAAAAAlidXJuX2Zyb20AAAAAAAADAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAA", "AAAAAAAAAP1SZXR1cm5zIHRoZSBjdXJyZW50IHJlcGxheS1wcm90ZWN0aW9uIG5vbmNlIGZvciBhbiBhZGRyZXNzLgoKQG5vdGljZSBSZXR1cm5zIHRoZSBub25jZSBmb3IgYGFkZHJlc3NgIHVzZWQgaW4gYGV4ZWN1dGVfZnJvbV9jb250cmFjdGAuCkBwYXJhbSBlbnYgVGhlIFNvcm9iYW4gZW52aXJvbm1lbnQuCkBwYXJhbSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIHF1ZXJ5IHRoZSBub25jZSBmb3IuCkByZXR1cm4gVGhlIGN1cnJlbnQgbm9uY2UgdmFsdWUuAAAAAAAACWdldF9ub25jZQAAAAAAAAEAAAAAAAAAB2FkZHJlc3MAAAAAEwAAAAEAAAAG", + "AAAAAAAAADZSZXR1cm5zIHdoZXRoZXIgdG9rZW4gb3BlcmF0aW9ucyBhcmUgY3VycmVudGx5IHBhdXNlZC4AAAAAAAlpc19wYXVzZWQAAAAAAAAAAAAAAQAAAAE=", "AAAAAgAAAG9BbiBpbm5lciBvcGVyYXRpb24gdGhhdCBjYW4gYmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCB2aWEgW2BCY0ZvcmdlVG9rZW46OmV4ZWN1dGVfZnJvbV9jb250cmFjdGBdLgoKQHRpdGxlIEJhdGNoT3AAAAAAAAAAAAdCYXRjaE9wAAAAAAIAAAABAAAAYkFwcHJvdmUgYSBzcGVuZGVyIHRvIHNwZW5kIHRva2VucyBvbiBiZWhhbGYgb2YgdGhlIHdhbGxldDogYChzcGVuZGVyLCBhbW91bnQsIGV4cGlyYXRpb25fbGVkZ2VyKWAuAAAAAAAHQXBwcm92ZQAAAAADAAAAEwAAAAsAAAAEAAAAAQAAAC9UcmFuc2ZlciB0b2tlbnMgdG8gYSByZWNpcGllbnQ6IGAodG8sIGFtb3VudClgLgAAAAAIVHJhbnNmZXIAAAACAAAAEwAAAAs=", "AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAADwAAAAAAAABVQWRtaW4gYWRkcmVzcyDigJQgc3RvcmVkIGhlcmUgZm9yIGNhbGxlciBjb252ZW5pZW5jZTsgZGVsZWdhdGVzIHRvIGBBZG1pbktleTo6QWRtaW5gLgAAAAAAAAVBZG1pbgAAAAAAAAAAAACPTGVnYWN5IHBlbmRpbmcgYWRtaW4g4oCUIHVudXNlZDsgcmV0YWluZWQgdG8gcHJlc2VydmUgc3RvcmFnZSBkaXNjcmltaW5hbnQgb3JkZXIuClRoZSB0cmFuc2Zlci1vd25lcnNoaXAgZmxvdyB1c2VzIGBhZG1pbjo6c2V0X2FkbWluYCBkaXJlY3RseS4AAAAADFBlbmRpbmdBZG1pbgAAAAEAAABFU3BlbmRpbmcgYWxsb3dhbmNlOiAob3duZXIsIHNwZW5kZXIpIC0+IGFtb3VudCBhbmQgZXhwaXJhdGlvbiBsZWRnZXIuAAAAAAAACUFsbG93YW5jZQAAAAAAAAIAAAATAAAAEwAAAAEAAABOTGVnYWN5IGFsbG93YW5jZSBleHBpcmF0aW9uIOKAlCBzdG9yZWQgcGVyLWtleTsgcHJlZmVyIGBBbGxvd2FuY2VEYXRhYCBzdHJ1Y3QuAAAAAAAMQWxsb3dhbmNlRXhwAAAAAgAAABMAAAATAAAAAQAAAB1Ub2tlbiBiYWxhbmNlIGZvciBhbiBhZGRyZXNzLgAAAAAAAAdCYWxhbmNlAAAAAAEAAAATAAAAAQAAAHZMb2NrdXAgc3RhdGUgZm9yIGFuIGFkZHJlc3M6IGFtb3VudCBjdXJyZW50bHkgbG9ja2VkIGFuZCB0aGUgdGltZXN0YW1wCmF0IHdoaWNoIHRoZSBsb2NrZWQgdG9rZW5zIGJlY29tZSB3aXRoZHJhd2FibGUuAAAAAAAGTG9ja3VwAAAAAAABAAAAEwAAAAAAAAAnTnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciB0aGUgdG9rZW4uAAAAAAhEZWNpbWFscwAAAAAAAAAkVG9rZW4gbmFtZSAoZS5nLiwgImJjLWZvcmdlIFRva2VuIikuAAAABE5hbWUAAAAAAAAAG1Rva2VuIHN5bWJvbCAoZS5nLiwgIlNGRyIpLgAAAAAGU3ltYm9sAAAAAAAAAAAAG0N1cnJlbnQgdG90YWwgdG9rZW4gc3VwcGx5LgAAAAAGU3VwcGx5AAAAAAAAAAAAGU1heGltdW0gdG90YWwgc3VwcGx5IGNhcC4AAAAAAAAJTWF4U3VwcGx5AAAAAAAAAAAAACRUcmVhc3VyeSBhZGRyZXNzIGZvciBjb2xsZWN0ZWQgZmVlcy4AAAAIVHJlYXN1cnkAAAAAAAAAEkZlZSBjb25maWd1cmF0aW9uLgAAAAAACUZlZUNvbmZpZwAAAAAAAAEAAAAgRmVlIGV4ZW1wdGlvbnMga2V5ZWQgYnkgYWRkcmVzcy4AAAAMRmVlRXhlbXB0aW9uAAAAAQAAABMAAAABAAAAPE5vbmNlIGZvciBjb250cmFjdCB3YWxsZXQgYmF0Y2ggZXhlY3V0aW9uIHJlcGxheSBwcm90ZWN0aW9uLgAAAAVOb25jZQAAAAAAAAEAAAAT", "AAAAAAAAAk1NaW50cyBuZXcgdG9rZW5zIHRvIG11bHRpcGxlIHJlY2lwaWVudHMgaW4gYSBzaW5nbGUgY2FsbC4KCkBub3RpY2UgTWludHMgdG9rZW5zIHRvIGVhY2ggcmVjaXBpZW50IGluIHRoZSBgcmVjaXBpZW50c2AgbGlzdC4gT25seSBhdXRob3JpemVkIG1pbmVycyBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgpAZGV2IFJlcXVpcmVzIHRoZSBjYWxsZXIgdG8gaGF2ZSB0aGUgTWludGVyIHJvbGUuIFJhdGUgbGltaXRzIGFyZSBjaGVja2VkIHBlciByZWNpcGllbnQuIFRoZSB0b3RhbCBzdXBwbHkgaXMgdXBkYXRlZCBhdG9taWNhbGx5LgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gbWludGVyIFRoZSBhZGRyZXNzIG9mIHRoZSBtaW50ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgpAcGFyYW0gcmVjaXBpZW50cyBBIGxpc3Qgb2YgcmVjaXBpZW50cyB3aXRoIGFtb3VudHMgdG8gbWludCB0byBlYWNoLgpAcmV0dXJuIGBPaygoKSlgIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIGlmIHRoZSBtaW50ZXIgaXMgdW5hdXRob3JpemVkLCB0aGUgY29udHJhY3QgaXMgcGF1c2VkLCBvciBhbnkgYW1vdW50IGlzIGludmFsaWQuAAAAAAAACmJhdGNoX21pbnQAAAAAAAIAAAAAAAAABm1pbnRlcgAAAAAAEwAAAAAAAAAKcmVjaXBpZW50cwAAAAAD6gAAB9AAAAAJUmVjaXBpZW50AAAAAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", + "AAAAAAAAADxHcmFudHMgYSByb2xlIHRvIGFuIGFkZHJlc3MgdGhyb3VnaCB0aGUgc2hhcmVkIGFkbWluIG1vZHVsZS4AAAAKZ3JhbnRfcm9sZQAAAAAAAwAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAARyb2xlAAAH0AAAAARSb2xlAAAAAAAAAAdhZGRyZXNzAAAAABMAAAAA", "AAAAAAAAA2xJbml0aWFsaXplcyB0aGUgdG9rZW4gY29udHJhY3QuCgpTZXRzIHRoZSBhZG1pbiBhZGRyZXNzLCBkZWNpbWFscywgbmFtZSwgYW5kIHN5bWJvbC4KQ29uZmlndXJlcyBkZWZhdWx0IHJhdGUgbGltaXRzIGZvciBtaW50LCB0cmFuc2ZlciwgdHJhbnNmZXJfZnJvbSwgYnVybiwgYW5kIGJ1cm5fZnJvbSBvcGVyYXRpb25zLgpFbWl0cyB0aGUgYGluaXRgIGV2ZW50LiBDYW4gb25seSBiZSBjYWxsZWQgb25jZS4KCkBub3RpY2UgSW5pdGlhbGl6ZXMgdGhlIHRva2VuIGNvbnRyYWN0IHdpdGggdGhlIGdpdmVuIGFkbWluLCBkZWNpbWFscywgbmFtZSwgYW5kIHN5bWJvbC4KQGRldiBUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLiBTdWJzZXF1ZW50IGNhbGxzIHdpbGwgcmV2ZXJ0IHdpdGggYEFscmVhZHlJbml0aWFsaXplZGAuCkRlZmF1bHQgcmF0ZSBsaW1pdHMgYXJlIHNldCB0byAxMDAwIG9wZXJhdGlvbnMgcGVyIDYwLXNlY29uZCB3aW5kb3cgZm9yIGVhY2ggb3BlcmF0aW9uIHR5cGUuCkBwYXJhbSBlbnYgVGhlIFNvcm9iYW4gZW52aXJvbm1lbnQuCkBwYXJhbSBhZG1pbl9hZGRyZXNzIFRoZSBhZGRyZXNzIHRvIHNldCBhcyB0aGUgY29udHJhY3QgYWRtaW4uCkBwYXJhbSBkZWNpbWFsIFRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZm9yIHRoZSB0b2tlbi4KQHBhcmFtIG5hbWUgVGhlIHRva2VuIG5hbWUgKGUuZy4sICJiYy1mb3JnZSBUb2tlbiIpLgpAcGFyYW0gc3ltYm9sIFRoZSB0b2tlbiBzeW1ib2wgKGUuZy4sICJTRkciKS4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBgVG9rZW5FcnJvcjo6QWxyZWFkeUluaXRpYWxpemVkYCBpZiB0aGUgY29udHJhY3QgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4AAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAANYWRtaW5fYWRkcmVzcwAAAAAAABMAAAAAAAAAB2RlY2ltYWwAAAAABAAAAAAAAAAEbmFtZQAAABAAAAAAAAAABnN5bWJvbAAAAAAAEAAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAAAS1VbnBhdXNlcyB0aGUgY29udHJhY3QgYXMgYSBzcGVjaWZpYyBjYWxsZXIuCgpAbm90aWNlIFJlc3VtZXMgYWxsIHRva2VuIG9wZXJhdGlvbnMgYXMgdGhlIGdpdmVuIGNhbGxlci4gVXNlZCBmb3IgZ292ZXJuYW5jZSBvciBlbWVyZ2VuY3kgc2NlbmFyaW9zIHdoZXJlIHRoZSBjYWxsZXIgZGlmZmVycyBmcm9tIHRoZSBhZG1pbi4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIGNhbGxlciBUaGUgYWRkcmVzcyByZXF1ZXN0aW5nIHRoZSB1bnBhdXNlLgpAcmV0dXJuIGBPaygoKSlgIG9uIHN1Y2Nlc3MuAAAAAAAACnVucGF1c2VfYXMAAAAAAAEAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAAAI5SZXN0cmljdHMgcGFydCBvZiBhbiBleGlzdGluZyBob2xkZXIgYmFsYW5jZSB1bnRpbCBgdW5sb2NrX3RpbWVzdGFtcGAuCkV4aXN0aW5nIGxvY2tzIGFjY3VtdWxhdGUgYW5kIGNhbiBvbmx5IGhhdmUgdGhlaXIgdW5sb2NrIHRpbWUgZXh0ZW5kZWQuAAAAAAALbG9ja190b2tlbnMAAAAABAAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAAR1c2VyAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABB1bmxvY2tfdGltZXN0YW1wAAAABgAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", + "AAAAAAAAAD9SZXZva2VzIGEgcm9sZSBmcm9tIGFuIGFkZHJlc3MgdGhyb3VnaCB0aGUgc2hhcmVkIGFkbWluIG1vZHVsZS4AAAAAC3Jldm9rZV9yb2xlAAAAAAMAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAEcm9sZQAAB9AAAAAEUm9sZQAAAAAAAAAHYWRkcmVzcwAAAAATAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKQWRtaW5FcnJvcgAA", "AAAAAAAAAm5VcGRhdGVzIHRoZSB0b2tlbiBuYW1lIGFmdGVyIGluaXRpYWxpemF0aW9uLgoKQG5vdGljZSBTdG9yZXMgYG5ld19uYW1lYCBpbiBpbnN0YW5jZSBzdG9yYWdlIGFuZCBlbWl0cyBgdXBkX25hbWVgIHdpdGgKdGhlIGFkbWluLCBvbGQgbmFtZSwgYW5kIG5ldyBuYW1lIChzcGVjOiBtZXRhZGF0YS11cGRhdGUtZnVuY3Rpb25zCnJlcXVpcmVtZW50cyAxLjEtMS43KS4gRW1wdHkgc3RyaW5ncyBhcmUgYWNjZXB0ZWQ7IHRoZSBjb250cmFjdAptdXN0IGJlIGluaXRpYWxpemVkIG9yIGBUb2tlbkVycm9yOjpOb3RJbml0aWFsaXplZGAgaXMgcmV0dXJuZWQ7CnBhdXNlIHN0YXRlIGRvZXMgbm90IGFmZmVjdCB0aGUgdXBkYXRlLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gbmV3X25hbWUgVGhlIG5ldyB0b2tlbiBuYW1lIChtYXkgYmUgZW1wdHk7IHN0b3JlZCB2ZXJiYXRpbSkuCkByZXR1cm4gYE9rKCgpKWAgb24gc3VjY2Vzcywgb3IgYFRva2VuRXJyb3I6Ok5vdEluaXRpYWxpemVkYCBpZiB0aGUKY29udHJhY3QgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiBQYW5pY3MgaWYgdGhlIHN0b3JlZCBhZG1pbgpkb2VzIG5vdCBhdXRob3JpemUgdGhlIGludm9jYXRpb24uAAAAAAALdXBkYXRlX25hbWUAAAAAAQAAAAAAAAAIbmV3X25hbWUAAAAQAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", "AAAAAQAAAEZGZWUgY29uZmlndXJhdGlvbiBmb3IgZHluYW1pYyBjb250cmFjdCBmZWUgY2hhcmdpbmcuCgpAdGl0bGUgRmVlQ29uZmlnAAAAAAAAAAAACUZlZUNvbmZpZwAAAAAAAAQAAAAmQmFzZSBmZWUgYW1vdW50IGNoYXJnZWQgcGVyIG9wZXJhdGlvbi4AAAAAAAhiYXNlX2ZlZQAAAAsAAAA8TXVsdGlwbGllciBhcHBsaWVkIHRvIHRoZSBmZWUgYmFzZWQgb24gb3BlcmF0aW9uIGNvbXBsZXhpdHkuAAAAFWNvbXBsZXhpdHlfbXVsdGlwbGllcgAAAAAAAAQAAAAgV2hldGhlciBmZWUgY2hhcmdpbmcgaXMgZW5hYmxlZC4AAAAHZW5hYmxlZAAAAAABAAAAEE1heGltdW0gZmVlIGNhcC4AAAAHbWF4X2ZlZQAAAAAL", "AAAAAQAAADJBIG1pbnQgcmVjaXBpZW50IHdpdGggYW4gYW1vdW50LgoKQHRpdGxlIFJlY2lwaWVudAAAAAAAAAAAAAlSZWNpcGllbnQAAAAAAAACAAAAH1RoZSBhbW91bnQgdG8gbWludCBvciB0cmFuc2Zlci4AAAAABmFtb3VudAAAAAAACwAAABZUaGUgcmVjaXBpZW50IGFkZHJlc3MuAAAAAAACdG8AAAAAABM=", + "AAAAAAAAADNSZXR1cm5zIHRoZSBkZXRhaWxzIGZvciBhIGxlZ2FjeSBtdWx0aXNpZyBwcm9wb3NhbC4AAAAADGdldF9wcm9wb3NhbAAAAAEAAAAAAAAAC3Byb3Bvc2FsX2lkAAAAAAYAAAABAAAD6AAAB9AAAAAIUHJvcG9zYWw=", "AAAAAAAAAM9SZXR1cm5zIHRoZSBjdXJyZW50IHRyZWFzdXJ5IGFkZHJlc3MuCgpAbm90aWNlIFJldHVybnMgdGhlIHRyZWFzdXJ5IGFkZHJlc3MgZm9yIGNvbGxlY3RlZCBmZWVzLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcmV0dXJuIFRoZSB0cmVhc3VyeSBhZGRyZXNzLCBvciBgVG9rZW5FcnJvcjo6RmVlTm90Q29uZmlndXJlZGAgaWYgbm90IHNldC4AAAAADGdldF90cmVhc3VyeQAAAAAAAAABAAAD6QAAABMAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAAA1hTZXRzIG5hbWUsIHN5bWJvbCwgYW5kIGRlY2ltYWxzIHdpdGggYW4gaW1tdXRhYmlsaXR5IGd1YXJkICgjOTExKS4KCkBub3RpY2UgQWRtaW4tb25seSBmdWxsLW1ldGFkYXRhIHNldHRlci4gQWZ0ZXIgaW5pdGlhbGl6YXRpb24gdGhlCmBkZWNpbWFsc2Agc2NhbGUgaXMgZml4ZWQgYmVjYXVzZSBob2xkZXJzIGFuZCB0aGUgU0RLIGFzc3VtZSBhCmZpeGVkIHNjYWxlLCBzbyBhbnkgYXR0ZW1wdCB0byBzdXBwbHkgYSBgZGVjaW1hbHNgIHZhbHVlIHRoYXQKZGlmZmVycyBmcm9tIHRoZSBzdG9yZWQgb25lIGlzIHJlamVjdGVkIHdpdGgKYFRva2VuRXJyb3I6OkRlY2ltYWxzSW1tdXRhYmxlYC4gTmFtZSBhbmQgc3ltYm9sIGFyZSBzdG9yZWQKdmVyYmF0aW0gYW5kIGFuIGB1cGRfbWV0YWAgZXZlbnQgaXMgZW1pdHRlZCB3aXRoIHRoZSBuZXcgdmFsdWVzLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gY2FsbGVyIFRoZSBhZGRyZXNzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAobXVzdCBoYXZlIEFkbWluIHJvbGUpLgpAcGFyYW0gbmFtZSBUaGUgbmV3IHRva2VuIG5hbWUuCkBwYXJhbSBzeW1ib2wgVGhlIG5ldyB0b2tlbiBzeW1ib2wuCkBwYXJhbSBkZWNpbWFscyBUaGUgcmVxdWVzdGVkIGRlY2ltYWwgcGxhY2VzOyBtdXN0IGVxdWFsIHRoZSBzdG9yZWQgdmFsdWUuCkByZXR1cm4gYE9rKCgpKWAgb24gc3VjY2VzcywgYFRva2VuRXJyb3I6Ok5vdEluaXRpYWxpemVkYCBpZiB0aGUgY29udHJhY3QKaXMgdW5pbml0aWFsaXplZCwgb3IgYFRva2VuRXJyb3I6OkRlY2ltYWxzSW1tdXRhYmxlYCBpZiBgZGVjaW1hbHNgCndvdWxkIGNoYW5nZSB0aGUgaW5pdGlhbGl6ZWQgc2NhbGUuAAAADHNldF9tZXRhZGF0YQAAAAQAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAEbmFtZQAAABAAAAAAAAAABnN5bWJvbAAAAAAAEAAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", "AAAAAAAAAYNTZXRzIHRoZSB0cmVhc3VyeSBhZGRyZXNzIGZvciBjb2xsZWN0ZWQgZmVlcy4KCkBub3RpY2UgQ29uZmlndXJlcyB0aGUgdHJlYXN1cnkgYWRkcmVzcyB0aGF0IHJlY2VpdmVzIGNvbGxlY3RlZCBmZWVzLiBPbmx5IHRoZSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gY2FsbGVyIFRoZSBhZGRyZXNzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAobXVzdCBoYXZlIEFkbWluIHJvbGUpLgpAcGFyYW0gdHJlYXN1cnkgVGhlIGFkZHJlc3MgdG8gc2V0IGFzIHRoZSB0cmVhc3VyeS4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBpZiB0aGUgY2FsbGVyIGlzIHVuYXV0aG9yaXplZC4AAAAADHNldF90cmVhc3VyeQAAAAIAAAAAAAAABmNhbGxlcgAAAAAAEwAAAAAAAAAIdHJlYXN1cnkAAAATAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", "AAAABAAAAAAAAAAAAAAAClRva2VuRXJyb3IAAAAAABYAAAA8Q29udHJhY3QgaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZDsgY2Fubm90IHJlLWluaXRpYWxpemUuAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAAAQAAACZDb250cmFjdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LgAAAAAADk5vdEluaXRpYWxpemVkAAAAAAACAAAAOFRoZSBhbW91bnQgcHJvdmlkZWQgaXMgaW52YWxpZCAoZS5nLiwgbmVnYXRpdmUgb3IgemVybykuAAAADUludmFsaWRBbW91bnQAAAAAAAADAAAAQVRoZSBjYWxsZXIncyBiYWxhbmNlIGlzIGluc3VmZmljaWVudCBmb3IgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24uAAAAAAAAE0luc3VmZmljaWVudEJhbGFuY2UAAAAABAAAAERUaGUgc3BlbmRlcidzIGFsbG93YW5jZSBpcyBpbnN1ZmZpY2llbnQgZm9yIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uLgAAABVJbnN1ZmZpY2llbnRBbGxvd2FuY2UAAAAAAAAFAAAAPVRoZSBjb250cmFjdCBpcyBjdXJyZW50bHkgcGF1c2VkIGFuZCBvcGVyYXRpb25zIGFyZSByZWplY3RlZC4AAAAAAAAOQ29udHJhY3RQYXVzZWQAAAAAAAYAAAAjRmVlIGNvbmZpZ3VyYXRpb24gaGFzIG5vdCBiZWVuIHNldC4AAAAAEEZlZU5vdENvbmZpZ3VyZWQAAAAHAAAAMlRyZWFzdXJ5IGJhbGFuY2UgaXMgaW5zdWZmaWNpZW50IHRvIGNvdmVyIHRoZSBmZWUuAAAAAAAWSW5zdWZmaWNpZW50RmVlQmFsYW5jZQAAAAAACAAAADFObyBmZWUgZXhlbXB0aW9uIGZvdW5kIGZvciB0aGUgc3BlY2lmaWVkIGFkZHJlc3MuAAAAAAAAFEZlZUV4ZW1wdGlvbk5vdEZvdW5kAAAACQAAADNNaW50aW5nIHdvdWxkIGV4Y2VlZCB0aGUgY29uZmlndXJlZCBtYXhpbXVtIHN1cHBseS4AAAAAEU1heFN1cHBseUV4Y2VlZGVkAAAAAAAACgAAAAAAAAANQWxyZWFkeVBhdXNlZAAAAAAAAAsAAAAAAAAACU5vdFBhdXNlZAAAAAAAAAwAAAA2QmF0Y2ggb3BlcmF0aW9ucyBsaXN0IGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIGNhcCAoOCkuAAAAAAANQmF0Y2hUb29MYXJnZQAAAAAAAA0AAAAfQmF0Y2ggb3BlcmF0aW9ucyBsaXN0IGlzIGVtcHR5LgAAAAAKQmF0Y2hFbXB0eQAAAAAADgAAADhCYXRjaCBwYXlsb2FkIGV4ZWN1dGlvbiBtYXggbGVkZ2VyIHNlcXVlbmNlIGhhcyBleHBpcmVkLgAAAA5QYXlsb2FkRXhwaXJlZAAAAAAADwAAADhCYXRjaCBwYXlsb2FkIG5vbmNlIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBvciBpcyBpbnZhbGlkLgAAAA9QYXlsb2FkUmVwbGF5ZWQAAAAAEAAAAKtgcmVzY3VlX3Rva2Vuc2Agd2FzIGNhbGxlZCBvbiB0aGlzIGNvbnRyYWN0J3Mgb3duIHRva2VuIGlkLiBUaGUgdG9rZW4KY29udHJhY3QgY2FuIG5ldmVyIHJlc2N1ZSBpdHNlbGY6IGl0cyBiYWxhbmNlcyBhcmUgYWNjb3VudGVkIHVzZXIKZnVuZHMsIG5vdCBzdHJhbmRlZCBmb3JlaWduIGFzc2V0cy4AAAAADFVua25vd25Ub2tlbgAAABEAAABDTWV0YWRhdGEgd291bGQgY2hhbmdlIGBkZWNpbWFsc2AgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gKGlzc3VlICM5MTEpLgAAAAARRGVjaW1hbHNJbW11dGFibGUAAAAAAAASAAAAvkEgcHJpdmlsZWdlZCBhY3Rpb24gKGZlZS1jb25maWcgY2hhbmdlIG9yIG93bmVyc2hpcCB0cmFuc2Zlcikgd2FzCmF0dGVtcHRlZCB3aGlsZSBpdHMgcHJvcG9zYWwncyB0aW1lbG9jayBkZWxheSBoYWQgbm90IHlldCBlbGFwc2VkCigjOTE0KS4gQ29kZXMgYXJlIGFwcGVuZC1vbmx5IHBlciB0aGlzIGNyYXRlJ3MgQUJJIHBvbGljeS4AAAAAABJUaW1lbG9ja05vdEVsYXBzZWQAAAAAABMAAAC+Tm8gbGl2ZSBwcml2aWxlZ2VkLWFjdGlvbiBwcm9wb3NhbCBleGlzdHMgZm9yIHRoZSByZXF1ZXN0ZWQgYWN0aW9uOgpub25lIHdhcyBwcm9wb3NlZCwgaXQgd2FzIGFscmVhZHkgY29uc3VtZWQsIG9yIGl0IHdhcyBjYW5jZWxsZWQKKCM5MTQpLiBDb2RlcyBhcmUgYXBwZW5kLW9ubHkgcGVyIHRoaXMgY3JhdGUncyBBQkkgcG9saWN5LgAAAAAAGVByaXZpbGVnZVByb3Bvc2FsTm90Rm91bmQAAAAAAAAUAAAAL05vIGxvY2sgcmVjb3JkIGV4aXN0cyBmb3IgdGhlIHJlcXVlc3RlZCBob2xkZXIuAAAAAA5Mb2NrdXBOb3RGb3VuZAAAAAAAFQAAADdUaGUgaG9sZGVyJ3MgbG9jayBoYXMgbm90IHJlYWNoZWQgaXRzIHVubG9jayB0aW1lc3RhbXAuAAAAABFUb2tlbnNTdGlsbExvY2tlZAAAAAAAABY=", + "AAAAAAAAADNSZXR1cm5zIHRoZSBjb25maWd1cmVkIG11bHRpc2lnIGFwcHJvdmFsIHRocmVzaG9sZC4AAAAADWdldF90aHJlc2hvbGQAAAAAAAAAAAAAAQAAAAQ=", "AAAAAAAABABSZXNjdWVzIGEgZm9yZWlnbiBTRVAtNDEgdG9rZW4gYmFsYW5jZSBvdXQgb2YgdGhlIGNvbnRyYWN0LgoKU0VQLTQxIHRva2VucyBzZW50IHRvIHRoZSBjb250cmFjdCBieSBtaXN0YWtlIHdvdWxkIG90aGVyd2lzZSBiZSBzdHVjazoKbm90aGluZyBpbiB0aGUgdG9rZW4ncyBvd24gaW50ZXJmYWNlIG1vdmVzIGEgYmFsYW5jZSB0aGF0IGRvZXMgbm90CmJlbG9uZyB0byBhIGhvbGRlciB3aG8gY2FuIHNpZ24uIFRoaXMgZXNjYXBlIGhhdGNoIGxldHMgdGhlIGFkbWluIHNlbmQKc3VjaCBhIHN0cmFuZGVkIGJhbGFuY2UgdG8gYSByZWNvdmVyeSBhZGRyZXNzLgoKVGhlIGJhbiBsaXN0IGlzIGRlbGliZXJhdGVseSBtaW5pbWFsIGFuZCBleGFjdC4gUmVzY3VpbmcgdGhpcwpjb250cmFjdCdzICpvd24qIHRva2VuIGlkIGlzIHJlamVjdGVkIHdpdGggW2BUb2tlbkVycm9yOjpVbmtub3duVG9rZW5gXQooYHJlc2N1ZV90b2tlbnMoJmVudi5jdXJyZW50X2NvbnRyYWN0X2FkZHJlc3MoKSwgLi4pYCksIGJlY2F1c2UgZXZlcnkKYmFsYW5jZSBpbiB0aGlzIGNvbnRyYWN0J3Mgb3duIGxlZGdlciBlbnRyeSBpcyBhY2NvdW50ZWQgdXNlciBtb25leToKZHJhaW5pbmcgaXQgdGhyb3VnaCB0aGUgcmVzY3VlIGhhdGNoIHdvdWxkIGJlIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20KdGhlZnQuIEFueSAqb3RoZXIqIHRva2VuIGlkIGlzIHJlc2N1YWJsZSwgd2hpY2ggaXMgdGhlIHBvaW50IG9mIHRoZQpoYXRjaDogYnkgY29uc3RydWN0aW9uIHRoZSBjb250cmFjdCBuZXZlciBhY2NvdW50cyBiYWxhbmNlcyBvZiBhIHRva2VuCml0IGRvZXMgbm90IGlzc3VlLCBzbyBubyBhY2NvdW50ZWQgZnVuZHMgY2FuIHNpdCB1bmRlciBhIGZvcmVpZ24gaWQuCgojIFNlY3VyaXR5CgotIEFkbWluLWdhdGVkOiByZXZlcnRzIHVubGVzcyBgY2FsbGVyYCBob2xkcyB0aGUgYEFkbWluYCByb2xlIChvciB0aGUKaW1wbGljaXQgYWxsLXJvbGVzIGdyYW50IHRoZSBhZG1pbiBjYXJyaWVzKSB2aWEKW2BhZG1pbjo6cmVxdWlyZV9hZG1pbmBdAAAADXJlc2N1ZV90b2tlbnMAAAAAAAAEAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAAAn9UcmFuc2ZlcnMgdG9rZW5zIGZyb20gYGZyb21gIHRvIGB0b2Agb24gYmVoYWxmIG9mIGBzcGVuZGVyYC4KCkBub3RpY2UgVHJhbnNmZXJzIGBhbW91bnRgIHRva2VucyBmcm9tIGBmcm9tYCB0byBgdG9gIHVzaW5nIHRoZSBhbGxvd2FuY2UgbWVjaGFuaXNtLiBSZXF1aXJlcyBgc3BlbmRlcmAgdG8gYXV0aGVudGljYXRlIHRoZSBjYWxsLgpAZGV2IFJlamVjdHMgd2l0aCBbYFRva2VuRXJyb3I6OkNvbnRyYWN0UGF1c2VkYF0gd2hpbGUgcGF1c2VkLiBDaGVja3MgcmF0ZSBsaW1pdHMgYW5kCnN1ZmZpY2llbnQgYWxsb3dhbmNlIGJlZm9yZSB0cmFuc2ZlcnJpbmcuIERlZHVjdHMgdGhlIGFsbG93YW5jZSBhZnRlciBhIHN1Y2Nlc3NmdWwKdHJhbnNmZXIuIEVtaXRzIGEgYHRyYW5zZmVyX2Zyb21gIGV2ZW50LgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gc3BlbmRlciBUaGUgYWRkcmVzcyBjYWxsaW5nIHRoZSBmdW5jdGlvbiAobXVzdCBoYXZlIHN1ZmZpY2llbnQgYWxsb3dhbmNlKS4KQHBhcmFtIGZyb20gVGhlIGFkZHJlc3MgdG8gdHJhbnNmZXIgdG9rZW5zIGZyb20uCkBwYXJhbSB0byBUaGUgcmVjaXBpZW50IGFkZHJlc3MuCkBwYXJhbSBhbW91bnQgVGhlIGFtb3VudCB0byB0cmFuc2Zlci4AAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==", "AAAAAAAAAnlVcGRhdGVzIHRoZSB0b2tlbiBzeW1ib2wgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uCgpAbm90aWNlIFN0b3JlcyBgbmV3X3N5bWJvbGAgaW4gaW5zdGFuY2Ugc3RvcmFnZSBhbmQgZW1pdHMgYHVwZF9zeW1gIHdpdGgKdGhlIGFkbWluLCBvbGQgc3ltYm9sLCBhbmQgbmV3IHN5bWJvbCAoc3BlYzogbWV0YWRhdGEtdXBkYXRlLWZ1bmN0aW9ucwpyZXF1aXJlbWVudHMgMi4xLTIuNykuIEVtcHR5IHN0cmluZ3MgYXJlIGFjY2VwdGVkOyB0aGUgY29udHJhY3QKbXVzdCBiZSBpbml0aWFsaXplZCBvciBgVG9rZW5FcnJvcjo6Tm90SW5pdGlhbGl6ZWRgIGlzIHJldHVybmVkOwpwYXVzZSBzdGF0ZSBkb2VzIG5vdCBhZmZlY3QgdGhlIHVwZGF0ZS4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIG5ld19zeW1ib2wgVGhlIG5ldyB0b2tlbiBzeW1ib2wgKG1heSBiZSBlbXB0eTsgc3RvcmVkIHZlcmJhdGltKS4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBgVG9rZW5FcnJvcjo6Tm90SW5pdGlhbGl6ZWRgIGlmIHRoZQpjb250cmFjdCBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQuIFBhbmljcyBpZiB0aGUgc3RvcmVkIGFkbWluCmRvZXMgbm90IGF1dGhvcml6ZSB0aGUgaW52b2NhdGlvbi4AAAAAAAANdXBkYXRlX3N5bWJvbAAAAAAAAAEAAAAAAAAACm5ld19zeW1ib2wAAAAAABAAAAABAAAD6QAAA+0AAAAAAAAH0AAAAApUb2tlbkVycm9yAAA=", "AAAAAQAAAGhMb2NrdXAgcGVyaW9kIHN0YXRlIGZvciBhIHNpbmdsZSB1c2VyLCBzdG9yZWQgcGVyIGFkZHJlc3MgdW5kZXIKW2BEYXRhS2V5OjpMb2NrdXBgXS4KCkB0aXRsZSBMb2NrdXBTdGF0ZQAAAAAAAAALTG9ja3VwU3RhdGUAAAAAAgAAADVUb3RhbCBhbW91bnQgb2YgdG9rZW5zIGN1cnJlbnRseSBsb2NrZWQgZm9yIHRoZSB1c2VyLgAAAAAAAAZhbW91bnQAAAAAAAsAAABUVW5peCB0aW1lc3RhbXAgKHNlY29uZHMgc2luY2UgZXBvY2gpIGF0IHdoaWNoIHRoZSBsb2NrZWQgdG9rZW5zCmJlY29tZSB3aXRoZHJhd2FibGUuAAAAEHVubG9ja190aW1lc3RhbXAAAAAG", "AAAAAAAAAj9UcmFuc2ZlcnMgdG9rZW5zIGZyb20gYSBzaW5nbGUgc2VuZGVyIHRvIG11bHRpcGxlIHJlY2lwaWVudHMuCgpAbm90aWNlIFRyYW5zZmVycyBgYW1vdW50YCB0b2tlbnMgZnJvbSBgZnJvbWAgdG8gZWFjaCByZWNpcGllbnQgaW4gc2VxdWVuY2UuIFRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYGZyb21gIGFkZHJlc3MuCkBkZXYgUmVxdWlyZXMgdGhlIGNhbGxlciB0byBiZSB0aGUgYGZyb21gIGFkZHJlc3MuIFJhdGUgbGltaXRzIGFyZSBjaGVja2VkIHBlciB0cmFuc2Zlci4gVG90YWwgYmFsYW5jZSBpcyB2ZXJpZmllZCBiZWZvcmUgYW55IHRyYW5zZmVycy4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIGZyb20gVGhlIGFkZHJlc3Mgc2VuZGluZyB0aGUgdG9rZW5zLgpAcGFyYW0gcmVjaXBpZW50cyBBIGxpc3Qgb2YgKHJlY2lwaWVudCwgYW1vdW50KSBwYWlycy4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBpZiB0aGUgYmFsYW5jZSBpcyBpbnN1ZmZpY2llbnQsIGFueSBhbW91bnQgaXMgaW52YWxpZCwgb3IgYSByYXRlIGxpbWl0IGlzIGV4Y2VlZGVkLgAAAAAOYmF0Y2hfdHJhbnNmZXIAAAAAAAIAAAAAAAAABGZyb20AAAATAAAAAAAAAApyZWNpcGllbnRzAAAAAAPqAAAD7QAAAAIAAAATAAAACwAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", + "AAAAAAAAACtSZXR1cm5zIHRoZSBjb25maWd1cmVkIG11bHRpc2lnIGFkbWluIHBvb2wuAAAAAA5nZXRfYWRtaW5fcG9vbAAAAAAAAAAAAAEAAAPqAAAAEw==", "AAAAAAAAAN5SZXR1cm5zIHRoZSBjdXJyZW50IGZlZSBjb25maWd1cmF0aW9uLgoKQG5vdGljZSBSZXR1cm5zIHRoZSBjdXJyZW50IGZlZSBjb25maWd1cmF0aW9uIGZvciB0aGUgdG9rZW4gY29udHJhY3QuCkBwYXJhbSBlbnYgVGhlIFNvcm9iYW4gZW52aXJvbm1lbnQuCkByZXR1cm4gVGhlIGZlZSBjb25maWd1cmF0aW9uLCBvciBgVG9rZW5FcnJvcjo6RmVlTm90Q29uZmlndXJlZGAgaWYgbm90IHNldC4AAAAAAA5nZXRfZmVlX2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAlGZWVDb25maWcAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAAAKtSZXR1cm5zIHRoZSBtYXhpbXVtIHRvdGFsIHN1cHBseSBjYXAuCgpAbm90aWNlIFJldHVybnMgdGhlIG1heGltdW0gc3VwcGx5IHRoYXQgdGhlIHRva2VuIGNhbiBldmVyIGhhdmUuCkBwYXJhbSBlbnYgVGhlIFNvcm9iYW4gZW52aXJvbm1lbnQuCkByZXR1cm4gVGhlIG1heGltdW0gc3VwcGx5IGNhcC4AAAAADmdldF9tYXhfc3VwcGx5AAAAAAAAAAAAAQAAAAs=", "AAAAAAAAAEhDb25maWd1cmVzIHRoZSBtdWx0aS1zaWcgYWRtaW4gcG9vbCBhbmQgYXBwcm92YWwgdGhyZXNob2xkIGZvciB1cGdyYWRlcy4AAAAOc2V0X2FkbWluX3Bvb2wAAAAAAAIAAAAAAAAABHBvb2wAAAPqAAAAEwAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAA=", @@ -1374,11 +1478,15 @@ export class Client extends ContractClient { "AAAAAAAAAipVcGRhdGVzIG5hbWUgYW5kIHN5bWJvbCB0b2dldGhlciAoIzkxMSkuCgpAbm90aWNlIEFkbWluLW9ubHkgbWV0YWRhdGEgdXBkYXRlciB0aGF0IGNoYW5nZXMgbmFtZSBhbmQgc3ltYm9sIGluIG9uZQpjYWxsLiBgZGVjaW1hbHNgIGlzIG5vdCBhIHBhcmFtZXRlciwgc28gdGhlIGluaXRpYWxpemVkIHNjYWxlCmNhbm5vdCBjaGFuZ2UgdGhyb3VnaCB0aGlzIGVudHJ5IHBvaW50LiBFbWl0cyBgdXBkX21ldGFgIHdpdGgKdGhlIGNhbGxlciwgbmV3IG5hbWUsIGFuZCBuZXcgc3ltYm9sLgpAcGFyYW0gZW52IFRoZSBTb3JvYmFuIGVudmlyb25tZW50LgpAcGFyYW0gY2FsbGVyIFRoZSBhZGRyZXNzIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiAobXVzdCBoYXZlIEFkbWluIHJvbGUpLgpAcGFyYW0gbmFtZSBUaGUgbmV3IHRva2VuIG5hbWUuCkBwYXJhbSBzeW1ib2wgVGhlIG5ldyB0b2tlbiBzeW1ib2wuCkByZXR1cm4gYE9rKCgpKWAgb24gc3VjY2Vzcywgb3IgYFRva2VuRXJyb3I6Ok5vdEluaXRpYWxpemVkYCBpZiB0aGUKY29udHJhY3QgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLgAAAAAAD3VwZGF0ZV9tZXRhZGF0YQAAAAADAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAABG5hbWUAAAAQAAAAAAAAAAZzeW1ib2wAAAAAABAAAAABAAAD6QAAA+0AAAAAAAAH0AAAAApUb2tlbkVycm9yAAA=", "AAAAAAAAAMZSZW1vdmVzIGEgaG9sZGVyJ3MgY29tcGxldGUgbG9jayBhZnRlciBpdHMgdW5sb2NrIHRpbWVzdGFtcCBpcyByZWFjaGVkLgoKRG9lcyBub3QgY2hhbmdlIHRoZSBob2xkZXIncyBiYWxhbmNlIG9yIHRvdGFsIHN1cHBseS4gVGhlIGhvbGRlciBtdXN0CmF1dGhvcml6ZSB0aGUgY2FsbDsgYW4gYWRtaW4gc2lnbmF0dXJlIGlzIG5vdCByZXF1aXJlZC4AAAAAAA93aXRoZHJhd19sb2NrZWQAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAA+0AAAAAAAAH0AAAAApUb2tlbkVycm9yAAA=", "AAAAAAAAAJRBcHByb3ZlcyBhIG11bHRpLXNpZyBnb3Zlcm5hbmNlIHByb3Bvc2FsLgoKQG5vdGljZSBSZWNvcmRzIGBhZG1pbmAncyBhcHByb3ZhbCBmb3IgYHByb3Bvc2FsX2lkYC4KQGRldiBUaGluIHdyYXBwZXIgb3ZlciBbYGFkbWluOjphcHByb3ZlX3Byb3Bvc2FsYF0uAAAAEGFwcHJvdmVfcHJvcG9zYWwAAAACAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAAC3Byb3Bvc2FsX2lkAAAAAAYAAAAA", + "AAAAAAAAAD5SZXR1cm5zIHJvbGUgYWN0aW9uIGRldGFpbHMgYW5kIGFwcHJvdmFsIHRhbGx5IGZvciBhIHByb3Bvc2FsLgAAAAAAEWdldF9yb2xlX3Byb3Bvc2FsAAAAAAAAAQAAAAAAAAALcHJvcG9zYWxfaWQAAAAABgAAAAEAAAPoAAAH0AAAABhSb2xlR3JhbnRQcm9wb3NhbERldGFpbHM=", "AAAAAAAAAEJSZXR1cm5zIHdoZXRoZXIgYSBnb3Zlcm5hbmNlIHByb3Bvc2FsIGhhcyBtZXQgaXRzIGFwcHJvdmFsIHF1b3J1bS4AAAAAABFpc19wcm9wb3NhbF9yZWFkeQAAAAAAAAEAAAAAAAAAC3Byb3Bvc2FsX2lkAAAAAAYAAAABAAAAAQ==", "AAAAAAAAAaRTZXRzIGEgZmVlIGV4ZW1wdGlvbiBmb3IgYSBzcGVjaWZpYyBhZGRyZXNzLgoKQG5vdGljZSBDb25maWd1cmVzIGEgZmVlIGV4ZW1wdGlvbiBmb3IgdGhlIGdpdmVuIGFkZHJlc3MuIE9ubHkgdGhlIGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uCkBwYXJhbSBlbnYgVGhlIFNvcm9iYW4gZW52aXJvbm1lbnQuCkBwYXJhbSBjYWxsZXIgVGhlIGFkZHJlc3MgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIChtdXN0IGhhdmUgQWRtaW4gcm9sZSkuCkBwYXJhbSBhZGRyZXNzIFRoZSBhZGRyZXNzIHRvIGV4ZW1wdCBmcm9tIGZlZXMuCkBwYXJhbSBleGVtcHRpb24gVGhlIGZlZSBleGVtcHRpb24gY29uZmlndXJhdGlvbi4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBpZiB0aGUgY2FsbGVyIGlzIHVuYXV0aG9yaXplZC4AAAARc2V0X2ZlZV9leGVtcHRpb24AAAAAAAADAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAAB2FkZHJlc3MAAAAAEwAAAAAAAAAJZXhlbXB0aW9uAAAAAAAH0AAAAAxGZWVFeGVtcHRpb24AAAABAAAD6QAAA+0AAAAAAAAH0AAAAApUb2tlbkVycm9yAAA=", "AAAAAAAAAThUcmFuc2ZlcnMgY29udHJhY3Qgb3duZXJzaGlwIHRvIGEgbmV3IGFkbWluLgoKQG5vdGljZSBUcmFuc2ZlcnMgdGhlIGFkbWluIHJvbGUgdG8gYG5ld19hZG1pbmAuIE9ubHkgdGhlIGN1cnJlbnQgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIG5ld19hZG1pbiBUaGUgYWRkcmVzcyB0byBiZWNvbWUgdGhlIG5ldyBhZG1pbi4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBpZiB0aGUgY2FsbGVyIGlzIG5vdCB0aGUgY3VycmVudCBhZG1pbi4AAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfYWRtaW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", + "AAAAAAAAAD5DcmVhdGVzIGEgbXVsdGlzaWcgcHJvcG9zYWwgdGhhdCBncmFudHMgYSByb2xlIGFmdGVyIGFwcHJvdmFsLgAAAAAAFGNyZWF0ZV9yb2xlX3Byb3Bvc2FsAAAABAAAAAAAAAAHY3JlYXRvcgAAAAATAAAAAAAAAARyb2xlAAAH0AAAAARSb2xlAAAAAAAAAAZ0YXJnZXQAAAAAABMAAAAAAAAAC2Rlc2NyaXB0aW9uAAAAABAAAAABAAAABg==", "AAAAAAAAAX1SZW1vdmVzIGEgZmVlIGV4ZW1wdGlvbiBmb3IgYSBzcGVjaWZpYyBhZGRyZXNzLgoKQG5vdGljZSBSZW1vdmVzIHRoZSBmZWUgZXhlbXB0aW9uIGZvciB0aGUgZ2l2ZW4gYWRkcmVzcy4gT25seSB0aGUgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIGNhbGxlciBUaGUgYWRkcmVzcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gKG11c3QgaGF2ZSBBZG1pbiByb2xlKS4KQHBhcmFtIGFkZHJlc3MgVGhlIGFkZHJlc3MgdG8gcmVtb3ZlIHRoZSBleGVtcHRpb24gZnJvbS4KQHJldHVybiBgT2soKCkpYCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBpZiB0aGUgY2FsbGVyIGlzIHVuYXV0aG9yaXplZC4AAAAAAAAUcmVtb3ZlX2ZlZV9leGVtcHRpb24AAAACAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAAB2FkZHJlc3MAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAfQAAAAClRva2VuRXJyb3IAAA==", "AAAAAAAABABFeGVjdXRlcyBhIGJhdGNoIG9mIGF1dGhvcml6ZWQgb3BlcmF0aW9ucyAoYXBwcm92ZSBhbmQgdHJhbnNmZXIpIG9uIGJlaGFsZiBvZiBgZnJvbWAuCgpAbm90aWNlIEV4ZWN1dGVzIGEgYm91bmRlZCBsaXN0IG9mIGlubmVyIG9wZXJhdGlvbnMgKGFwcHJvdmUgYW5kIHRyYW5zZmVyIG9ubHkpIGluIGEgc2luZ2xlIGF1dGhvcml6ZWQgaW52b2NhdGlvbi4KQGRldiBIYXJkIGNhcCBvZiA4IG9wZXJhdGlvbnMgcGVyIGJhdGNoLiBSZXF1aXJlcyBgZnJvbWAgdG8gYXV0aGVudGljYXRlLgpSZXBsYXktcHJvdGVjdGVkIHZpYSBgbm9uY2VgIChzdG9yZWQgaW4gcGVyc2lzdGVudCBzdG9yYWdlKSBhbmQgYG1heF9sZWRnZXJgIChsZWRnZXIgZXhwaXJ5KS4KQWRtaW4tb25seSBmdW5jdGlvbnMgYXJlIHN0cmljdGx5IHVucmVhY2hhYmxlIGFzIGBCYXRjaE9wYCBpcyBib3VuZGVkIHRvIGBBcHByb3ZlYCBhbmQgYFRyYW5zZmVyYC4KCiMgQXJndW1lbnRzCiogYGVudmAgLSBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KKiBgZnJvbWAgLSBUaGUgd2FsbGV0IGF1dGhvcml6aW5nIHRoZSBiYXRjaCBvcGVyYXRpb25zLgoqIGBvcGVyYXRpb25zYCAtIFZlY3RvciBvZiBpbm5lciBvcGVyYXRpb25zIChgQmF0Y2hPcDo6QXBwcm92ZWAgb3IgYEJhdGNoT3A6OlRyYW5zZmVyYCksIHVwIHRvIDggb3BlcmF0aW9ucy4KKiBgbm9uY2VgIC0gRXhwZWN0ZWQgc2VxdWVudGlhbCB0cmFuc2FjdGlvbiBub25jZSBmb3IgYGZyb21gLgoqIGBtYXhfbGVkZ2VyYCAtIE1heGltdW0gbGVkZ2VyIHNlcXVlbmNlIG51bWJlciB1bnRpbCB3aGljaCB0aGlzIHBheWxvYWQgaXMgdmFsaWQgKDAgPSBubyBleHBpcnkpLgoKIyBQYW5pY3MKUGFuaWNzIHdpdGggY29udHJhY3QgZXJyb3IgaWYgaW5pdGlhbGl6ZWQvcGF1c2VkIGNoZWNrcyBvciBhdXRoZW50aWNhdGlvbiBmYWlsLgoKIyBFdmVudHMKRW1pdHMgYGFwcHJvdmVgIGFuZCBgdHJhbnNmZXJgIGV2ZW50cyBmb3IgZWFjaCBleGVjdXRlZCBvcGVyYXRpb24sIGFuZCBgZXhlY19idGNoAAAAFWV4ZWN1dGVfZnJvbV9jb250cmFjdAAAAAAAAAQAAAAAAAAABGZyb20AAAATAAAAAAAAAApvcGVyYXRpb25zAAAAAAPqAAAH0AAAAAdCYXRjaE9wAAAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAptYXhfbGVkZ2VyAAAAAAAEAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", + "AAAAAAAAAEFFeGVjdXRlcyBhIHJvbGUgZ3JhbnQgYWZ0ZXIgaXRzIG11bHRpc2lnIHByb3Bvc2FsIHJlYWNoZXMgcXVvcnVtLgAAAAAAABVleGVjdXRlX3JvbGVfcHJvcG9zYWwAAAAAAAACAAAAAAAAAAhleGVjdXRvcgAAABMAAAAAAAAAC3Byb3Bvc2FsX2lkAAAAAAYAAAABAAAD6QAAA+0AAAAAAAAH0AAAAApBZG1pbkVycm9yAAA=", + "AAAAAAAAAD1MaXN0cyBwZW5kaW5nIGFuZCBhcHByb3ZlZCBsZWdhY3kgbXVsdGlzaWcgcHJvcG9zYWxzIGJ5IHBhZ2UuAAAAAAAAFWxpc3RfbGVnYWN5X3Byb3Bvc2FscwAAAAAAAAEAAAAAAAAAC3N0YXJ0X2FmdGVyAAAAAAYAAAABAAAH0AAAABNMZWdhY3lQcm9wb3NhbExpc3RzAA==", "AAAAAAAAAS5SZWFkLW9ubHkgdmlldyBvZiB0aGUgcHJpdmlsZWdlZC1hY3Rpb24gcHJvcG9zYWwgZm9yIGBhY3Rpb25gICgjOTE0KS4KCkBub3RpY2UgUmV0dXJucyB0aGUgcGVuZGluZy9leGVjdXRlZC9jYW5jZWxsZWQgcHJvcG9zYWwgZm9yIHRoZSBhY3Rpb24sIGlmIGFueS4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIGFjdGlvbiBUaGUgcHJpdmlsZWdlZCBhY3Rpb24gdG8gcXVlcnkuCkByZXR1cm4gVGhlIHByb3Bvc2FsIHN0YXRlLCBvciBgTm9uZWAgd2hlbiBub3RoaW5nIHdhcyBldmVyIHByb3Bvc2VkLgAAAAAAFmdldF9wcml2aWxlZ2VfcHJvcG9zYWwAAAAAAAEAAAAAAAAABmFjdGlvbgAAAAAH0AAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAAQAAA+gAAAfQAAAAEVByaXZpbGVnZVByb3Bvc2FsAAAA", "AAAAAAAAAlFDYW5jZWxzIGEgcGVuZGluZyBwcml2aWxlZ2VkIGFjdGlvbiAoIzkxNCkuIEFkbWluLW9ubHk6IGNhbmNlbGxhdGlvbgppcyB0aGUgZW1lcmdlbmN5IGJyYWtlLCBhdmFpbGFibGUgdG8gYW55IGFkbWluIGR1cmluZyB0aGUgZGVsYXkKd2luZG93IOKAlCBpdCBtdXN0IG5vdCBiZSBnYXRlZCBvbiB0aGUgY29tcHJvbWlzZWQga2V5IGFsb25lLgoKQG5vdGljZSBDYW5jZWxzIGEgcGVuZGluZyBwcml2aWxlZ2VkLWFjdGlvbiBwcm9wb3NhbC4KQGRldiBBZG1pbi1vbmx5LiBBIGNhbmNlbGxlZCBwcm9wb3NhbCBjYW4gbmV2ZXIgZXhlY3V0ZTsgYSBmcmVzaCBvbmUKbWF5IGJlIHByb3Bvc2VkIGFmdGVyd2FyZHMuCkBwYXJhbSBlbnYgVGhlIFNvcm9iYW4gZW52aXJvbm1lbnQuCkBwYXJhbSBjYWxsZXIgVGhlIGFkbWluIGNhbmNlbGxpbmcgdGhlIGFjdGlvbi4KQHBhcmFtIGFjdGlvbiBUaGUgcHJpdmlsZWdlZCBhY3Rpb24gdG8gY2FuY2VsLgpAcmV0dXJuIGBPaygoKSlgIG9uIHN1Y2Nlc3MsIG9yIFtgVG9rZW5FcnJvcjo6UHJpdmlsZWdlUHJvcG9zYWxOb3RGb3VuZGBdCmlmIG5vIGxpdmUgcHJvcG9zYWwgZXhpc3RzIGZvciB0aGUgYWN0aW9uLgAAAAAAABdjYW5jZWxfcHJpdmlsZWdlX2FjdGlvbgAAAAACAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAABmFjdGlvbgAAAAAH0AAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAAQAAA+kAAAPtAAAAAAAAB9AAAAAKVG9rZW5FcnJvcgAA", "AAAAAAAAArtQcm9wb3NlcyBhIHByaXZpbGVnZWQgYWN0aW9uICgjOTE0KTogYSBmZWUtY29uZmlnIGNoYW5nZSBvciBhbgpvd25lcnNoaXAgdHJhbnNmZXIuIEFkbWluLW9ubHkuIFRoZSBhY3Rpb24gYmVjb21lcyBleGVjdXRhYmxlIGFmdGVyCnRoZSAyNGggdGltZWxvY2sgYW5kIGlzIGFwcGxpZWQgYnkgdGhlIG1hdGNoaW5nIGVmZmVjdCBmdW5jdGlvbgooYHNldF9mZWVfY29uZmlnYCAvIGB0cmFuc2Zlcl9vd25lcnNoaXBgKSwgd2hpY2ggY29uc3VtZXMgdGhlCnByb3Bvc2FsIGF0IHRoZSBwb2ludCBvZiBlZmZlY3QuCgpAbm90aWNlIFByb3Bvc2VzIGEgcHJpdmlsZWdlZCBhY3Rpb24gdW5kZXIgdGhlICM5MTQgdGltZWxvY2suCkBkZXYgQWRtaW4tb25seS4gUmVqZWN0cyB3aGlsZSBhIGxpdmUgcHJvcG9zYWwgZm9yIHRoZSBzYW1lIGFjdGlvbgpraW5kIGlzIHBlbmRpbmc7IHJlc3VibWl0dGluZyBhZnRlciBleGVjdXRpb24vY2FuY2VsbGF0aW9uCnJlc3RhcnRzIHRoZSBjbG9jay4KQHBhcmFtIGVudiBUaGUgU29yb2JhbiBlbnZpcm9ubWVudC4KQHBhcmFtIHN1Ym1pdHRlciBUaGUgYWRtaW4gcHJvcG9zaW5nIHRoZSBhY3Rpb24uCkBwYXJhbSBhY3Rpb24gVGhlIHByaXZpbGVnZWQgYWN0aW9uIHRvIHNjaGVkdWxlLgpAcmV0dXJuIFRoZSB1bml4IHRpbWVzdGFtcCBhdCB3aGljaCB0aGUgYWN0aW9uIGJlY29tZXMgZXhlY3V0YWJsZS4AAAAAGHByb3Bvc2VfcHJpdmlsZWdlX2FjdGlvbgAAAAIAAAAAAAAACXN1Ym1pdHRlcgAAAAAAABMAAAAAAAAABmFjdGlvbgAAAAAH0AAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAAQAAA+kAAAAGAAAH0AAAAApUb2tlbkVycm9yAAA=", @@ -1389,16 +1497,18 @@ export class Client extends ContractClient { "AAAAAQAAAAAAAAAAAAAAD1JhdGVMaW1pdENvbmZpZwAAAAACAAAAAAAAAAVsaW1pdAAAAAAAAAYAAAAAAAAADndpbmRvd19zZWNvbmRzAAAAAAAG", "AAAAAAAAACtTZXQgZ2xvYmFsIHJhdGUgbGltaXQgZm9yIGFuIG9wZXJhdGlvbiB0eXBlAAAAABVzZXRfZ2xvYmFsX3JhdGVfbGltaXQAAAAAAAAEAAAAAAAAAAZjYWxsZXIAAAAAABMAAAAAAAAADm9wZXJhdGlvbl90eXBlAAAAAAAQAAAAAAAAAAVsaW1pdAAAAAAAAAYAAAAAAAAADndpbmRvd19zZWNvbmRzAAAAAAAGAAAAAA==", "AAAAAAAAADBTZXQgcGVyLWFkZHJlc3MgcmF0ZSBsaW1pdCBmb3IgYW4gb3BlcmF0aW9uIHR5cGUAAAAWc2V0X2FkZHJlc3NfcmF0ZV9saW1pdAAAAAAABQAAAAAAAAAGY2FsbGVyAAAAAAATAAAAAAAAAAdhZGRyZXNzAAAAABMAAAAAAAAADm9wZXJhdGlvbl90eXBlAAAAAAAQAAAAAAAAAAVsaW1pdAAAAAAAAAYAAAAAAAAADndpbmRvd19zZWNvbmRzAAAAAAAGAAAAAA==", - "AAAAAgAAAbFTdG9yYWdlIGtleXMgZm9yIHRoZSBhY2Nlc3MtY29udHJvbCBsYXllci4KCmAjW2NvbnRyYWN0dHlwZV1gIGRlcml2ZXMgYSBkaXN0aW5jdCBsZWRnZXIga2V5IGZvciBldmVyeSB2YXJpYW50IChhbmQsCmZvciBgUm9sZShSb2xlLCBBZGRyZXNzKWAsIGZvciBldmVyeSBgKFJvbGUsIEFkZHJlc3MpYCBwYWlyKSwgc28gZW50cmllcwpuZXZlciBjb2xsaWRlIHdpdGggZWFjaCBvdGhlciBvciB3aXRoIHRoZSBvdGhlciB2YXJpYW50cyBiZWxvdy4KCkB0aXRsZSBBZG1pbktleQpAbm90aWNlIEVudW1lcmF0ZXMgdGhlIHN0b3JhZ2Uga2V5cyB1c2VkIGJ5IHRoZSBhY2Nlc3MtY29udHJvbCBsYXllci4KQGRldiBFYWNoIHZhcmlhbnQgbWFwcyB0byBhIGRpc3RpbmN0IGxlZGdlciBzbG90OyBhcHBlbmQgbmV3IHZhcmlhbnRzIHJhdGhlciB0aGFuIHJlb3JkZXJpbmcuAAAAAAAAAAAAAAhBZG1pbktleQAAAA8AAAAAAAAAOVRoZSBzaW5ndWxhciBjb250cmFjdCBhZG1pbiBhZGRyZXNzLCBzZXQgdmlhIGBzZXRfYWRtaW5gLgAAAAAAAAVBZG1pbgAAAAAAAAEAAAEkTGVnYWN5IHBlci1yb2xlIG1lbWJlcnNoaXAgZmxhZzogbWFwcyBhIGAoUm9sZSwgQWRkcmVzcylgIHBhaXIgdG8gYHRydWVgCndoZW4gYGFkZHJlc3NgIGhlbGQgYHJvbGVgLiBTdXBlcnNlZGVkIGJ5IFtgQWRtaW5LZXk6OlJvbGVNYXNrYF07IGtlcHQgc28KcHJldmlvdXNseSBwZXJzaXN0ZWQga2V5cyBrZWVwIGRlY29kaW5nLiBOZXcgd3JpdGVzIGdvIHRvIHRoZSBtYXNrLCBhbmQKbGVnYWN5IGVudHJpZXMgZm9yIGFuIGFkZHJlc3MgYXJlIHJlbW92ZWQgb25jZSBpdHMgbWFzayBpcyBmaXJzdCB3cml0dGVuLgAAAARSb2xlAAAAAgAAB9AAAAAEUm9sZQAAABMAAAABAAAAfE1hcHMgYW4gYChBZGRyZXNzLCBSb2xlKWAgcGFpciB0byBgdHJ1ZWAgd2hlbiBgYWRkcmVzc2AgaG9sZHMgYHJvbGVgLgpUaGlzIGlzIHRoZSBBZGRyZXNzLXRvLVJvbGUgbWFwcGluZyBzdG9yYWdlIHN0cnVjdHVyZS4AAAALQWRkcmVzc1JvbGUAAAAAAgAAABMAAAfQAAAABFJvbGUAAAAAAAAAOU11bHRpLXNpZyBhZG1pbiBwb29sIGFkZHJlc3Nlcywgc2V0IHZpYSBgc2V0X2FkbWluX3Bvb2xgLgAAAAAAAAlBZG1pblBvb2wAAAAAAAAAAAAANU11bHRpLXNpZyBhcHByb3ZhbCB0aHJlc2hvbGQsIHNldCBhbG9uZ3NpZGUgdGhlIHBvb2wuAAAAAAAACVRocmVzaG9sZAAAAAAAAAEAAAAvR292ZXJuYW5jZSBwcm9wb3NhbCBkYXRhLCBrZXllZCBieSBwcm9wb3NhbCBJRC4AAAAACFByb3Bvc2FsAAAAAQAAAAYAAAAAAAAAK0F1dG8taW5jcmVtZW50aW5nIGNvdW50ZXIgZm9yIHByb3Bvc2FsIElEcy4AAAAAEVByb3Bvc2FsSWRDb3VudGVyAAAAAAAAAQAAAOpNYXBzIGEgcXVvcmF0ZSBwcm9wb3NhbCBJRCB0byB0aGUgdW5peCB0aW1lc3RhbXAgKHNlY29uZHMpIGF0IHdoaWNoIGl0cwptYW5kYXRvcnkgdGltZWxvY2sgZXhwaXJlcyBhbmQgZXhlY3V0aW9uIG1heSBwcm9jZWVkLiBSZWNvcmRlZCBvbmNlLAp3aGVuIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgZmlyc3QgbWV0OyBhYnNlbnQgd2hpbGUgdGhlIHByb3Bvc2FsIGlzCnN0aWxsIHNob3J0IG9mIHF1b3J1bS4AAAAAABBQcm9wb3NhbFRpbWVsb2NrAAAAAQAAAAYAAAABAAAARlN1cGVyLWFkbWluIG1hcHBpbmcgcG9wdWxhdGVkIGJ5IGBtaWdyYXRlX2FkbWluYCBmb3IgbGVnYWN5IGNvbnRyYWN0cy4AAAAAAApTdXBlckFkbWluAAAAAAABAAAAEwAAAAEAAAE/TXVsdGktc2lnIFdBU00gdXBncmFkZSBwcm9wb3NhbCBzdGF0ZSwga2V5ZWQgYnkgdXBncmFkZSBwcm9wb3NhbCBJRC4KTGl2ZXMgaW4gYHBlcnNpc3RlbnQoKWAgKHVubGlrZSBbYEFkbWluS2V5OjpQcm9wb3NhbGBdKSBzbyBlYWNoIHByb3Bvc2FsCmNhcnJpZXMgaXRzIG93biBUVEwgaW5zdGVhZCBvZiByaWRpbmcgdGhlIHNoYXJlZCBpbnN0YW5jZSBUVEwsIGFuZCBzbyBhCmdyb3dpbmcgc2V0IG9mIHByb3Bvc2FscyBkb2VzIG5vdCBpbmZsYXRlIHRoZSBpbnN0YW5jZSBlbnRyeSB0aGF0IGV2ZXJ5Cmludm9jYXRpb24gbG9hZHMgYW5kIHdyaXRlcyBiYWNrLgAAAAAPVXBncmFkZVByb3Bvc2FsAAAAAAEAAAAGAAAAAAAAAIxBdXRvLWluY3JlbWVudGluZyBjb3VudGVyIGZvciB1cGdyYWRlIHByb3Bvc2FsIElEcy4gRGlzdGluY3QgZnJvbQpbYEFkbWluS2V5OjpQcm9wb3NhbElkQ291bnRlcmBdLCBzbyB0aGUgdHdvIGZsb3dzIG5ldmVyIHNoYXJlIGFuIElEIHNwYWNlLgAAABhVcGdyYWRlUHJvcG9zYWxJZENvdW50ZXIAAAABAAAAzlRoZSBsaXZlIHByaXZpbGVnZWQtYWN0aW9uIHByb3Bvc2FsIGZvciBhIGdpdmVuIGFjdGlvbiBraW5kICgjOTE0KS4KT25lIGVudHJ5IHBlciBhY3Rpb24gKGZlZSBjb25maWcsIG93bmVyc2hpcCB0cmFuc2ZlcikgaW4gYHBlcnNpc3RlbnQoKWAKc3RvcmFnZSBzbyBhIHBlbmRpbmcgcHJvcG9zYWwncyBjbG9jayBzdXJ2aXZlcyBpbnN0YW5jZSBhcmNoaXZpbmcuAAAAAAARUHJpdmlsZWdlUHJvcG9zYWwAAAAAAAABAAAH0AAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAAQAAAdVNYXBzIGFuIGFkZHJlc3MgdG8gaXRzIHJvbGUgYml0bWFzazogYml0IGBpYCBpcyBzZXQgd2hlbiB0aGUgYWRkcmVzcwpob2xkcyB0aGUgcm9sZSB3aG9zZSBiaXQgaXMgYDEgPDwgaWAgKHNlZSBbYFJPTEVfQklUX0FETUlOYF0gYW5kCmZyaWVuZHMpLiBPbmUgbGVkZ2VyIGVudHJ5IHBlciBhZGRyZXNzOyBncmFudHMgYW5kIHJldm9rZXMgYXJlIGEKbG9hZCAvIGJpdHdpc2UtT1IgLyBzdG9yZSBvbiB0aGlzIGVudHJ5LgoKU3VwZXJzZWRlcyBbYEFkbWluS2V5OjpSb2xlKFJvbGUsIEFkZHJlc3MpYF0sIHdoaWNoIGlzIHJldGFpbmVkIG9ubHkgc28KcHJldmlvdXNseSBwZXJzaXN0ZWQga2V5cyBrZWVwIGRlY29kaW5nOyBlbnRyaWVzIHVuZGVyIHRoZSBsZWdhY3kga2V5CmFyZSBtaWdyYXRlZCBpbnRvIHRoZSBtYXNrIG9uIGZpcnN0IHdyaXRlIGFuZCBhcmUgc3RpbGwgcmVhZCBhcyBhCmZhbGxiYWNrIHVudGlsIHRoZW4uAAAAAAAACFJvbGVNYXNrAAAAAQAAABMAAAABAAAA4U1hcmtzIGEgV0FTTSBoYXNoIGFzIGluc3RhbGxlZCBvbiB0aGUgbGVkZ2VyICh1cGxvYWRlZCB2aWEKYGVudi5kZXBsb3llcigpLnVwbG9hZF9jb250cmFjdF93YXNtYCBhbmQgcmVnaXN0ZXJlZCBieSBhbiBhZG1pbiksCm1ha2luZyBpdCBlbGlnaWJsZSB0byBiZSByZWZlcmVuY2VkIGJ5IGFuIHVwZ3JhZGUgcHJvcG9zYWwuIENoZWNrZWQgYnkKW2ByZXF1aXJlX3ZhbGlkX3dhc21faGFzaGBdLgAAAAAAABFJbnN0YWxsZWRXYXNtSGFzaAAAAAAAAAEAAAPuAAAAIAAAAAAAAAENTGVkZ2VyIHNlcXVlbmNlIHJlY29yZGVkIHdoZW4gdGhpcyBjb250cmFjdCBleHRlbmRzIGluc3RhbmNlIFRUTC4KR3Vlc3QgV0FTTSBvbiBzb3JvYmFuLXNkayAyMi4wLjExIGNhbm5vdCByZWFkIHRoZSBob3N0IGluc3RhbmNlIFRUTCwgc28KW2BnZXRfaW5zdGFuY2VfdHRsYF0gZGVyaXZlcyBhIG5vbi1uZWdhdGl2ZSByZW1haW5pbmcgbGlmZXRpbWUgZnJvbSB0aGlzCnZhbHVlLiBJdCBpcyBub3Qgb25lIG9mIHRoZSBmaXZlIG1vbml0b3JlZCBzaW5nbGV0b24ga2V5cy4AAAAAAAARSW5zdGFuY2VMaXZlVW50aWwAAAA=", - "AAAABAAAAOVFcnJvcnMgcmV0dXJuZWQgYnkgdGhlIGFkbWluIGFjY2Vzcy1jb250cm9sIG1vZHVsZS4KCkB0aXRsZSBBZG1pbkVycm9yCkBub3RpY2UgRW51bWVyYXRlcyB0aGUgZXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgdGhlIGFkbWluIGFjY2Vzcy1jb250cm9sIG1vZHVsZS4KQGRldiBEaXNjcmltaW5hbnRzIGFyZSBBQkktc3RhYmxlOyBhcHBlbmQgbmV3IHZhcmlhbnRzIHJhdGhlciB0aGFuIHJlb3JkZXJpbmcuAAAAAAAAAAAAAApBZG1pbkVycm9yAAAAAAAdAAAAQ1VudXNlZDsga2VwdCBmb3IgQUJJIHN0YWJpbGl0eS4gUHJlZmVyIFtgQWRtaW5FcnJvcjo6Um9sZU5vdEhlbGRgXS4AAAAADlJvbGVOb3RHcmFudGVkAAAAAAABAAAAVUFuIGFkZHJlc3MgZG9lcyBub3QgaG9sZCB0aGUgcmVxdWlyZWQgcm9sZSAoZS5nLiBgcmV2b2tlX3JvbGVgIGNhbGxlZCBvbiBub24taG9sZGVyKS4AAAAAAAALUm9sZU5vdEhlbGQAAAAAAgAAAEhgcmVxdWlyZV9yb2xlX2d1YXJkYCBmYWlsZWQ6IHRoZSBjYWxsZXIgaXMgbm90IGF1dGhvcml6ZWQgZm9yIHRoaXMgcm9sZS4AAAAQVW5hdXRob3JpemVkUm9sZQAAAAMAAAA7QW4gb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQgd2l0aCB0aGUgY2Fub25pY2FsIHplcm8gYWRkcmVzcy4AAAAADkludmFsaWRBZGRyZXNzAAAAAAAEAAAAQkEgcm9sZSB2YWx1ZSB0aGF0IGlzIG5vdCByZWNvZ25pemVkIGJ5IHRoaXMgY29udHJhY3Qgd2FzIHN1cHBsaWVkLgAAAAAAC0ludmFsaWRSb2xlAAAAAAUAAABXVGhlIGNvbnRyYWN0IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQ7IGNhbGxpbmcgYGluaXRfc3RvcmFnZWAgYWdhaW4KaXMgbm90IGFsbG93ZWQuAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAAAAYAAAA+VGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyB6ZXJvIG9yIGV4Y2VlZHMgdGhlIGFkbWluLXBvb2wgc2l6ZS4AAAAAABBJbnZhbGlkVGhyZXNob2xkAAAABwAAADFUaGUgcmVxdWVzdGVkIGdvdmVybmFuY2UgcHJvcG9zYWwgZG9lcyBub3QgZXhpc3QuAAAAAAAAEFByb3Bvc2FsTm90Rm91bmQAAAAIAAAAPFRoZSByZXF1ZXN0ZWQgZ292ZXJuYW5jZSBwcm9wb3NhbCBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkLgAAABdQcm9wb3NhbEFscmVhZHlFeGVjdXRlZAAAAAAJAAAAQVRoZSBhZG1pbiBoYXMgYWxyZWFkeSBhcHByb3ZlZCB0aGUgcmVxdWVzdGVkIGdvdmVybmFuY2UgcHJvcG9zYWwuAAAAAAAAF1Byb3Bvc2FsQWxyZWFkeUFwcHJvdmVkAAAAAAoAAAA/VGhlIGdvdmVybmFuY2UgcHJvcG9zYWwgaGFzIG5vdCByZWFjaGVkIGl0cyBhcHByb3ZhbCB0aHJlc2hvbGQuAAAAAA9UaHJlc2hvbGROb3RNZXQAAAAACwAAAEJUaGUgcHJvcG9zYWwgaGFzIG5vdCBnYXRoZXJlZCBlbm91Z2ggYXBwcm92YWxzIHRvIG1lZXQgdGhlIHF1b3J1bS4AAAAAAAxRdW9ydW1Ob3RNZXQAAAAMAAAAg1RoZSBtYW5kYXRvcnkgdGltZWxvY2sgZGVsYXkgaGFzIG5vdCBlbGFwc2VkIHlldDogdGhlIGN1cnJlbnQgbGVkZ2VyCnRpbWVzdGFtcCBpcyBzdGlsbCBiZWZvcmUgdGhlIHByb3Bvc2FsJ3MgcmVjb3JkZWQgdW5sb2NrIHRpbWUuAAAAAA5UaW1lbG9ja0FjdGl2ZQAAAAAADQAAAGlBIHN1cHBsaWVkIFdBU00gaGFzaCBmYWlsZWQgW2ByZXF1aXJlX3ZhbGlkX3dhc21faGFzaGBdOiBpdCBpcyBub3QKcmVnaXN0ZXJlZCBhcyBpbnN0YWxsZWQgb24gdGhlIGxlZGdlci4AAAAAAAAPSW52YWxpZFdhc21IYXNoAAAAAA4AAAB0YGNhbmNlbF9wcm9wb3NhbGAgd2FzIGNhbGxlZCBieSBhbiBhZGRyZXNzIG90aGVyIHRoYW4gdGhlCltgVXBncmFkZVByb3Bvc2FsOjpwcm9wb3NlcmBdIHRoYXQgc3VibWl0dGVkIHRoZSBwcm9wb3NhbC4AAAALTm90UHJvcG9zZXIAAAAADwAAAKpgY2FuY2VsX3Byb3Bvc2FsYCB3YXMgY2FsbGVkIG9uIGEgcHJvcG9zYWwgd2hvc2Ugc3RhdHVzIGlzIGFscmVhZHkKdGVybWluYWwgYW5kIG5vdCBgRXhlY3V0ZWRgIChpLmUuIGFscmVhZHkgYENhbmNlbGxlZGAgb3IgYEV4cGlyZWRgKTsKdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHdpdGhkcmF3LgAAAAAAFlByb3Bvc2FsTm90Q2FuY2VsbGFibGUAAAAAABAAAAA8QSBXQVNNIHVwZ3JhZGUgcHJvcG9zYWwgd2l0aCB0aGUgc3VwcGxpZWQgSUQgZG9lcyBub3QgZXhpc3QuAAAAF1VwZ3JhZGVQcm9wb3NhbE5vdEZvdW5kAAAAABEAAACKVGhlIHByb3Bvc2FsIGlzIG5vdCBpbiBhIHN0YXRlIHRoYXQgYWNjZXB0cyB2b3RlcyAoaXQgaXMgYEFwcHJvdmVkYCwKYEV4ZWN1dGVkYCwgYENhbmNlbGxlZGAsIGBFeHBpcmVkYCwgb3IgaXRzIHZvdGluZyB3aW5kb3cgaGFzIGNsb3NlZCkuAAAAAAASUHJvcG9zYWxOb3RQZW5kaW5nAAAAAAASAAAAOFRoZSBjYWxsZXIgYWxyZWFkeSBjYXN0IGEgdm90ZSBvbiB0aGlzIHVwZ3JhZGUgcHJvcG9zYWwuAAAADUR1cGxpY2F0ZVZvdGUAAAAAAAATAAAAuUdlbmVyYWwgYXV0aG9yaXphdGlvbiBmYWlsdXJlOiB0aGUgY2FsbGVyIGlzIG5vdCBwZXJtaXR0ZWQgdG8gcGVyZm9ybQp0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi4gRGlzdGluY3QgZnJvbSBbYEFkbWluRXJyb3I6OlVuYXV0aG9yaXplZFJvbGVgXSwKd2hpY2ggaXMgc3BlY2lmaWMgdG8gYSByb2xlLWd1YXJkIGZhaWx1cmUuAAAAAAAADFVuYXV0aG9yaXplZAAAABQAAABcYGV4ZWN1dGVfdXBncmFkZV9iYXRjaGAgd2FzIGNhbGxlZCB3aXRoIHByb3Bvc2FsIElEIGFuZCBXQVNNIGhhc2ggdmVjdG9ycwpvZiB1bmVxdWFsIGxlbmd0aC4AAAATQmF0Y2hMZW5ndGhNaXNtYXRjaAAAAAAVAAAAP1RoZSB0YXJnZXQgYWRkcmVzcyBhbHJlYWR5IGhvbGRzIHRoZSByb2xlIGJlaW5nIGdyYW50ZWQgKCM3NjgpLgAAAAASUm9sZUFscmVhZHlHcmFudGVkAAAAAAAWAAAAiFRoZSBwcm9wb3NhbCdzIGV4cGlyeSBsZWRnZXIgaGFzIHBhc3NlZDogaXQgY2FuIG5vIGxvbmdlciBleGVjdXRlLgpQcm9wb3NhbHMgbGl2ZSBmb3IgW2BQUk9QT1NBTF9FWFBJUllfTEVER0VSU2BdIGxlZGdlcnMgZnJvbSBjcmVhdGlvbi4AAAAPUHJvcG9zYWxFeHBpcmVkAAAAABcAAABxVGhlIHByb3Bvc2FsIHdhcyB3aXRoZHJhd24gYnkgaXRzIGNyZWF0b3IgdmlhIGBjYW5jZWxfbGVnYWN5X3Byb3Bvc2FsYAphbmQgY2FuIG5vIGxvbmdlciBiZSBhcHByb3ZlZCBvciBleGVjdXRlZC4AAAAAAAARUHJvcG9zYWxDYW5jZWxsZWQAAAAAAAAYAAAAe0EgcHJpdmlsZWdlZCBhY3Rpb24gKGZlZS1jb25maWcgY2hhbmdlLCBvd25lcnNoaXAgdHJhbnNmZXIpIHdhcwpwcm9wb3NlZCBidXQgaXRzIHRpbWVsb2NrIGRlbGF5IGhhcyBub3QgZWxhcHNlZCB5ZXQgKCM5MTQpLgAAAAAXUHJpdmlsZWdlVGltZWxvY2tBY3RpdmUAAAAAGQAAAGVUaGUgcHJpdmlsZWdlZC1hY3Rpb24gcHJvcG9zYWwgZG9lcyBub3QgZXhpc3Qgb3Igd2FzIGFscmVhZHkgY29uc3VtZWQKKGV4ZWN1dGVkIG9yIGNhbmNlbGxlZCkgKCM5MTQpLgAAAAAAABlQcml2aWxlZ2VQcm9wb3NhbE5vdEZvdW5kAAAAAAAAGgAAAHBUaGUgcHJpdmlsZWdlZC1hY3Rpb24gcHJvcG9zYWwgd2FzIHN1Ym1pdHRlZCBieSBhIGRpZmZlcmVudCBjYWxsZXIKdGhhbiB0aGUgb25lIG5vdyB0cnlpbmcgdG8gZXhlY3V0ZSBpdCAoIzkxNCkuAAAAGVByaXZpbGVnZVByb3Bvc2FsTm90T3duZXIAAAAAAAAbAAAARmByZW5vdW5jZV9yb2xlYCB3YXMgY2FsbGVkIGZvciBhIHJvbGUgdGhlIGNhbGxlciBkb2VzIG5vdCBob2xkICgjOTE1KS4AAAAAABZSb2xlTm90SGVsZEZvclJlbm91bmNlAAAAAAAcAAAAR1RoZSBsYXN0IFN1cGVyQWRtaW4gdHJpZWQgdG8gcmVub3VuY2U7IGF0IGxlYXN0IG9uZSBtdXN0IHJlbWFpbiAoIzkxNSkuAAAAAA5MYXN0U3VwZXJBZG1pbgAAAAAAHQ==", + "AAAAAgAAAbFTdG9yYWdlIGtleXMgZm9yIHRoZSBhY2Nlc3MtY29udHJvbCBsYXllci4KCmAjW2NvbnRyYWN0dHlwZV1gIGRlcml2ZXMgYSBkaXN0aW5jdCBsZWRnZXIga2V5IGZvciBldmVyeSB2YXJpYW50IChhbmQsCmZvciBgUm9sZShSb2xlLCBBZGRyZXNzKWAsIGZvciBldmVyeSBgKFJvbGUsIEFkZHJlc3MpYCBwYWlyKSwgc28gZW50cmllcwpuZXZlciBjb2xsaWRlIHdpdGggZWFjaCBvdGhlciBvciB3aXRoIHRoZSBvdGhlciB2YXJpYW50cyBiZWxvdy4KCkB0aXRsZSBBZG1pbktleQpAbm90aWNlIEVudW1lcmF0ZXMgdGhlIHN0b3JhZ2Uga2V5cyB1c2VkIGJ5IHRoZSBhY2Nlc3MtY29udHJvbCBsYXllci4KQGRldiBFYWNoIHZhcmlhbnQgbWFwcyB0byBhIGRpc3RpbmN0IGxlZGdlciBzbG90OyBhcHBlbmQgbmV3IHZhcmlhbnRzIHJhdGhlciB0aGFuIHJlb3JkZXJpbmcuAAAAAAAAAAAAAAhBZG1pbktleQAAABAAAAAAAAAAOVRoZSBzaW5ndWxhciBjb250cmFjdCBhZG1pbiBhZGRyZXNzLCBzZXQgdmlhIGBzZXRfYWRtaW5gLgAAAAAAAAVBZG1pbgAAAAAAAAEAAAEkTGVnYWN5IHBlci1yb2xlIG1lbWJlcnNoaXAgZmxhZzogbWFwcyBhIGAoUm9sZSwgQWRkcmVzcylgIHBhaXIgdG8gYHRydWVgCndoZW4gYGFkZHJlc3NgIGhlbGQgYHJvbGVgLiBTdXBlcnNlZGVkIGJ5IFtgQWRtaW5LZXk6OlJvbGVNYXNrYF07IGtlcHQgc28KcHJldmlvdXNseSBwZXJzaXN0ZWQga2V5cyBrZWVwIGRlY29kaW5nLiBOZXcgd3JpdGVzIGdvIHRvIHRoZSBtYXNrLCBhbmQKbGVnYWN5IGVudHJpZXMgZm9yIGFuIGFkZHJlc3MgYXJlIHJlbW92ZWQgb25jZSBpdHMgbWFzayBpcyBmaXJzdCB3cml0dGVuLgAAAARSb2xlAAAAAgAAB9AAAAAEUm9sZQAAABMAAAABAAAAfE1hcHMgYW4gYChBZGRyZXNzLCBSb2xlKWAgcGFpciB0byBgdHJ1ZWAgd2hlbiBgYWRkcmVzc2AgaG9sZHMgYHJvbGVgLgpUaGlzIGlzIHRoZSBBZGRyZXNzLXRvLVJvbGUgbWFwcGluZyBzdG9yYWdlIHN0cnVjdHVyZS4AAAALQWRkcmVzc1JvbGUAAAAAAgAAABMAAAfQAAAABFJvbGUAAAAAAAAAOU11bHRpLXNpZyBhZG1pbiBwb29sIGFkZHJlc3Nlcywgc2V0IHZpYSBgc2V0X2FkbWluX3Bvb2xgLgAAAAAAAAlBZG1pblBvb2wAAAAAAAAAAAAANU11bHRpLXNpZyBhcHByb3ZhbCB0aHJlc2hvbGQsIHNldCBhbG9uZ3NpZGUgdGhlIHBvb2wuAAAAAAAACVRocmVzaG9sZAAAAAAAAAEAAAAvR292ZXJuYW5jZSBwcm9wb3NhbCBkYXRhLCBrZXllZCBieSBwcm9wb3NhbCBJRC4AAAAACFByb3Bvc2FsAAAAAQAAAAYAAAAAAAAAK0F1dG8taW5jcmVtZW50aW5nIGNvdW50ZXIgZm9yIHByb3Bvc2FsIElEcy4AAAAAEVByb3Bvc2FsSWRDb3VudGVyAAAAAAAAAQAAAOpNYXBzIGEgcXVvcmF0ZSBwcm9wb3NhbCBJRCB0byB0aGUgdW5peCB0aW1lc3RhbXAgKHNlY29uZHMpIGF0IHdoaWNoIGl0cwptYW5kYXRvcnkgdGltZWxvY2sgZXhwaXJlcyBhbmQgZXhlY3V0aW9uIG1heSBwcm9jZWVkLiBSZWNvcmRlZCBvbmNlLAp3aGVuIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXMgZmlyc3QgbWV0OyBhYnNlbnQgd2hpbGUgdGhlIHByb3Bvc2FsIGlzCnN0aWxsIHNob3J0IG9mIHF1b3J1bS4AAAAAABBQcm9wb3NhbFRpbWVsb2NrAAAAAQAAAAYAAAABAAAARlN1cGVyLWFkbWluIG1hcHBpbmcgcG9wdWxhdGVkIGJ5IGBtaWdyYXRlX2FkbWluYCBmb3IgbGVnYWN5IGNvbnRyYWN0cy4AAAAAAApTdXBlckFkbWluAAAAAAABAAAAEwAAAAEAAAE/TXVsdGktc2lnIFdBU00gdXBncmFkZSBwcm9wb3NhbCBzdGF0ZSwga2V5ZWQgYnkgdXBncmFkZSBwcm9wb3NhbCBJRC4KTGl2ZXMgaW4gYHBlcnNpc3RlbnQoKWAgKHVubGlrZSBbYEFkbWluS2V5OjpQcm9wb3NhbGBdKSBzbyBlYWNoIHByb3Bvc2FsCmNhcnJpZXMgaXRzIG93biBUVEwgaW5zdGVhZCBvZiByaWRpbmcgdGhlIHNoYXJlZCBpbnN0YW5jZSBUVEwsIGFuZCBzbyBhCmdyb3dpbmcgc2V0IG9mIHByb3Bvc2FscyBkb2VzIG5vdCBpbmZsYXRlIHRoZSBpbnN0YW5jZSBlbnRyeSB0aGF0IGV2ZXJ5Cmludm9jYXRpb24gbG9hZHMgYW5kIHdyaXRlcyBiYWNrLgAAAAAPVXBncmFkZVByb3Bvc2FsAAAAAAEAAAAGAAAAAAAAAIxBdXRvLWluY3JlbWVudGluZyBjb3VudGVyIGZvciB1cGdyYWRlIHByb3Bvc2FsIElEcy4gRGlzdGluY3QgZnJvbQpbYEFkbWluS2V5OjpQcm9wb3NhbElkQ291bnRlcmBdLCBzbyB0aGUgdHdvIGZsb3dzIG5ldmVyIHNoYXJlIGFuIElEIHNwYWNlLgAAABhVcGdyYWRlUHJvcG9zYWxJZENvdW50ZXIAAAABAAAAzlRoZSBsaXZlIHByaXZpbGVnZWQtYWN0aW9uIHByb3Bvc2FsIGZvciBhIGdpdmVuIGFjdGlvbiBraW5kICgjOTE0KS4KT25lIGVudHJ5IHBlciBhY3Rpb24gKGZlZSBjb25maWcsIG93bmVyc2hpcCB0cmFuc2ZlcikgaW4gYHBlcnNpc3RlbnQoKWAKc3RvcmFnZSBzbyBhIHBlbmRpbmcgcHJvcG9zYWwncyBjbG9jayBzdXJ2aXZlcyBpbnN0YW5jZSBhcmNoaXZpbmcuAAAAAAARUHJpdmlsZWdlUHJvcG9zYWwAAAAAAAABAAAH0AAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAAQAAAdVNYXBzIGFuIGFkZHJlc3MgdG8gaXRzIHJvbGUgYml0bWFzazogYml0IGBpYCBpcyBzZXQgd2hlbiB0aGUgYWRkcmVzcwpob2xkcyB0aGUgcm9sZSB3aG9zZSBiaXQgaXMgYDEgPDwgaWAgKHNlZSBbYFJPTEVfQklUX0FETUlOYF0gYW5kCmZyaWVuZHMpLiBPbmUgbGVkZ2VyIGVudHJ5IHBlciBhZGRyZXNzOyBncmFudHMgYW5kIHJldm9rZXMgYXJlIGEKbG9hZCAvIGJpdHdpc2UtT1IgLyBzdG9yZSBvbiB0aGlzIGVudHJ5LgoKU3VwZXJzZWRlcyBbYEFkbWluS2V5OjpSb2xlKFJvbGUsIEFkZHJlc3MpYF0sIHdoaWNoIGlzIHJldGFpbmVkIG9ubHkgc28KcHJldmlvdXNseSBwZXJzaXN0ZWQga2V5cyBrZWVwIGRlY29kaW5nOyBlbnRyaWVzIHVuZGVyIHRoZSBsZWdhY3kga2V5CmFyZSBtaWdyYXRlZCBpbnRvIHRoZSBtYXNrIG9uIGZpcnN0IHdyaXRlIGFuZCBhcmUgc3RpbGwgcmVhZCBhcyBhCmZhbGxiYWNrIHVudGlsIHRoZW4uAAAAAAAACFJvbGVNYXNrAAAAAQAAABMAAAABAAAA4U1hcmtzIGEgV0FTTSBoYXNoIGFzIGluc3RhbGxlZCBvbiB0aGUgbGVkZ2VyICh1cGxvYWRlZCB2aWEKYGVudi5kZXBsb3llcigpLnVwbG9hZF9jb250cmFjdF93YXNtYCBhbmQgcmVnaXN0ZXJlZCBieSBhbiBhZG1pbiksCm1ha2luZyBpdCBlbGlnaWJsZSB0byBiZSByZWZlcmVuY2VkIGJ5IGFuIHVwZ3JhZGUgcHJvcG9zYWwuIENoZWNrZWQgYnkKW2ByZXF1aXJlX3ZhbGlkX3dhc21faGFzaGBdLgAAAAAAABFJbnN0YWxsZWRXYXNtSGFzaAAAAAAAAAEAAAPuAAAAIAAAAAAAAAENTGVkZ2VyIHNlcXVlbmNlIHJlY29yZGVkIHdoZW4gdGhpcyBjb250cmFjdCBleHRlbmRzIGluc3RhbmNlIFRUTC4KR3Vlc3QgV0FTTSBvbiBzb3JvYmFuLXNkayAyMi4wLjExIGNhbm5vdCByZWFkIHRoZSBob3N0IGluc3RhbmNlIFRUTCwgc28KW2BnZXRfaW5zdGFuY2VfdHRsYF0gZGVyaXZlcyBhIG5vbi1uZWdhdGl2ZSByZW1haW5pbmcgbGlmZXRpbWUgZnJvbSB0aGlzCnZhbHVlLiBJdCBpcyBub3Qgb25lIG9mIHRoZSBmaXZlIG1vbml0b3JlZCBzaW5nbGV0b24ga2V5cy4AAAAAAAARSW5zdGFuY2VMaXZlVW50aWwAAAAAAAABAAAAhFJvbGUgZ3JhbnQgYWN0aW9uIGF0dGFjaGVkIHRvIGEgbGVnYWN5IHByb3Bvc2FsLCBrZXllZCBieSBwcm9wb3NhbCBJRC4KQXBwZW5kZWQgdG8gcHJlc2VydmUgZXZlcnkgZXhpc3Rpbmcgc3RvcmFnZS1rZXkgZGlzY3JpbWluYW50LgAAABFSb2xlR3JhbnRQcm9wb3NhbAAAAAAAAAEAAAAG", + "AAAABAAAAOVFcnJvcnMgcmV0dXJuZWQgYnkgdGhlIGFkbWluIGFjY2Vzcy1jb250cm9sIG1vZHVsZS4KCkB0aXRsZSBBZG1pbkVycm9yCkBub3RpY2UgRW51bWVyYXRlcyB0aGUgZXJyb3IgY29kZXMgcmV0dXJuZWQgYnkgdGhlIGFkbWluIGFjY2Vzcy1jb250cm9sIG1vZHVsZS4KQGRldiBEaXNjcmltaW5hbnRzIGFyZSBBQkktc3RhYmxlOyBhcHBlbmQgbmV3IHZhcmlhbnRzIHJhdGhlciB0aGFuIHJlb3JkZXJpbmcuAAAAAAAAAAAAAApBZG1pbkVycm9yAAAAAAAfAAAAQ1VudXNlZDsga2VwdCBmb3IgQUJJIHN0YWJpbGl0eS4gUHJlZmVyIFtgQWRtaW5FcnJvcjo6Um9sZU5vdEhlbGRgXS4AAAAADlJvbGVOb3RHcmFudGVkAAAAAAABAAAAVUFuIGFkZHJlc3MgZG9lcyBub3QgaG9sZCB0aGUgcmVxdWlyZWQgcm9sZSAoZS5nLiBgcmV2b2tlX3JvbGVgIGNhbGxlZCBvbiBub24taG9sZGVyKS4AAAAAAAALUm9sZU5vdEhlbGQAAAAAAgAAAEhgcmVxdWlyZV9yb2xlX2d1YXJkYCBmYWlsZWQ6IHRoZSBjYWxsZXIgaXMgbm90IGF1dGhvcml6ZWQgZm9yIHRoaXMgcm9sZS4AAAAQVW5hdXRob3JpemVkUm9sZQAAAAMAAAA7QW4gb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQgd2l0aCB0aGUgY2Fub25pY2FsIHplcm8gYWRkcmVzcy4AAAAADkludmFsaWRBZGRyZXNzAAAAAAAEAAAAQkEgcm9sZSB2YWx1ZSB0aGF0IGlzIG5vdCByZWNvZ25pemVkIGJ5IHRoaXMgY29udHJhY3Qgd2FzIHN1cHBsaWVkLgAAAAAAC0ludmFsaWRSb2xlAAAAAAUAAABXVGhlIGNvbnRyYWN0IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhbGl6ZWQ7IGNhbGxpbmcgYGluaXRfc3RvcmFnZWAgYWdhaW4KaXMgbm90IGFsbG93ZWQuAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAAAAYAAAA+VGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyB6ZXJvIG9yIGV4Y2VlZHMgdGhlIGFkbWluLXBvb2wgc2l6ZS4AAAAAABBJbnZhbGlkVGhyZXNob2xkAAAABwAAADFUaGUgcmVxdWVzdGVkIGdvdmVybmFuY2UgcHJvcG9zYWwgZG9lcyBub3QgZXhpc3QuAAAAAAAAEFByb3Bvc2FsTm90Rm91bmQAAAAIAAAAPFRoZSByZXF1ZXN0ZWQgZ292ZXJuYW5jZSBwcm9wb3NhbCBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkLgAAABdQcm9wb3NhbEFscmVhZHlFeGVjdXRlZAAAAAAJAAAAQVRoZSBhZG1pbiBoYXMgYWxyZWFkeSBhcHByb3ZlZCB0aGUgcmVxdWVzdGVkIGdvdmVybmFuY2UgcHJvcG9zYWwuAAAAAAAAF1Byb3Bvc2FsQWxyZWFkeUFwcHJvdmVkAAAAAAoAAAA/VGhlIGdvdmVybmFuY2UgcHJvcG9zYWwgaGFzIG5vdCByZWFjaGVkIGl0cyBhcHByb3ZhbCB0aHJlc2hvbGQuAAAAAA9UaHJlc2hvbGROb3RNZXQAAAAACwAAAEJUaGUgcHJvcG9zYWwgaGFzIG5vdCBnYXRoZXJlZCBlbm91Z2ggYXBwcm92YWxzIHRvIG1lZXQgdGhlIHF1b3J1bS4AAAAAAAxRdW9ydW1Ob3RNZXQAAAAMAAAAg1RoZSBtYW5kYXRvcnkgdGltZWxvY2sgZGVsYXkgaGFzIG5vdCBlbGFwc2VkIHlldDogdGhlIGN1cnJlbnQgbGVkZ2VyCnRpbWVzdGFtcCBpcyBzdGlsbCBiZWZvcmUgdGhlIHByb3Bvc2FsJ3MgcmVjb3JkZWQgdW5sb2NrIHRpbWUuAAAAAA5UaW1lbG9ja0FjdGl2ZQAAAAAADQAAAGlBIHN1cHBsaWVkIFdBU00gaGFzaCBmYWlsZWQgW2ByZXF1aXJlX3ZhbGlkX3dhc21faGFzaGBdOiBpdCBpcyBub3QKcmVnaXN0ZXJlZCBhcyBpbnN0YWxsZWQgb24gdGhlIGxlZGdlci4AAAAAAAAPSW52YWxpZFdhc21IYXNoAAAAAA4AAAB0YGNhbmNlbF9wcm9wb3NhbGAgd2FzIGNhbGxlZCBieSBhbiBhZGRyZXNzIG90aGVyIHRoYW4gdGhlCltgVXBncmFkZVByb3Bvc2FsOjpwcm9wb3NlcmBdIHRoYXQgc3VibWl0dGVkIHRoZSBwcm9wb3NhbC4AAAALTm90UHJvcG9zZXIAAAAADwAAAKpgY2FuY2VsX3Byb3Bvc2FsYCB3YXMgY2FsbGVkIG9uIGEgcHJvcG9zYWwgd2hvc2Ugc3RhdHVzIGlzIGFscmVhZHkKdGVybWluYWwgYW5kIG5vdCBgRXhlY3V0ZWRgIChpLmUuIGFscmVhZHkgYENhbmNlbGxlZGAgb3IgYEV4cGlyZWRgKTsKdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHdpdGhkcmF3LgAAAAAAFlByb3Bvc2FsTm90Q2FuY2VsbGFibGUAAAAAABAAAAA8QSBXQVNNIHVwZ3JhZGUgcHJvcG9zYWwgd2l0aCB0aGUgc3VwcGxpZWQgSUQgZG9lcyBub3QgZXhpc3QuAAAAF1VwZ3JhZGVQcm9wb3NhbE5vdEZvdW5kAAAAABEAAACKVGhlIHByb3Bvc2FsIGlzIG5vdCBpbiBhIHN0YXRlIHRoYXQgYWNjZXB0cyB2b3RlcyAoaXQgaXMgYEFwcHJvdmVkYCwKYEV4ZWN1dGVkYCwgYENhbmNlbGxlZGAsIGBFeHBpcmVkYCwgb3IgaXRzIHZvdGluZyB3aW5kb3cgaGFzIGNsb3NlZCkuAAAAAAASUHJvcG9zYWxOb3RQZW5kaW5nAAAAAAASAAAAOFRoZSBjYWxsZXIgYWxyZWFkeSBjYXN0IGEgdm90ZSBvbiB0aGlzIHVwZ3JhZGUgcHJvcG9zYWwuAAAADUR1cGxpY2F0ZVZvdGUAAAAAAAATAAAAuUdlbmVyYWwgYXV0aG9yaXphdGlvbiBmYWlsdXJlOiB0aGUgY2FsbGVyIGlzIG5vdCBwZXJtaXR0ZWQgdG8gcGVyZm9ybQp0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbi4gRGlzdGluY3QgZnJvbSBbYEFkbWluRXJyb3I6OlVuYXV0aG9yaXplZFJvbGVgXSwKd2hpY2ggaXMgc3BlY2lmaWMgdG8gYSByb2xlLWd1YXJkIGZhaWx1cmUuAAAAAAAADFVuYXV0aG9yaXplZAAAABQAAABcYGV4ZWN1dGVfdXBncmFkZV9iYXRjaGAgd2FzIGNhbGxlZCB3aXRoIHByb3Bvc2FsIElEIGFuZCBXQVNNIGhhc2ggdmVjdG9ycwpvZiB1bmVxdWFsIGxlbmd0aC4AAAATQmF0Y2hMZW5ndGhNaXNtYXRjaAAAAAAVAAAAP1RoZSB0YXJnZXQgYWRkcmVzcyBhbHJlYWR5IGhvbGRzIHRoZSByb2xlIGJlaW5nIGdyYW50ZWQgKCM3NjgpLgAAAAASUm9sZUFscmVhZHlHcmFudGVkAAAAAAAWAAAAiFRoZSBwcm9wb3NhbCdzIGV4cGlyeSBsZWRnZXIgaGFzIHBhc3NlZDogaXQgY2FuIG5vIGxvbmdlciBleGVjdXRlLgpQcm9wb3NhbHMgbGl2ZSBmb3IgW2BQUk9QT1NBTF9FWFBJUllfTEVER0VSU2BdIGxlZGdlcnMgZnJvbSBjcmVhdGlvbi4AAAAPUHJvcG9zYWxFeHBpcmVkAAAAABcAAABxVGhlIHByb3Bvc2FsIHdhcyB3aXRoZHJhd24gYnkgaXRzIGNyZWF0b3IgdmlhIGBjYW5jZWxfbGVnYWN5X3Byb3Bvc2FsYAphbmQgY2FuIG5vIGxvbmdlciBiZSBhcHByb3ZlZCBvciBleGVjdXRlZC4AAAAAAAARUHJvcG9zYWxDYW5jZWxsZWQAAAAAAAAYAAAAe0EgcHJpdmlsZWdlZCBhY3Rpb24gKGZlZS1jb25maWcgY2hhbmdlLCBvd25lcnNoaXAgdHJhbnNmZXIpIHdhcwpwcm9wb3NlZCBidXQgaXRzIHRpbWVsb2NrIGRlbGF5IGhhcyBub3QgZWxhcHNlZCB5ZXQgKCM5MTQpLgAAAAAXUHJpdmlsZWdlVGltZWxvY2tBY3RpdmUAAAAAGQAAAGVUaGUgcHJpdmlsZWdlZC1hY3Rpb24gcHJvcG9zYWwgZG9lcyBub3QgZXhpc3Qgb3Igd2FzIGFscmVhZHkgY29uc3VtZWQKKGV4ZWN1dGVkIG9yIGNhbmNlbGxlZCkgKCM5MTQpLgAAAAAAABlQcml2aWxlZ2VQcm9wb3NhbE5vdEZvdW5kAAAAAAAAGgAAAHBUaGUgcHJpdmlsZWdlZC1hY3Rpb24gcHJvcG9zYWwgd2FzIHN1Ym1pdHRlZCBieSBhIGRpZmZlcmVudCBjYWxsZXIKdGhhbiB0aGUgb25lIG5vdyB0cnlpbmcgdG8gZXhlY3V0ZSBpdCAoIzkxNCkuAAAAGVByaXZpbGVnZVByb3Bvc2FsTm90T3duZXIAAAAAAAAbAAAARmByZW5vdW5jZV9yb2xlYCB3YXMgY2FsbGVkIGZvciBhIHJvbGUgdGhlIGNhbGxlciBkb2VzIG5vdCBob2xkICgjOTE1KS4AAAAAABZSb2xlTm90SGVsZEZvclJlbm91bmNlAAAAAAAcAAAAR1RoZSBsYXN0IFN1cGVyQWRtaW4gdHJpZWQgdG8gcmVub3VuY2U7IGF0IGxlYXN0IG9uZSBtdXN0IHJlbWFpbiAoIzkxNSkuAAAAAA5MYXN0U3VwZXJBZG1pbgAAAAAAHQAAAEFBIHJvbGUgcHJvcG9zYWwgY291bGQgbm90IGJlIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkIHByb3Bvc2FsIElELgAAAAAAABRSb2xlUHJvcG9zYWxOb3RGb3VuZAAAAB4AAABBQSByb2xlIHByb3Bvc2FsIG11c3QgYmUgZXhlY3V0ZWQgdGhyb3VnaCBgZXhlY3V0ZV9yb2xlX3Byb3Bvc2FsYC4AAAAAAAAdUm9sZVByb3Bvc2FsUmVxdWlyZXNFeGVjdXRpb24AAAAAAAAf", "AAAAAQAABABJbnN0YW5jZSBUVEwgYW5kIHRoZSBjb3VudCBvZiBrbm93biBzaW5nbGV0b24gYWRtaW4ga2V5cy4KCmBpbnN0YW5jZV90dGxgIGlzIHRoZSByZW1haW5pbmcgbGlmZXRpbWUsIGluIGxlZGdlcnMsIGltcGxpZWQgYnkgdGhlCmxpdmUtdW50aWwgbGVkZ2VyIHRoaXMgY29udHJhY3Qgc3RvcmVkIHRoZSBsYXN0IHRpbWUgaXQgZXh0ZW5kZWQgaW5zdGFuY2UKVFRMIChgc3RvcmVkX2xpdmVfdW50aWwuc2F0dXJhdGluZ19zdWIoY3VycmVudF9sZWRnZXIpYCkuIEl0IGlzIGAwYCBiZWZvcmUKYW55IHN1Y2ggZXh0ZW5zaW9uLiBzb3JvYmFuLXNkayAyMi4wLjExIGNhbm5vdCByZWFkIHRoZSBob3N0J3MgaW5zdGFuY2UgVFRMCmZyb20gZ3Vlc3QgV0FTTSAoYEluc3RhbmNlOjpnZXRfdHRsYCBpcyBgdGVzdHV0aWxzYC1vbmx5IGFuZCBjYWxscyBhIGhvc3QKZnVuY3Rpb24gdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGNvbnRyYWN0cyksIGFuZCAyMi4wLjExIGlzIHRoZSBsYXN0CnJlbGVhc2Ugb24gdGhlIDIyIGxpbmUsIHNvIHRoaXMgZmllbGQgaXMgdGhhdCByZWNvcmRlZCByZW1haW5kZXIgcmF0aGVyCnRoYW4gdGhlIGF1dGhvcml0YXRpdmUgaG9zdCBUVEwuIEl0IGNhbiBiZSBoaWdoZXIgb3IgbG93ZXIgdGhhbiB0aGUgaG9zdAp2YWx1ZSBpZiBzb21ldGhpbmcgZWxzZSBleHRlbmRzIHRoZSBpbnN0YW5jZSwgb3IgaWYgdGhlIGluc3RhbmNlIHdhcwpjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgaW5pdGlhbCBsaWZldGltZS4KCmBpbnN0YW5jZV9rZXlzYCBjb3VudHMgb25seSB0aGUgc2luZ2xldG9uIFtgQWRtaW5LZXlgXSB2YXJpYW50cyBzdG9yZWQgaW4KaW5zdGFuY2Ugc3RvcmFnZSAoYEFkbWluYCwgYEFkbWluUG9vbGAsIGBUaHJlc2hvbGRgLCBgUHJvcG9zYWxJZENvdW50ZXJgLApgVXBncmFkZVByb3Bvc2FsSWRDb3VudGVyYCkuIFtgQWRtaW5LZXk6Okluc3RhbmNlTGl2ZVVudGlsYF0sIHBlcnNpc3RlbnQKZW50cmllcywgYW5kIHBhcmFtZXRlcml6ZWQga2V5cyBhcmUgb21pdHRlZCBzbyB0AAAAAAAAAAtTdG9yYWdlSW5mbwAAAAACAAAAAAAAAA1pbnN0YW5jZV9rZXlzAAAAAAAABAAAAAAAAAAMaW5zdGFuY2VfdHRsAAAABA==", "AAAAAgAAA2dSb2xlcyByZWNvZ25pemVkIGJ5IHRoZSBhY2Nlc3MtY29udHJvbCBsYXllci4KCk5ldyB2YXJpYW50cyBtdXN0IGJlIGFwcGVuZGVkLCBuZXZlciBpbnNlcnRlZCwgc28gdGhhdCBwcmV2aW91c2x5CnBlcnNpc3RlZCBgQWRtaW5LZXk6OlJvbGUoUm9sZSwgQWRkcmVzcylgIGVudHJpZXMga2VlcCBkZWNvZGluZyB0byB0aGUKc2FtZSB2YXJpYW50IHRoZXkgd2VyZSB3cml0dGVuIHdpdGguCgpAdGl0bGUgUm9sZQpAbm90aWNlIEVudW1lcmF0ZXMgdGhlIHJvbGVzIHJlY29nbml6ZWQgYnkgdGhlIGFjY2Vzcy1jb250cm9sIGxheWVyLgpAZGV2IEFwcGVuZCBuZXcgdmFyaWFudHMgb25seTsgaW5zZXJ0aW5nIHdvdWxkIHJlbWFwIHByZXZpb3VzbHkgcGVyc2lzdGVkIHJvbGUgZW50cmllcy4KQGN1c3RvbTpzdG9yYWdlLWZvcm1hdCBSb2xlcyBhcmUgcGVyc2lzdGVkIHBlci1hZGRyZXNzIGFzIGEgYHUzMmAgYml0bWFzawp1bmRlciBgQWRtaW5LZXk6OlJvbGVNYXNrKEFkZHJlc3MpYDsgZWFjaCB2YXJpYW50IG1hcHMgdG8gYSBzaW5nbGUgYml0IOKAlApgQWRtaW5gID0gYDEgPDwgMGAgKDEpLCBgTWludGVyYCA9IGAxIDw8IDFgICgyKSwgYFN1cGVyQWRtaW5gID0gYDEgPDwgMmAKKDQpLCBgUGF1c2VyYCA9IGAxIDw8IDNgICg4KSDigJQgc2VlIFtgUk9MRV9CSVRfQURNSU5gXSwgW2BST0xFX0JJVF9NSU5URVJgXSwKW2BST0xFX0JJVF9TVVBFUl9BRE1JTmBdIGFuZCBbYFJPTEVfQklUX1BBVVNFUmBdLgpAY3VzdG9tOmJpdG1hc2staGVscGVyIFVzZSBbYG1hc2tfaGFzX3JvbGVgXSB0byB0ZXN0IGEgYml0LCBbYG1hc2tfd2l0aF9yb2xlYF0KdG8gc2V0IG9uZSwgYW5kIFtgbWFza193aXRob3V0X3JvbGVgXSB0byBjbGVhciBvbmUuAAAAAAAAAAAEUm9sZQAAAAQAAAAAAAAANEZ1bGwgYWRtaW5pc3RyYXRpdmUgY29udHJvbCBncmFudGVkIHZpYSBgc2V0X2FkbWluYC4AAAAFQWRtaW4AAAAAAAAAAAAAHlBlcm1pc3Npb24gdG8gbWludCBuZXcgdG9rZW5zLgAAAAAABk1pbnRlcgAAAAAAAAAAADxIaWdoZXN0LXByaXZpbGVnZSByb2xlLCByZXNlcnZlZCBmb3Igb3duZXItbGV2ZWwgb3BlcmF0aW9ucy4AAAAKU3VwZXJBZG1pbgAAAAAAAAAAADVSb2xlIGFsbG93aW5nIGVtZXJnZW5jeSBwYXVzZSBhbmQgdW5wYXVzZSBvcGVyYXRpb25zLgAAAAAAAAZQYXVzZXIAAA==", "AAAAAwAAARhCaXRmbGFncyByZXByZXNlbnRhdGlvbiBvZiByb2xlcyBmb3IgZWZmaWNpZW50IGJpdHdpc2Ugb3BlcmF0aW9ucy4KCkVhY2ggcm9sZSBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBiaXQgcG9zaXRpb24sIGFsbG93aW5nIG11bHRpcGxlIHJvbGVzIHRvIGJlCmNvbWJpbmVkIGFuZCBjaGVja2VkIHVzaW5nIGJpdHdpc2UgQU5EL09SIG9wZXJhdGlvbnMuIFRoaXMgaXMgdXNlZnVsIGZvcgpiYXRjaCByb2xlIHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIGlmIGEgc2V0IG9mIHJvbGVzIGlzIGdyYW50ZWQuAAAAAAAAAAlSb2xlRmxhZ3MAAAAAAAAEAAAANEZ1bGwgYWRtaW5pc3RyYXRpdmUgY29udHJvbCBncmFudGVkIHZpYSBgc2V0X2FkbWluYC4AAAAFQWRtaW4AAAAAAAABAAAAHlBlcm1pc3Npb24gdG8gbWludCBuZXcgdG9rZW5zLgAAAAAABk1pbnRlcgAAAAAAAgAAADxIaWdoZXN0LXByaXZpbGVnZSByb2xlLCByZXNlcnZlZCBmb3Igb3duZXItbGV2ZWwgb3BlcmF0aW9ucy4AAAAKU3VwZXJBZG1pbgAAAAAABAAAADVSb2xlIGFsbG93aW5nIGVtZXJnZW5jeSBwYXVzZSBhbmQgdW5wYXVzZSBvcGVyYXRpb25zLgAAAAAAAAZQYXVzZXIAAAAAAAg=", "AAAAAQAAAM9BIG11bHRpLXNpZyBnb3Zlcm5hbmNlIHByb3Bvc2FsLgoKQHRpdGxlIFByb3Bvc2FsCkBub3RpY2UgSG9sZHMgdGhlIHN0YXRlIG9mIGEgZ292ZXJuYW5jZSBwcm9wb3NhbCBhd2FpdGluZyBhcHByb3ZhbCBhbmQgZXhlY3V0aW9uLgpAZGV2IFBlcnNpc3RlZCB1bmRlciBgQWRtaW5LZXk6OlByb3Bvc2FsKHByb3Bvc2FsX2lkKWAgaW4gaW5zdGFuY2Ugc3RvcmFnZS4AAAAAAAAAAAhQcm9wb3NhbAAAAAYAAAA5QWRkcmVzc2VzIG9mIHBvb2wgYWRtaW5zIHRoYXQgaGF2ZSBhcHByb3ZlZCB0aGUgcHJvcG9zYWwuAAAAAAAACWFwcHJvdmFscwAAAAAAA+oAAAATAAAANFdoZXRoZXIgdGhlIGNyZWF0b3Igd2l0aGRyZXcgdGhlIHByb3Bvc2FsLiBUZXJtaW5hbC4AAAAJY2FuY2VsbGVkAAAAAAAAAQAAACZUaGUgYWRkcmVzcyB0aGF0IGNyZWF0ZWQgdGhlIHByb3Bvc2FsLgAAAAAAB2NyZWF0b3IAAAAAEwAAACtIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvcG9zYWwuAAAAAAtkZXNjcmlwdGlvbgAAAAAQAAAAJ1doZXRoZXIgdGhlIHByb3Bvc2FsIGhhcyBiZWVuIGV4ZWN1dGVkLgAAAAAIZXhlY3V0ZWQAAAABAAAAbUxhc3QgbGVkZ2VyIGF0IHdoaWNoIHRoZSBwcm9wb3NhbCBtYXkgZXhlY3V0ZS4gYE5vbmVgIG1lYW5zIHRoZQpwcm9wb3NhbCBwcmVkYXRlcyBleHBpcnkgYW5kIGRvZXMgbm90IGV4cGlyZS4AAAAAAAANZXhwaXJ5X2xlZGdlcgAAAAAAA+gAAAAE", "AAAAAgAAAz1MaWZlY3ljbGUgc3RhdGUgb2YgYW4gW2BVcGdyYWRlUHJvcG9zYWxgXS4KCkEgc2luZ2xlIGVudW0gcmF0aGVyIHRoYW4gYSBzZXQgb2YgYm9vbGVhbnM6IHRoZSB1cGdyYWRlIGZsb3cgbmVlZHMKZXhlY3V0ZWQsIGNhbmNlbGxlZCBhbmQgZXhwaXJlZCwgd2hpY2ggYXMgdGhyZWUgZmxhZ3Mgd291bGQgYWRtaXQgZm91cgpub25zZW5zaWNhbCBjb21iaW5hdGlvbnMgKGBleGVjdXRlZCAmJiBjYW5jZWxsZWRgLCBhbmQgc28gb24pLiBPbmUgZmllbGQKbWFrZXMgdGhvc2UgdW5yZXByZXNlbnRhYmxlIGFuZCBldmVyeSB0cmFuc2l0aW9uIGEgc2luZ2xlIGxlZGdlciB3cml0ZS4KCmBFeGVjdXRlZGAsIGBDYW5jZWxsZWRgIGFuZCBgRXhwaXJlZGAgYXJlIHRlcm1pbmFsOyBgUGVuZGluZ2AgYW5kCmBBcHByb3ZlZGAgYXJlIG5vdC4KCkB0aXRsZSBQcm9wb3NhbFN0YXR1cwpAbm90aWNlIEVudW1lcmF0ZXMgdGhlIGxpZmVjeWNsZSBzdGF0ZXMgb2YgYSBtdWx0aS1zaWcgdXBncmFkZSBwcm9wb3NhbC4KQGRldiBgI1tjb250cmFjdHR5cGVdYCBlbmNvZGVzIGEgdW5pdCB2YXJpYW50IGJ5IGl0cyBOQU1FIHN5bWJvbCwgbm90IGJ5IGEKZGlzY3JpbWluYW50LCBzbyByZW9yZGVyaW5nIG9yIGluc2VydGluZyB2YXJpYW50cyBpcyBzYWZlIGFuZCByZW5hbWluZwpvbmUgaXMgdGhlIGJyZWFraW5nIGVkaXQ6IGV2ZXJ5IHByb3Bvc2FsIGFscmVhZHkgcGVyc2lzdGVkIGtlZXBzIHRoZSBvbGQKc3ltYm9sIGFuZCBzdG9wcyBkZWNvZGluZy4gYHRlc3RfcHJvcG9zYWxfc3RhdHVzX3ZhcmlhbnRfbmFtZXNfYXJlX2Zyb3plbmAKaG9sZHMgdGhlIGVuY29kZWQgbmFtZXMuAAAAAAAAAAAAAA5Qcm9wb3NhbFN0YXR1cwAAAAAABQAAAAAAAAAlU3VibWl0dGVkIGFuZCBzdGlsbCBjb2xsZWN0aW5nIHZvdGVzLgAAAAAAAAdQZW5kaW5nAAAAAAAAAABDVGhlIHdlaWdodGVkIHRhbGx5IHJlYWNoZWQgYHF1b3J1bWA7IHRoZSBwcm9wb3NhbCBhd2FpdHMgZXhlY3V0aW9uLgAAAAAIQXBwcm92ZWQAAAAAAAAAIlRoZSB1cGdyYWRlIHdhcyBhcHBsaWVkLiBUZXJtaW5hbC4AAAAAAAhFeGVjdXRlZAAAAAAAAAA1V2l0aGRyYXduIGJ5IHRoZSBwcm9wb3NlciBiZWZvcmUgZXhlY3V0aW9uLiBUZXJtaW5hbC4AAAAAAAAJQ2FuY2VsbGVkAAAAAAAAAAAAAYlUaGUgdm90aW5nIHdpbmRvdyBjbG9zZWQgYmVmb3JlIHF1b3J1bSB3YXMgcmVhY2hlZCwgc28gdGhlIHByb3Bvc2FsIGlzCnJlYWNoYWJsZSBoZXJlIG9ubHkgZnJvbSBgUGVuZGluZ2AuIFRlcm1pbmFsLgoKQW4gYEFwcHJvdmVkYCBwcm9wb3NhbCB0aGF0IGlzIG5ldmVyIGV4ZWN1dGVkIGlzIE5PVCBleHBpcmVkIGJ5IHRoaXMKdmFyaWFudDogcG9zdC1xdW9ydW0gc3RhbGVuZXNzIG5lZWRzIGFuIGV4ZWN1dGlvbiBkZWFkbGluZSwgd2hpY2ggaXMKdGltZWxvY2sgc3RhdGUgb3duZWQgYnkgIzY2MCBhbmQgZGVsaWJlcmF0ZWx5IGFic2VudCBmcm9tIHRoaXMgc3RydWN0LgpgZXhwaXJlX3Byb3Bvc2FsYCAoIzY2MykgdGhlcmVmb3JlIG9ubHkgZXZlciBtb3ZlcyBgUGVuZGluZ2AgaGVyZS4AAAAAAAAHRXhwaXJlZAA=", + "AAAAAQAAAGBSb2xlIGdyYW50IGJvdW5kIHRvIGEgbGVnYWN5IG11bHRpc2lnIHByb3Bvc2FsIHdpdGhvdXQgY2hhbmdpbmcgdGhlCnBlcnNpc3RlZCBgUHJvcG9zYWxgIGxheW91dC4AAAAAAAAAD1JvbGVHcmFudEFjdGlvbgAAAAACAAAAAAAAAARyb2xlAAAH0AAAAARSb2xlAAAAAAAAAAZ0YXJnZXQAAAAAABM=", "AAAAAQAABABBIG11bHRpLXNpZyBwcm9wb3NhbCB0byB1cGdyYWRlIHRoZSBXQVNNIG9mIG9uZSBvciBtb3JlIGNvbnRyYWN0cy4KCkRlbGliZXJhdGVseSBzZXBhcmF0ZSBmcm9tIFtgUHJvcG9zYWxgXSByYXRoZXIgdGhhbiBhbiBleHRlbnNpb24gb2YgaXQ6CmBQcm9wb3NhbGAgZW50cmllcyBhcmUgYWxyZWFkeSB3cml0dGVuIHRvIGxlZGdlciwgYW5kIGFkZGluZyBvciByZXR5cGluZwpmaWVsZHMgb24gYSBgI1tjb250cmFjdHR5cGVdYCBzdHJ1Y3QgYnJlYWtzIHRoZSBkZWNvZGUgb2YgZXZlcnkgZXhpc3RpbmcKZW50cnkuIFRoaXMgdHlwZSBpcyBwdXJlbHkgYWRkaXRpdmUgYW5kIG5lZWRzIG5vIG1pZ3JhdGlvbi4KClN0b3JlZCB1bmRlciBbYEFkbWluS2V5OjpVcGdyYWRlUHJvcG9zYWxgXSBpbiBgcGVyc2lzdGVudCgpYCBzdG9yYWdlLiBFdmVyeQpyZWFkIGFuZCB3cml0ZSBtdXN0IGV4dGVuZCB0aGF0IGVudHJ5J3MgVFRMIHBhc3QgdGhlIGVuZCBvZiBpdHMgdm90aW5nCndpbmRvdywgb3RoZXJ3aXNlIGEgcHJvcG9zYWwgdGhhdCBzaXRzIGlkbGUgY2FuIGJlIGFyY2hpdmVkIGJlZm9yZSBpdCBjYW4gYmUKdm90ZWQgb24gb3IgZXhwaXJlZC4gVGhlIGV4dGVuc2lvbiBoYXMgdG8gY292ZXIgdGhlIHJlbWFpbmluZyB3aW5kb3csIHNvIGl0CmlzIG5vdCB0aGUgZml4ZWQgYnVtcCB0aGlzIG1vZHVsZSBhcHBsaWVzIHRvIGJhbGFuY2Utc2hhcGVkIGVudHJpZXMuCgpUaGUgcHJvcG9zYWwgSUQgaXMgdGhlIGxlZGdlciBrZXksIG5vdCBhIGZpZWxkOiBhIGtleWVkIHJlYWQgY2FuIG9ubHkgcmV0dXJuCndoYXQgd2FzIHdyaXR0ZW4gdW5kZXIgdGhhdCBrZXksIHNvIGFuIGBpZGAgaW5zaWRlIHRoZSB2YWx1ZSB3b3VsZCBhZGQgYQpzZWNvbmQgY29weSB0aGF0IG5vdGhpbmcgY2FuIHZhbGlkYXRlIGFuZCB0aGF0IGNhbiBzaWxlbnRseSBkaXNhZ3JlZS4KCkB0aXRsZSBVcGdyYWRlUHJvcG9zYWwKQG5vdGljZSBIb2xkcyB0aGUgc3RhdGUgb2YgYSBXQVNNIHVwZ3JhZGUgcHJvcG9zYWwgYXdhaXRpbmcgdm90AAAAAAAAAA9VcGdyYWRlUHJvcG9zYWwAAAAABwAAAWZDbG9zZSBvZiB0aGUgVk9USU5HIHdpbmRvdywgYXMgYW4gYWJzb2x1dGUgdW5peCB0aW1lc3RhbXAgaW4gc2Vjb25kcwpmcm9tIGBlbnYubGVkZ2VyKCkudGltZXN0YW1wKClgLiBBYnNvbHV0ZSByYXRoZXIgdGhhbiBhIGNyZWF0aW9uIHRpbWUKcGx1cyBhIGdsb2JhbCB3aW5kb3cgc28gdGhlIHBvbGljeSBpcyBzbmFwc2hvdHRlZCBhdCBzdWJtaXNzaW9uLiBUaGlzIGlzCnRoZSBwcmUtcXVvcnVtIGNsb2NrIG9ubHk6IGl0IGRlY2lkZXMgYFBlbmRpbmdgIHRvIGBFeHBpcmVkYCBhbmQgbm90aGluZwplbHNlLiBBbnkgcG9zdC1xdW9ydW0gZXhlY3V0aW9uIGRlYWRsaW5lIGlzIHRpbWVsb2NrIHN0YXRlIG93bmVkIGJ5ICM2NjAuAAAAAAAKZXhwaXJlc19hdAAAAAAABgAAAFdUaGUgYWRkcmVzcyB0aGF0IHN1Ym1pdHRlZCB0aGUgcHJvcG9zYWwsIGFuZCB0aGUgb25seSBhZGRyZXNzIHBlcm1pdHRlZAp0byB3aXRoZHJhdyBpdC4AAAAACHByb3Bvc2VyAAAAEwAAAPtBcHByb3ZhbCB0aHJlc2hvbGQgc25hcHNob3R0ZWQgYXQgc3VibWlzc2lvbiwgc28gYSBsYXRlciBwb29sIG9yCnRocmVzaG9sZCBjaGFuZ2UgY2Fubm90IHJldHJvYWN0aXZlbHkgbW92ZSB0aGUgYmFyIGZvciBhbiBpbi1mbGlnaHQKcHJvcG9zYWwuIGB1NjRgIHJhdGhlciB0aGFuIGB1MzJgIHRvIG1hdGNoIHRoZSBzdW1tZWQgd2VpZ2h0ZWQgdGFsbHksIHNvCnRoZSBjb21wYXJpc29uIGFnYWluc3QgaXQgY2FuIG5ldmVyIHRydW5jYXRlLgAAAAAGcXVvcnVtAAAAAAAGAAAAMEN1cnJlbnQgbGlmZWN5Y2xlIHN0YXRlLiBTZWUgW2BQcm9wb3NhbFN0YXR1c2BdLgAAAAZzdGF0dXMAAAAAB9AAAAAOUHJvcG9zYWxTdGF0dXMAAAAAAQVUaGUgY29udHJhY3QgSURzIHRoaXMgcHJvcG9zYWwgdXBncmFkZXMuIElEcyBvbmx5LCBuZXZlciBXQVNNIGhhc2hlczoKdGhlIGhhc2ggZm9yIGVhY2ggdGFyZ2V0IGlzIHJlc29sdmVkIGZyb20gdGhlIGNvbnRyYWN0LXRvLWhhc2ggbWFwIGF0CmV4ZWN1dGlvbiB0aW1lLiBMZWRnZXIga2V5cyBhcmUgbm90IGVudW1lcmFibGUsIHNvIHRoaXMgbGlzdCBpcyB0aGUgb25seQpyZWNvcmQgb2Ygd2hhdCBhbiBleGVjdXRpb24gaGFzIHRvIGl0ZXJhdGUgb3Zlci4AAAAAAAAHdGFyZ2V0cwAAAAPqAAAAEwAAAPpVbml4IHRpbWVzdGFtcCAoc2Vjb25kcykgd2hlbiB0aGUgcG9zdC1xdW9ydW0gZXhlY3V0aW9uIHRpbWVsb2NrIGV4cGlyZXMuCmBOb25lYCB3aGlsZSB0aGUgcHJvcG9zYWwgaGFzIG5vdCB5ZXQgcmVhY2hlZCBxdW9ydW07IHNldCB0bwpgZW52LmxlZGdlcigpLnRpbWVzdGFtcCgpICsgVElNRUxPQ0tfREVMQVlfU0VDU2AgdGhlIG1vbWVudCBxdW9ydW0gaXMKZmlyc3QgcmVhY2hlZCBhbmQgbmV2ZXIgcmVzZXQgYnkgbGF0ZXIgdm90ZXMuAAAAAAATdGltZWxvY2tfZXhwaXJlc19hdAAAAAPoAAAABgAAAX5Wb3RlciBhZGRyZXNzIHRvIHRoZSB2b3RlIHdlaWdodCByZWNvcmRlZCBhdCB0aGUgbW9tZW50IHRoZSB2b3RlIHdhcwpjYXN0LiBLZXllZCBieSBhZGRyZXNzIHNvIG9uZS12b3RlLXBlci1hZGRyZXNzIGlzIHN0cnVjdHVyYWwgcmF0aGVyIHRoYW4KYSBkaXNjaXBsaW5lIGV2ZXJ5IGNhbGwgc2l0ZSBoYXMgdG8gcmVtZW1iZXIsIGFuZCBzbyBhIHJldm9jYXRpb24Kc3VidHJhY3RzIGV4YWN0bHkgdGhlIHdlaWdodCB0aGUgdm90ZSBhZGRlZCBldmVuIGlmIHRoZSB2b3RlcidzIHdlaWdodApoYXMgc2luY2UgY2hhbmdlZC4gV2l0aCBubyB3ZWlnaHQgY29uZmlndXJhdGlvbiBldmVyeSBlbnRyeSBpcyBgMWAgYW5kCnRoZSB0YWxseSBpcyB0aGUgYXBwcm92YWwgY291bnQuAAAAAAAFdm90ZXMAAAAAAAPsAAAAEwAAAAQ=", "AAAAAQAAAQpQZW5kaW5nICsgYXBwcm92ZWQtbm90LWV4ZWN1dGVkIElEIGxpc3RzIGZvciBvbmUgcGFnZSBvZiB0aGUgbGVnYWN5CltgUHJvcG9zYWxgXSBmbG93ICgjOTE3KS4KCmBuZXh0X2N1cnNvcmAgaXMgYFNvbWUoaWQpYCB3aGVuIHRoZSBjb3VudGVyIGV4Y2VlZGVkIHRoZSBzY2FuIGNhcDsgcGFzcyBpdApiYWNrIGFzIGBzdGFydF9hZnRlcmAgdG8gZmV0Y2ggdGhlIG5leHQgcGFnZS4gYE5vbmVgIG1lYW5zIHRoZSB3aG9sZSBJRApzcGFjZSBoYXMgYmVlbiBzY2FubmVkLgAAAAAAAAAAABNMZWdhY3lQcm9wb3NhbExpc3RzAAAAAAMAAABIUHJvcG9zYWxzIGF0L2Fib3ZlIHRocmVzaG9sZCBidXQgbm90IHlldCBleGVjdXRlZCwgY2FuY2VsbGVkIG9yIGV4cGlyZWQuAAAADGFwcHJvdmVkX2lkcwAAA+oAAAAGAAAAO1Jlc3VtZSB0b2tlbjogdGhlIG5leHQgYHN0YXJ0X2FmdGVyYCB2YWx1ZSwgd2hlbiB0cnVuY2F0ZWQuAAAAAAtuZXh0X2N1cnNvcgAAAAPoAAAABgAAADpQcm9wb3NhbHMgc3RpbGwgY29sbGVjdGluZyBhcHByb3ZhbHMgKHF1b3J1bSBub3QgeWV0IG1ldCkuAAAAAAALcGVuZGluZ19pZHMAAAAD6gAAAAY=", "AAAAAQAAAJJQZW5kaW5nICsgYXBwcm92ZWQtbm90LWV4ZWN1dGVkIElEIGxpc3RzIGZvciBvbmUgcGFnZSBvZiB0aGUKW2BVcGdyYWRlUHJvcG9zYWxgXSBmbG93ICgjOTE3KS4KClNhbWUgY3Vyc29yaW5nIGNvbnRyYWN0IGFzIFtgTGVnYWN5UHJvcG9zYWxMaXN0c2BdLgAAAAAAAAAAABRVcGdyYWRlUHJvcG9zYWxMaXN0cwAAAAMAAABGUHJvcG9zYWxzIHBhc3QgcXVvcnVtIGF3YWl0aW5nIGV4ZWN1dGlvbiAoYFByb3Bvc2FsU3RhdHVzOjpBcHByb3ZlZGApLgAAAAAADGFwcHJvdmVkX2lkcwAAA+oAAAAGAAAAO1Jlc3VtZSB0b2tlbjogdGhlIG5leHQgYHN0YXJ0X2FmdGVyYCB2YWx1ZSwgd2hlbiB0cnVuY2F0ZWQuAAAAAAtuZXh0X2N1cnNvcgAAAAPoAAAABgAAAMRQcm9wb3NhbHMgc3RpbGwgaW5zaWRlIHRoZWlyIHZvdGluZyB3aW5kb3cgKGBQcm9wb3NhbFN0YXR1czo6UGVuZGluZ2AKd2l0aCBgZXhwaXJlc19hdGAgaW4gdGhlIGZ1dHVyZSkuIENsb3NlZC13aW5kb3cgYFBlbmRpbmdgIGVudHJpZXMgYXJlCm9taXR0ZWQgdW50aWwgYGV4cGlyZV9wcm9wb3NhbGAgbW92ZXMgdGhlbSB0byBgRXhwaXJlZGAuAAAAC3BlbmRpbmdfaWRzAAAAA+oAAAAG", + "AAAAAQAAADlSb2xlIHByb3Bvc2FsIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgdm90aW5nIGludGVyZmFjZS4AAAAAAAAAAAAAGFJvbGVHcmFudFByb3Bvc2FsRGV0YWlscwAAAAYAAAAAAAAACWFwcHJvdmFscwAAAAAAAAQAAAAAAAAAC2Rlc2NyaXB0aW9uAAAAABAAAAAAAAAACGV4ZWN1dGVkAAAAAQAAAAAAAAAGcXVvcnVtAAAAAAAEAAAAAAAAAARyb2xlAAAH0AAAAARSb2xlAAAAAAAAAAZ0YXJnZXQAAAAAABM=", "AAAAAQAAAPtPbmUgYWRkcmVzcydzIHJvbGUgbWVtYmVyc2hpcCBhY3Jvc3MgdGhlIHdob2xlIGhpZXJhcmNoeSwgaW4gb25lIGNhbGwuCgpgYWRtaW5faW1wbGllc19hbGxgIG1pcnJvcnMgYGdldF9yb2xlc19iaXRtYXNrYDogdGhlIGNvbmZpZ3VyZWQgYWRtaW4KaW1wbGljaXRseSBob2xkcyBldmVyeSByb2xlLCBzbyBhIFVJIHJlYWRpbmcgdGhpcyBxdWVyeSBzZWVzIHRoZSBmdWxsCnRydXRoIHJhdGhlciB0aGFuIHRoZSByYXcgc3RvcmFnZSBiaXRzLgAAAAAAAAAADVJvbGVIaWVyYXJjaHkAAAAAAAAFAAAAAAAAAAdhZGRyZXNzAAAAABMAAAAAAAAACGlzX2FkbWluAAAAAQAAAAAAAAAJaXNfbWludGVyAAAAAAAAAQAAAAAAAAAJaXNfcGF1c2VyAAAAAAAAAQAAAAAAAAAOaXNfc3VwZXJfYWRtaW4AAAAAAAE=", "AAAAAgAAAQtUaGUgcHJpdmlsZWdlZCBhY3Rpb24gYSBwcm9wb3NhbCB3aWxsIHBlcmZvcm0gb25jZSBpdHMgdGltZWxvY2sgZXhwaXJlcy4KCkVuY29kZWQgYXMgYSBgI1tjb250cmFjdHR5cGVdYCBzbyB0aGUgc3RvcmVkIHByb3Bvc2FsIHN1cnZpdmVzCnNlcmlhbGl6YXRpb24gdW5jaGFuZ2VkLCBhbmQgc28gYWRkaW5nIGEgbmV3IGFjdGlvbiB2YXJpYW50IGxhdGVyIGlzIGFuCmFkZGl0aXZlIGNoYW5nZSAobmV3IGVudW0gbWVtYmVyKSByYXRoZXIgdGhhbiBhIHJlLWVuY29kZS4AAAAAAAAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAAgAAAAAAAAApQXBwbHkgYGZlZV9jb25maWdgIHRvIHRoZSB0b2tlbiBjb250cmFjdC4AAAAAAAAMU2V0RmVlQ29uZmlnAAAAAQAAADNUcmFuc2ZlciBjb250cmFjdCBvd25lcnNoaXAgKGFkbWluKSB0byBgbmV3X2FkbWluYC4AAAAAEVRyYW5zZmVyT3duZXJzaGlwAAAAAAAAAQAAABM=", "AAAAAQAAADNBIHByb3Bvc2VkIHByaXZpbGVnZWQgYWN0aW9uIGF3YWl0aW5nIGl0cyB0aW1lbG9jay4AAAAAAAAAABFQcml2aWxlZ2VQcm9wb3NhbAAAAAAAAAUAAAAWVGhlIGFjdGlvbiB0byBwZXJmb3JtLgAAAAAABmFjdGlvbgAAAAAH0AAAAA9Qcml2aWxlZ2VBY3Rpb24AAAAAPFdoZXRoZXIgdGhlIGFjdGlvbiB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBzdWJtaXR0ZXIuIFRlcm1pbmFsLgAAAAljYW5jZWxsZWQAAAAAAAABAAAAg1VuaXggdGltZXN0YW1wIChzZWNvbmRzKSB3aGVuIHRoZSBhY3Rpb24gbWF5IGV4ZWN1dGUuIFJlY29yZGVkIG9uY2UgYXQKc3VibWlzc2lvbjsgcmVzdWJtaXR0aW5nIHRoZSBzYW1lIGFjdGlvbiByZXN0YXJ0cyB0aGUgY2xvY2suAAAAAA1leGVjdXRhYmxlX2F0AAAAAAAABgAAAC9XaGV0aGVyIHRoZSBhY3Rpb24gaGFzIGJlZW4gZXhlY3V0ZWQuIFRlcm1pbmFsLgAAAAAIZXhlY3V0ZWQAAAABAAAAX0FkbWluIHRoYXQgc3VibWl0dGVkIHRoZSBhY3Rpb24uIE9ubHkgdGhpcyBhZGRyZXNzIChvciBhIGxhdGVyIGFkbWluKQptYXkgZXhlY3V0ZSBvciBjYW5jZWwgaXQuAAAAAAlzdWJtaXR0ZXIAAAAAAAAT" ]), @@ -1418,23 +1528,30 @@ export class Client extends ContractClient { unpause: this.txFromJSON>, upgrade: this.txFromJSON>, decimals: this.txFromJSON, + has_role: this.txFromJSON, pause_as: this.txFromJSON>, transfer: this.txFromJSON, allowance: this.txFromJSON, burn_from: this.txFromJSON, get_nonce: this.txFromJSON, + is_paused: this.txFromJSON, batch_mint: this.txFromJSON>, + grant_role: this.txFromJSON, initialize: this.txFromJSON>, unpause_as: this.txFromJSON>, lock_tokens: this.txFromJSON>, + revoke_role: this.txFromJSON>, update_name: this.txFromJSON>, + get_proposal: this.txFromJSON>, get_treasury: this.txFromJSON>, set_metadata: this.txFromJSON>, set_treasury: this.txFromJSON>, + get_threshold: this.txFromJSON, rescue_tokens: this.txFromJSON>, transfer_from: this.txFromJSON, update_symbol: this.txFromJSON>, batch_transfer: this.txFromJSON>, + get_admin_pool: this.txFromJSON>, get_fee_config: this.txFromJSON>, get_max_supply: this.txFromJSON, set_admin_pool: this.txFromJSON, @@ -1445,11 +1562,15 @@ export class Client extends ContractClient { update_metadata: this.txFromJSON>, withdraw_locked: this.txFromJSON>, approve_proposal: this.txFromJSON, + get_role_proposal: this.txFromJSON>, is_proposal_ready: this.txFromJSON, set_fee_exemption: this.txFromJSON>, transfer_ownership: this.txFromJSON>, + create_role_proposal: this.txFromJSON, remove_fee_exemption: this.txFromJSON>, execute_from_contract: this.txFromJSON>, + execute_role_proposal: this.txFromJSON>, + list_legacy_proposals: this.txFromJSON, get_privilege_proposal: this.txFromJSON>, cancel_privilege_action: this.txFromJSON>, propose_privilege_action: this.txFromJSON>, From f8760eb99c1c2ddfb52d8b12ae86f2ce1e342866 Mon Sep 17 00:00:00 2001 From: p3ris0n Date: Wed, 21 Oct 2026 15:58:28 +0100 Subject: [PATCH 6/6] chore: raise WASM size budgets for upgrade proposals and add visual baselines --- .../linux-chromium-arm64/admin.png | Bin 0 -> 41208 bytes .../linux-chromium-arm64/landing.png | Bin 0 -> 76379 bytes .../products-transactiontoast--success.png | Bin 8043 -> 8125 bytes .../linux-chromium-arm64/vaults.png | Bin 0 -> 41248 bytes wasm-budget.json | 12 ++++++------ 5 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 react/visual/__screenshots__/linux-chromium-arm64/admin.png create mode 100644 react/visual/__screenshots__/linux-chromium-arm64/landing.png create mode 100644 react/visual/__screenshots__/linux-chromium-arm64/vaults.png diff --git a/react/visual/__screenshots__/linux-chromium-arm64/admin.png b/react/visual/__screenshots__/linux-chromium-arm64/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..59e9ca82c30538631321d2a528ca31287e110f52 GIT binary patch literal 41208 zcmd43cUV)~yDo}dL1ZBUA_58m(nWe#>0JUL^eQ5R-dl(bkS@K0^bS%&hoJN>C4?S& z?&%p@ z$xo`DaP1Sa*s{5-*baX=dP*QI*F@3|fGu z3M8-85gt6<)2*k$KtweAYBcA)>$oLlaY6L}_tu31$mJ_=x!jj*lNdv8#`&OBNhs$) zy*ycALL%^~NEXJ^~f%(|WpGv(@=W-AliDW!q6azC%l z7uqNLG3XGGLvZyp(Yceo1)dV4$%P!+v!gXvTg#NIL@)Rz?tKsAVEUO=5Y<5tQdu7_ z)*y{~sVAHHEIbZ zAW&-Sp_v>M6ckNFbTd2j636_aFLhrR9^$S8KRbl&Oof&IIpj$#|U1ie10J zLW*OV{tJ8<~nAd+X}*IYZT zea%`s?I%Aeyw>SnN7|PZJ7fsy&aWSOhw12r+ByFk7%oU=?%T^QvkP7w&5$VAaf-~AzgEx5F!E3gi-g%T z>=U+Ypu3OCbfwNauqpK{VZXuPmrfFOEt(>*;M_ZZBjy8M-o-jS-X?INa1OM}Kvm9?4pfYz4vq)Z45IsKA7M} zb9>K;kf(O{(EVU*n`;TMoy6LK!Qd6{6yxqroeH~@r!M%}5_Nm^i#aRu_>!jOb>wmr z1!w*Vc6aOs!#x@fkNcL-8qSB55PDo#GLbtH7p=+u?wd}waTWtox#*3yroOjHc(}76 zrha|EZD+d*BdGi~j-ZNreSGG?tV!cargF z&8a4w9owF|XWzNI)Rfs|pNvr=B1+CsHI8u>&v2B~k6;C#tz*G-*@quMZ@o-xN7trY zhE=5l?vRVohp)s)HF{w>HI75?AB_wLUz`rWuW_7XFECj-ckXN-Z%wkorfOyyz3?Xs z5&4=7l)Aa*@=Gc1w;%Yd(9Lf`jNt;F>r5FbXYCkIR!CN1YwPEiSE9t+M+19g=dfF1 zGU;QdSw$*Y9A(agyojSXAMCg#vEP1^_m02=?=LOS>+xjjJa@(B!!&cQZs%#SYewF< zzVq}>uK50H1e1KzY5QqsB@LsYp|7Wwp7r|sOZZQ!63=bDqK-L!&S&yj2DvbMHJObM z*_D;u?dQ{^_kFgq#U%-UWF9zJIEbu;xc3P_tOd+E_CJ8{X=~Hrdt#C52`AsK5;e0; z2!2HIW(>~B8!Kv}uS+W5cb})&L^kMkd%X5~7o)XgUz?5T^UcsNx(Gd@{m2A1_C1Oj z+plUAb87tpz!M&Ofg|jNM>aIr&TC0kh}3lAx2iFxb5aCyF}Tli!YnJPJra*SC7}w6 z$UUCHP+HbVj+Nin@Ag@fEv~W)9P7kwQ(Q5LiHQ;0C-I+xLAIB)Z9)1v?>f z!)&+#T}IhJya+OhgN6Bc^Yq1Hy5Y{w-O`NRajDViGWE2{l|HhmJ-lH(aGXh#clt4> z<@XQoiiy}aB78jkJ(#?)+h9YZ>W}ihhW+uUIu5rt6J&!!&D39Q9HP&=XdT#3ifRd)6VM7@!#RxRW) ze%{H-;T6Y3q)co#4u=t3YB=3wpvJ(^1QM!cn+ccQ*&knz=$4j#q@0}8g+w|W^!-TL z-{;vVoOU1BJ#%56a#9}9ffbF7@1v1{@d*6%mKl8Pd%A{(#*yp%!UBL&3Mxg=il1wo zg#E%<-|!?mQOAzDYVGZ(?!xP56e^I=Gw1o}@7oA;+t>K9grl+EnMT#S{mKcY4U&r` zKYnl?A(v-pFV5o#=PMmMhTCBg-4Vyv<@95S+kVwwFFhOH07`7`yA8(Us2j(LS%;Tg zaqf~#u!UG{^*pijw2dtHAieRo=#3JJNdk7mecBb>m`tOS{H7Z2bUU-+ zLT?zs&-Xgcy3O>S)eQ4KFZaFIy|HJYA(lFKG`iHO;D~L_?G2+p3amv=ShJon4NV5x z8N>Qe0Z0i>H@AD64aYOyPm<%z%u2LnMo53%d2oU>H8tfaGT@R^VO957Mej*`Tw?Tf zjaYEZ3~0Jg10JKnqPL3luD;_(yG=&eY2#u(u}??EA5?A=u|uqCb(SaJXA5#3S;|gR z(*?;e8ll$fgpX`xr_1Nhx)AQw_6*0rKAExdlx~Z8`ce|4jB>tO&|3JIeB?PxqfvJy=%3v5WM3gfZp1r z!x&#MKS|8XPPIAk>#=)q%4`Lz^}xkI1e5E_t@JW;lH<+s`hl}jIDX?8?y-KX&K>P= zLF3c$-ZHi4~colmKl~r5)n~TpI+8p z>(UjmYP%9z06UBs$pEHmHsa!BGcq1pGWZS=BZa@0EWa_Oi{>lK)eqoA`tdim;v+w8O_u|lMGCA4TwPArY61bV%DF6rrxyTfZl z-D@pe+UnN0t~4;`?*E=B2}mMJKVne?#PoiN?@p` zS8i#3?!LoH)^z%E!s(Gr_B4ZH5>}DxF5ml{tY&iz-WPrvXB@-{iYuveF~a^l_>nIZ z5kw_%q@|(~GKNWvt0pu{wf2(?@R0K=12fPg@rT8A>nTzvap4K@4vpYh)pXr#653QUf^qH+JgiGDYDLfN1^7S0qw@{X? zqQKp_bIufB(i%TC3_oe<%7NmTW`gs^Yu(%w-yrBtuK_cA&>9?n&u!N@o8cn!jc)t8 z>;M;r5dMjoa8BSRAz?DSM5OnJ_F7>?zxGKio*asSYVn`E?edAbH}g_dk4pspm00SI z_)y~qbC~_Ul%u;dsV_(yd%9xmgYQEJ-E1p`9~BxC&LFv?W#cx4b2I^6`10A^gw2)= zGO^DAn4t?&B$ zYsZ(8H&*e-?tw1MZuIy0^nNQO{mILt0+vm;m&%9X8M_7>Gx#_j+Yy8o?Bdi|2 zuLv5W)F7XuYn5WY``*8mu$m`=J%~sv05oc1PYj*tuKZ=9xROyda^IaJ4pEmHcD?+Y ztcI5!e?gM$p&gefyT9C_GcZD4C93(1U^l_LRI;du`nD~R-+e!P3cQ(`cC;CX0$a6! zt>80g1{3Ao_oEu_T3?V4ZV@@;TcaKnttT!7-ITPyS*b1K5r0w`K|~Z+pna{#T#CVR zn(~(y9XE+sJFD%b*}LsE_x^RWqYeVUq``bwU!TU2&&@gdZ}XxJxPbd_5V?3uhXG%2 zvyfAbND*~iE20R%1(PXtWaH%TpxX?b6FE4fdc53X+BRTAO#ko#roUw=6A1N?iQU|x z6SiT0_h9k9CD2ivzINmKgWZ#w6OJbakp!drLuAfIly6X^%?FE`^W7vsU9{UFZ*{C(8Kgt3ZuM!DEZAo<) zU^dA8ZVp0+$3lLt7t1-jJx*;B*&{O++5ZI!ms|dj#F}*+EF2$EtL`0jcEC6ZL8Z)} z-S%`)IFBI*Em7l~W_;}lkJYto&WjTZG->nBtqEe|p5A1hPgKz}`Ny|~TqBy;PbXuK zk0;6G4QTDvR8_ar107=Cyrq(Rz=%BQV5LN**wH^f<5pc0gHIoKk@poJhtS*BiDp#M zIzydJ8c`b+lOq!a>ye_XF;sBu<}+#bUX3Ze8C3^V1KgB1rfq1ZS< z3EbJsJ;}`hm0n_@uvCfZd#4t2vB~E{&)q`>vCH*xq-(G(D@$b_3G%@`X}LBuos5xX zo%>i?s<^0%I6A3iR2ixyo46ks9txoJGb1H*}BuMD%>Xu)ds$tz@gaqt%J3Dr4 zJO)q)se~jC=@6Hi!@@5&d8I2&J0eo0=^4P@U6Udpm$O*~-pl)aaq=LB^XbmjQn#XR zFFYdY>`vM<@78KDBmBnbC;x!UE!6T&GlW6XmJV@I1E)QTJ-Qo=ZC?#)6D&YjKuDe>j9wd<-!knE~; zYw|}=lGE3_Tk0!}2uc#~_9gZp$*5y-#50Y~#YaTnuGywCMrWnzdwes4vfNNN{Iq2K zeO03Tpg6yA-n>;8)}TFs-_n4fe(*5br~D$wrJS&8immpCOU~#_=QT1Qgz^Ec^*vt+EB|smZVb|Bj?XcMvoY?k>ucIIzNBT7bqNnV=d82e3eB)3LIQrJe-Tcew*ttLeqSnW~FjWPr2pu!~(OJ zGqmxhi#)2wYC?hazKvoW8%I8UhmScQi<*;@uN&W~!^Q2``*4Yw{fsxVln6t;$@tp! zlBn6LYxl`<*)b;RXjwm-0XFpg^+UT}U$I)av7+6ef6{`rB=JNT8kJiF@Fz(_d59V4?-(KBt$744;%#GN}-v7%SvV2$tr z%Q^q6yni^!7U~BJPTh5XgTY+vx!RHyCS${q;zPZmjEv@$gtp^3~lMq!rLm378ThSFxF%1R#KBTl#G%Pa{<7Ez3(y5xd>%?0^!)E92ekTpY2W% zDcMzPm&~UC)yt>YASsJwF~Uw}ePX($1KnroO6wlB^WO$D?V?{1_!vB;t=EfbXD*Nl zrN*boD2AQVk~0XlD0xTbJMoTL;`1_&7KkMeqv%}fpul)3^31LEv-f|UI)FBewKJ&c^s9~e$2>$EEc5aTrQxt9ri+PFNp zp3H3mi}cy_&$jua@!VxZxi9p>`s%+q+T}3n^e>u>S^~O(%ucB2TVy3(N1^#q^h1Wu zb)|im`pt{OwE?npYBBH_DAC>?=VR8|_x|MJ2| z3*MvV%DY@8>MD?~N?2rTfZYYg_b$m9#pJ4PbrBFKSjH#xiV zE^B#gFB8=v4i@O}z0f@lRsgumEvRjC(5k~Y0wRb1lX2n7%FirE8?J;J{zbS}^LBe; zR?bfw0j4mOfLDHWu{6s-1~8b|y@&s|So~Dnm);?cXoUjNWk|Zmfcq#e_x=6o#O|`b ze3(Zoi`x?-qD1-T%X&+pp-Ev6_avWtHjK6Q(;}pGiHJVm`%|$rcJow;<6fD{PHS{P z;Q}U$c}+qx^2uK8?SDw^Za>D?$)+}(d@dD$*7p4HP{FHug%{oB{O0l_65*;sR%$LA8;zb~*7}kU^0$4Y z2QFItpR5)r5e_@hWF8NYAGq^L-jddEXRP=9tghIXqB_d%RGYS2cSV0~+MBp}i&~64 zH;i85Z1<$>h`F@L5L0H}abrRpvU;*yPit=e1PCm$RiWR*JQ@I{1|^2tqj*aQ67CNe z3k}mYdwaYE>W4oD-h%K;f|t&0;J&8)lPL>1Nv=PpKwC5Qb0{={&UBM+^@q;dLB=r# zW()Q^9E(m(Z0}Rz#<6-IKO8&UpJN(kC9{toNMzFUwMA_ZV(XYmJ$4}}nb127mEP6` z%xrZyLkia8!U9P%%${D;%CfirVH3-9#yU-v&tKl*$}jZvTs1K_0$gHcAcQRk@NtYo z8OMb2Ll#BS;TSFN6Mz>65T4c+TYmi0Q76{nDbbt6_;}k7a~&}=Y~masb4{KVxd8?A z=>k*tG14*&un}}N4b}-_@sm;`R2^IZ=bVA)t>rU-DH3v;jfS_jyEL!6k_Q$ZmmX@+ z6cW!!oh+5MdVm(7-cJtIhAf+Qu`|a~v}0Ts#B2P(gYmNM&KwR{g?c-h`wYw`C>U06 ziz=R#oxRZV=yNR-YIQHH9}dTevKNRQZAg7{f7Hx;NdIIG^wkBLF{Z`^H#r1m)%({# z&O+~fI7j_l8;rx_dmG#4?0SrPW-@e#S*txXj>3%}PT?b1*Ax2(kDQ?bsjvhR?6qUm zbU^5aH={V1aDo!z&exP`LAhSjNU;}m@v2^}2x7WYGAw8-`U>#rRZmzk^d&{HCBl8J zhPFKdkfUu!*XR*F4YW&mgw4)dZjQ#P1K@0D5?!2qR5<**0nNvpqk4(sdHKS^Fe?uw z&4x~&Mq25jNxlLkI6~c$$sy@p*&rzo#SgY}Q@w)e z(%6X-xdz-9zSCE*C);%a+2r1MZM)L z!+`1{)w1&F2Q?y6%t}!F^g_gH2Yww|FrR0I4wLfLD(9}x5Hd1tE={i{>~Zq}i%{r| zvH~)=-SKB=B8`aXzUz3kfQFDE9hmkfBcs3|2o=Eu&Pe*8TzCfpmT#AlPknbDnM-Y(>Hz$p2{@Ck!|SKv0H+d(Rlk}!$rGOCEL`o<2Y7nRYcE) zWB!-dDEi5ghEJ%JolT5H4H3tyVSL;~LyCTtO_Y}*^+n4?!xhR1p($6@Y5lPEp`M4{ zkB+y%%E$-5O6?-*M|SKET>Cn*8Kfrm&u~M)aKSOVo8jf_D2}@WiuSX*0qS#7Hxr z8~!4Urx)NML=GB^CYOp4bA8BjAkQ%Gu;zcz7mu0Z==$*69bs-_zwwTXyrATZHdNF# zk^|T$w|0ohC4wsO(kvTD{{M5;q2flwso!Dn=B(a_d8>9-;7R9t0_58aQ7-`}rKTBS z+?@E;&}t|EdHSBc&OBb&paGxfk>V~dzvs2Mx+gmsuGU*Jb(B}vCTLJkEpc86n+=L% z=|Dpc$IWm;ho75uZ_`~i2~-PFVD}ZhrzNN6;(RQ zTUg@KSCpATPi`lP+t!r4xfnsMkC*l;YAFNk!m_Yf^Ydcrn$JJH03b{YP8-N867`x$ zywMG%ni=PfFG>8vZ+;{oEHPGpS0t!P^frrXmv&O&;4Rq@s~P>#M(={rb@Zb`kLJt4RfVM*+xxHixfOSq_-ihD~sJmD;OPZSTL zt#RXNfcFw70d5OXTwT?5&d{9U_r9=Li=qN+*>(^cZC2s;g%4bd`M-SJdeo4fha(Z! z<&7eSsp}&3ELCWw*i<*h441V#Fhb@HcJ9mF=Pzv0O<)?TzEv6~{x)bua!zf6dgwNF zt|kX+LU?#L*T|TlRiO4bg*2^a&EXU%^Y2BUtB_;siY;ATkA_0P6*=l*A)8NAm`Wmx zwPm}{H(U#}H2dp(I-1KIyMGB#61y5|f!edxlB{9k&TWD*<5fQkl#L~y^y}BOmnbAh ze1rNRKo7mHh|zD<(G1vD#Nq_nfAFoSD-9OPerBI(u!9+ymQ8b6d1Zy9Nt(xNY?b$> z)eX_+y6Xicmn|E^EyoF;YR=}ORU_H0w*8m#MSelNRx z{KL1|y23|2D;<}ms?vO?I6AGSmw%C|k+o)Q^u29!_GE6ES4odm^6cIpU8*}=b4+ZG z0HukW4>jc@({%4god-}y9Vr=5^!=biQ!)k0iqmN7ITchRMOe8hH@NVs@ z>XhK*d^QJhE|OzQnO4yc_Q6hHvs*a1YCHRa21;L~U(>hFpM5nT@SJkA?KpwzM&T&8 zQ<{|OoBY`_5ZZmSlfLcRvWxShl$5vJ>gl|psnN0bYt%Ek^1e?b8b-nqn}(( z&bVtiI7`afb1#6??La~Lk=!+^T4W7l@wlRh-xClfP*=KGuFye@y#droBj=}72p%zJ zDc3idtB+^wrO^D$Y!OCW4Y~L9ZlAAl6i_0GSUY#W4QAlm>fPWD+|(u_#YwjQ6loMi zxXRhIZB44hls-#rWxMZnxZ}&f3e?7s1h!}iy5+yev$*XsaCXs7b1U)Jk@b~?t3VTo z=X3F#bQ8#&d9gACj3T`g7I3ZVYwm-C7|P|?HPBsJ(%1QO=cg+}V_ zaI5&^*26sQtisRSb8yLDn|Xuncu9@NBQ)V$JOh+M&&s;4ek(5=FGARIi@PkF%XQa~ zD;p(RIN2v2%);0jafkIAbClX_gIN#(eR$_c#KcE=|9CI5Hi&+svv>!Xr2hXyPBW*0HBZ_@Nvw|D5)PaA)e=YhGmb1gsJ`G6 z@I)LwK#}A{x5i`I<9CB(k$DCaiZ%xz#x|-cY5){lH@m60kE1CY8g>VHTXy)5w$15X zcH;AcF>FT)1l1;Kk?iSQ^HjW^NmUHm&La zWyI|On2-Mj{MMO|<>$(z3m>It=F~zZERvSR_f@aBaa|46Qjkpl1E&5jgX{M)t zC01_O>IG7=2jH9tM)Uk=(joBJUNhCcmZneE5@ z%|QcsaGPlYgU0bcA@mAG-x;YVRY1pm>Y98mOo^(e*=M(w`RTUpO8%6*bxtmqyuLM2 zxMTmp#sP8gmYw1-lg0TVO-l%uOi50PB9;f% zW8H6YN2Bhlb_;{S<48`{ouCEK(^t*e^&!bA_Q{2FqGXE0m3hqhJyvpcWbP0%8 z>K%PCT1gQ6>Z}}qOWt0DZCAz$n${?J!a!y}c_KlI`xF-&?H6iCN<`GJU(V%3Mna-; zf_ex{+K7%=%e^OA;p(AiD_6(mvV|K;qgR$*acvsxx?nbrh!Ul(B!$~#4>7%BdJKoH$AywmhH6|-Afp1$9`>5)rdCH?b zeb6tcU2n0Ssh+k`%E_inPYN0GEI%-8^V}F+iHR0rpE7ckmdzN)7`!1Kr>Qmu7!5Ts z&1LPui+RI(DPai7_p8NaX+MxT-&zx*r{2)SDivyYbhrJX<+C*wiCJ<`)GIy_yE?$PSa8i7?~c?YWC@QyV)tu&RwJT_Ek%N^T15> zU{mQ~zinM}QTz zA{Fu7C9K*>sj@5Q#WLur^^KqRhHdYb*Zya+DvsrrxLISV}AQ?)|AyaPgU6zw%%!20iBi9phcUtX>t?^OPmW-}6TEs2QCJE2&{$s_vmwQ>LQPTGF-s^U0{B?=c9org) z0zOdZpCGHDlU&1D5?OE8tNJ> z?T_CQCFEAA&S7wOc1o)t4>QQ-2TbFsnrd&!ZCLg|gv8u7Z-SuuFh%N6?+wjdJIO@~ zuwW>I%gUxt?ue2k?(D`{yqC~a|DqF6zLyaKCbiR2oW7EoB7!d4`DMDI%GL%?cenfD z{St`Mhq=O(4dqHJX#|zN?X@_Izjf4L+!wm8I5oY|`q{_%bVap0uE3Y75O~YpE&i{(!*RAg8gQz6`tR()t zUtvCOUB;${K515tc+$IXk!3D5%fkXBaa6SJTpkO@df{6sU=HdcQ1MNmDO6u$Qz7wS zNWW`OG`lBpgNLVzx!2QrVc5Fk%nz9+k^9uPH>-CqQCdV@GOmovar}!;_HU-ES`G_( z_AiZ)DIyl?ICc}iGtW|E! zkPI$x#!J&OvBtYVWBGgKSn*5HfhMwJJ+frCAcq+`(*Er{;^^C=y5+)1CF=-4i`eYP z=2lcGfKsJAQ+0D)0`BOr7h`2QNzRK5uVX}w;wDQs3rdiB#hS{@+~Mj&f_8$li|L^B z*M$NF6?H(!UUSm98}I+OKDa||l9CmojJGvd>!!^1kI47uqkmiwD#-=Wuo56vue}c^ z-mibityl==yMGNR!tVj1{&Wm{qO&ms2D^Uxv|##M2vfbI7+M)HdtH3%w z22D_VPEvv%W~E?BHk59Gg_(Lh$1Ab=kIE&2NxCBfKpGOIdX-@(lnp zdv@smjn_BT-4JFFZaUp=AG;4E2aZG~cA{$@+^Y)`qCTYvh<8!Sr}Mj@1Qa8d z@xQ`Iw{NfWC=p_2SnG8q`{WrbHm3)^NwqfRKcIbv^}J{^=YkR;)^G)esE37jwDoi8 z`SdKhCiJw@1@Al*@toTAD1O(xavN;CPuFdnl7JYtcIPnjI;7=;wLi<8U>zE&JM#2v zbF0o;i+J8t_1(0z@>Yv#L9R0i88c~UF{zfMyoOzV_j$Ai?Y^9E&-smIs;i8@TG*1F zfQP0?55PR?hQ+D)?uW3h^ZY_)=SXyUpWZh5{*8fTDK=T-Nxoc*zJj9SQK#&tolf%h zd4%WLDUX@}KY@dIe5;u!D*R>?B&@N&pAtKR_p_Aei1gd=~YJf;vP z2`51T=&Og+l@w#C@@ED?|8`sO^ZXx}>}AWC-fk+}FCj%mjLM63Yxs?MJ$}&IFNurk zSsFK*#31ZmbQw2^4N!^glhMxjI0kh!zSMF)YrSf;de;B57r{I+$g^mNDSvzMx)HNL z`N^D-FaPdPT%*N!J>T)TmO3CL9_wc>kmEkw|+RKwUm#itE=+mNn;eCMu*2- z%8~UCo-T$+#_M*wzXgU%%B%I>9H0;^?{4$Y4`y2g5dMc{;-9iy7kC?_KnIq;e)ZgE6f{I(CJ7= z@cgeqt3a>f{$KX3SrMW*ZD`wZ-^lT4qc1Y+HB`&m*2ZjoEaC^7&*uGsqs(_HfODxMn)IFNV?FJb9c!x zRfMKe%&|Rga&az;u6*=z64arm(?2r{Q~Z#|xG!KUpFcVRvBE+|463E8c3kSaNi1g& zTZ>DEJI**D#UpZHd2>@o78mTkb@2^PWg?)Sje07+WcGxm$;~$UFL6=l_N`~fHHZSV zbt}BO=x3>5zFr;!l)kZ3T=W?_7T5dHk3)cGAlUsamoZeR4{jQGe_&svoWXnQZUNc) z=X9$HLJ!wd7d_jF5$fCPv0}@l{9hz_%@wa}Nn|~g+ zLVL{QaxXLxQR>NLth|OlcehSs^ zL|kK?s1(gco0bZTL}&A7-9|C!;d&qBn#PL=2amt%(DM2;3au8=KmN*waLm)SrPvy2 zA`5UmSXs5vi{Abwa^b1#Yb!X|e=@ET+EZGa;^p-zN9d+`kui9sH;!uT-7ZR6Kg` zHS%RRT8cr-vaU2vt|7J4jmuSqCP|db&_2OYo?$pI#LT{M#w3HuTxCZxN9RXz(E{97gXem>Zr}5eM_olG*q$xr%D>g6X!t9&sd1JwLL=I(E$Q{Oe zb5<{=WMk|vNPPNXp3F+a&8-t;s-m1?DHB&e1-V=!YCg@zU#5EVP0I?5?M>jwjrP8> zQ5|_bcYywt^);edpJ891@j=TCrw0o)_F5zmnx`%w=WnsyP4loleb%@?a;6C> zv_w8<)!;&W$SpE~jZ#7Lr;X;od1iXNyJzoqmbuw+5CS(-wq(p63C76O3^){7l1uL7{D+~Lvp*@G@XdN@!X0uEPC zd+1pgf_e&QB75uzJYl$8u*WJfNrb1CTdgg@U&=!1K(RY^IA&m}=qtY$7tL*e8zwmH5Mrq?!qW_bX*Qn<-?lwso$agpKw)VB5m;rEu=k!^_PqTXcp+f~4soxwx^ch?2 z-?4~4<}G)Ujf4K^o03Vr!+eMfCu$YY%gx!csRBC7ld8T*_;@#};;o7XJ7pi3q@

z+{c%5H}hpz!rp&pzv;u9T!ugTC4m}C(5>;u8LH1-Ur%}trnRTW3=brB}jI`8#J8R^bs=kV#cPg2z*@2*9$-y^T z!nSJmJ=G|d9OjN2%S17MduP@>H!JzLxg?)0yDD{Dr_};h7Sv>Q{=0>C|Gd{Eg%127 z@+GS>)e1zhc-gfU-(9j!@yUW1p~e+cBQB{(dq0j{2ca?SzCEEO?a=>gL&0o6#d&3QK+Aa!-d8Sh4Q?J^E0GxQ&!-z^SNeS` z*dk1?7QTb;l}s~K9$e;((azkBMw1Dj8s3S^LKQ%nA_|}rhgN%GuIi;+jwyLX0#ns* zar7HA6#Cf1*5&K5|43Jc(T5=&sR*Cq>1P*yQ*=AJ7>qE}ONs*X0v0-w+cCeB4@JQ7 zp2SQ4DEZl;7gthHK>P3^83|w#AU;mSTaQjuI4fUP?v%iuC%@|AZ_O$cD|~j_*X#6& z;b2q+M8~jcqC4nkFX;yu+jr5Ks?x)e6D{>Pao@`Rv)*Vw-TI#7)aIHP*s*_G23u){ zTe4F6Yo#XX*dl`@A*~MoL{!yvy2-U&V1?gor$>z*;aL?Z{W#xPxEz`X!yy_oOqa6^H@{fnuMOlY+b@ZDV1^X8;F0nOh&%F za|Wj3E@6c_QXK)DpV`Q}+H25Ui?y8?lz5ae;yCzM^~N-pkDb!u`x>lwxwwPmzpq~K zy+qQS4?wkpMkFwt0o=X`r1bw2D*-AT@*91ePR2sq+1=rK6#F)C>686A4M&LUpR1=G zwy3|eyn!Sh&WVr}WQh3(wzN%#2cbRPUGA02htV5X;#YyN#xT4f$!NL!Pk#nCg1r~0 z-caQeZ^VWdI(?XwqoR`wn@6mGTr3^NPw_c`twiewKC{jebf|~xAl&f1^7LUrn`2IW zdAd>$jm}A8o^yJPJu|swgxM=x!RIvZ!b{KvnECf~CVQ#sdf z{nr1kAH4*@iT|s&znZkyxQIvNv~il4eY>GNDG zUi3%-IZ+k@!bde2tyD5(t4t+R@mAeM5@T|w-y(k_q@(KX z+>lvI%{BXTqm8o03hSkh-~!4DRlWQK$7daZN<&LIz^|f@qf&r;6y)U+k^Cz2&-j9MT}4TG1d2G5iPD&>6lshc*g3*6 z`{`wZpym{s9bx<^LGp}iaa;rQiV6&AiFwqQROl?9cL-4Ei?dq)yKpMhv@RjD98>tx zByhkDR6%%}IFpVy7FL7ynyu9Qe55>a)& zv&7;OM{b?pOOOGr-x!FWGpv}~(-=4vILn%g>c|e9x>s;5yoV#-yfSF`xa}{ob5sr5 z7y$+LEJRhN;~d_GzH7+EsuG|6J_pYi{^Uh}xm>?WNWQDhm0A845noQr|AE89X08@R zo`)H6#sjdG7?I_mBNE8Av!C6|-#Ud-^+vL_G$@J+3XMgh5C8JO(#GRK&Y}DV+pije zm+Nj25lv|RH}IVz;+NqTqVP|=t@i7dl>c$|u&~1Iy)xHx)vd3fPO5*}V_&!>SDK1F zv+4g~on;DcK(7b=1NL3~IeL?zPu^f&HIa}Hy>bK6*~;81HF9hIlx1K+pnw2H-Dkq- zdwZYKU!O#2k8v{B)@;}o{8i|zyw4&Y)5^p}`XBP;C39(Muie9j?BOl1N!sVu_>O79 z`K_3<1+_@5&4JXx30;!(Jg;>QOcUAB$IJFRE*DEpbL_BoN8_HyJsA;rkSC%HESK+G z2Du1itLZ(@ar48`Sd~P)-r-)Xzj+%fusKsWOpzdXmFU|v;^<{&@v)I^AKxk18+j8} zKQsMvB}eAY7budo=gP_zdVXSH1=+vCg-DxlD*#ts{P92Z-!=S{x0a$>I_P_feK1D< z1y~Dx6nI=ebf3bgY?V4jSuD`jNGWUVBQE20a$>w8&HVFl{L(FV^{z5pVl?hAcWo|u zpQ?uQKzqK`?wGHU+s>>cXi9e1>* z;XW`nk(a|k=rSdH6YX=aoLtdqx$nLtZ~dkL5|F3AwEi4eE%PgU?1cadFMrri^mBI$ z*}f03aUk)4t=<%<$=*(kwHA(!vxFuGi&r%itF`PdmME=l{?)(~biJ6}Oyyvve0$n_ zy54q!7M>hY)MSNbT{QLsA$b4$>M@Q`#ksCRMXmA^b9Q0 za#=)rT08EmHAsZBjdC88R=Ak5LeC(Q7jE?nUm*mLtJ%*BpOmYp8pKzAj1U@~7e`hw zY{kLvC36M52Q!%f+nFp)SgK<7wV}LEz&_tww3~pZ2MhwW5E))KU zuCqCHv+e#uZsoPIZRS3WWB(oRvw69;FCCOsT{x4Sf+rVa1!{|wCkwEa-f z)Y0u?c|4P)$>70BC_l`&UmFjk%rAQWyQrV#*3(Dk&*o#LAx35ytRT7YKa*b14&n5W317v~*l(VRGhW|cQfBy!t!lxxaQmNqjEe$q z5Pj=gr1>%NmlgO|GvL@Ogr_^daD68G>*uR)y5`RdmU&PK{>;UmYENQ5pA7Z2frdU_ zwf&~^IlRGj<3OqVA*EgE7x5sO3gfEJv!xEg|4(~w9T#=l|NpWECb|fSpukEuBHfCF zw6wHzcY}b6NP~2DGjs_<3DO8i4KkDg;;#S)t#Br!MA>`hK`3fiPLD&woJ3DV3@t}pt1l@=9L0~_TT{X8QM7`-L>Oa`Bm z;~qWS-dzZc^RRoMCJ$HSQAIT=yl_M%=QT z2{#IpVwRe{G1!t~P@dnA?}#}kvCwJiiY&6Y(rqc;Ra1D~g9QW}@$^8T0|e$^)${45YHUsGujB6 zU~F5@Z?e2Q`QV+IinY%ZXR;`98)G1Lo- z?pDaPySN8kJrJIG{_Z+_DogUN@y)ubmV=y29Pp;;Gl3n^@gM(?@ExES&(waR^Pa}E z(!?@hzU>Chc%z1ls=XTyTVO})nQ{1$3RWtg*TCZ5#bF#EB49Ssy3OgSpmN6PAkLKa zCM)%y?VasZl zBS%XMXi)h}?42dVPQ+|lZ8$o@OtRI|^zCE4!~8m%_e!U97JEZ7DTtR_6{vHPiEx^V zM=0s{#8=sfS8)`5q%*ccE#B7C07qfMRvhUWE8624J^6^I2zamlF7y^0lK<}_&HigV zH7^MaRr7-usVVzKOHrT-um)q(CzrF=?7~9Gh>LxJqW^3byXcvcv+n0iGSQk~Nn$4U z;&qXwM*sP~@QZrMt?9QsQcNGKM0sr4}SaPwGyN84}1BDyIwl zjUKJ5wwg)|ebgaQzr%Rw2Q?V0J}O&G$o;J}Gb!7-#9K#o^VNk*l%u&=#0qXII}S>R zty-1A;vospv4Mqx+isuBv9B>Ql1dZtxok|X>MlrVs#MnjGQia`=YkJEycgnNPl#5X z(gt&3xUlhDUG*c^WmX}jYX0GvsBII6tg|>c1x8PEJ2r<8_Z#Ei@U%*CEC^(i;LTeCaO%!e)2GOri_Y z;qN#~Z20#@+s*lKfXqf{D*x8SdJuj%JK`E=k;An6WWu}p;&xXYAD_bJ`TWTiC*~q@ zL|PqVS5Z_oElz=t$4RUGw1X>_-xQ%XQJ)WI6$-E#a%k#M4@o_PhFBhOS35zKG$4 zSM!)`x$Z@v-F{}fI{i=^_Usde+5p>_F8N4xOs9C^(o>Daz&Dg*w@7ek(8{7(T!|PU zzO`n_Xwu$=700IWYqdAXg%k*B&%*=d2C&FpHEB89oGNheyR$WaSZ~2~!|lOSGrLRM zH3c#rOMqaqyr-eVkD`a$_2d^YBq@uTUw3;j5m)%M%5FQQE<|)|IJbHprwIu;*0W@+m#SDs8C%4_>P?5_<+NUie(#6Pi7iKowzKNtjMZu-6}YZ%5$z+dYrL6# zAzpd@!9fe3LbZobsLY-5rNCwVAU=w-Feft)w=pHhqp)COAD`u0II=t45U=usM~)JN zccC))r(nXfkxg17hX?I+rb9`nXv{u5j6c#HT&`TVN^#ZwOj)>{m2>r6=s{;;O{Sd2 z;j>#>(eG@F0KpMF1XNAm#d!cKA6aYApb={efTee>qh+5`dJgaF35+TWQA>rugh_`=)XEJ`c4=o5hNSEYcDk(Ow%hh>!7=QHFU1zhe{Skz?^tzEibb$G zzFSiOKu3%}sGP4?#aVLf9vte^Dfh%O3+E`XDx0rvg{7%S_5`1GHxoFhRDRtL?Mfku zFThDbx|FJ{s%y3vafU&~D1!M6C#Rl{&2trY5AKSWuqg58_c1U_guY4r7{WT2@h0?h z^QMm9mtMA5=NOg%6ChpObN?}@-F-I6&GGq2bZj!#EfDGPwBIsUGVE6+-kZ%Ycu5oH zO^GarR!(m)Um#{SnTaC*8qh#D@G#Q15J6BTEpI&

l{Z$jbzhl+{ZO%Wj9 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 boW?l!7SD5+com2}7#L#0(n1A-PhR|A@(rEv literal 0 HcmV?d00001 diff --git a/react/visual/__screenshots__/linux-chromium-arm64/landing.png b/react/visual/__screenshots__/linux-chromium-arm64/landing.png new file mode 100644 index 0000000000000000000000000000000000000000..c379a5fa9287882d98f1dd1d9b50ac27cefae4cb GIT binary patch literal 76379 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 QQ-?9``UoR91!f=lA2#bY2mk;8 literal 0 HcmV?d00001 diff --git a/react/visual/__screenshots__/linux-chromium-arm64/products-transactiontoast--success.png b/react/visual/__screenshots__/linux-chromium-arm64/products-transactiontoast--success.png index 7140f653a0f8c250be91c921dee4f8aae9a03d3a..56a79eb670b55fbe7426f08ae334bb97e726418c 100644 GIT binary patch delta 7011 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 diff --git a/react/visual/__screenshots__/linux-chromium-arm64/vaults.png b/react/visual/__screenshots__/linux-chromium-arm64/vaults.png new file mode 100644 index 0000000000000000000000000000000000000000..32d8f759cd7ea2cdb3cba62209e34b6972657def GIT binary patch literal 41248 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